Pay center Api

Version: 1.0.0

Contact information:
renlikang@dalongyun.com

免登陆对接


  • 免登陆对接

若产品对接内含有“免登陆”需求时,需要按照如下操作进行对接:
1.业务前端会在访问合作产品的URL后方拼接三项参数(openid、channel_name、merchant),范例:http://yourdomian.com?openid=ajjdsaiewq&channel_name=joyark_android&merchant=joyark
其中“ajjdsaiewq”为openid;“joyark_android”channel_name;“joyark”为merchant
2.“openid”需要作为用户唯一标识,绑定用户游戏身份。
3.“channel_name、merchant”为内部鉴权参数,需要在创建“充值订单”时,与“openid”一并提交

签名规则


  • 签名算法

RSA
Key格式:PKCS8
签名算法:SHA256WithRSA
密钥长度:2048
生成公私钥后使用base64编码后输出

  • 公私钥生成

首选安装openssl,参考文档:https://www.openssl.org/source/
商户可以通过如下命令生成公私钥:

  1.#生成后的公私钥文件为pem格式,然后将换行符替换成空
  2.#私钥
  3.openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -out private.key.pem
  4.#公钥
  5.openssl rsa -in private.key.pem -pubout > public.key.pem

执行完上述命令后,会生成两个文件private.key.pem和 public.key.pem,其中private.key.pem为私钥,在请求交易时签名报文,由商户自行保管;public.key.pem 为公钥,需通过Merchant Dashboard平台上传上传给 PayerMax。 public.key.pem的内容如下(示例):
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAybRQ39Dmt+Re1pVmNHzC dVdMpSYauLB5Ydb1yiDZBObneSrBwcDDHm3Jbn6/Gpzoo3lgX+kiR0PtYszpybjI Zo3Xu7rhOE7//VfYvHWHLuxeglaUnsPGc37fVB8FM+HB3AfI+Jpw/HMAFZGHFZZ8 xcGbgW5n4S0d6ExBu/RDjX0ssZeDRWG/NGmuVukmu79RlX2+gmaIth5R+TI+fVL1 tqlQ5bYenTt1iCYUQXjfuNaeRQvxxjgXCtwKkhsg+gRKJRTypDsUxOxq0qRmn7fZ X8Lw9LJsbiIRG6u4EupSiPeU2rqAELIhLFvR57KTapQ+emS6FTdd651KZK97qYy7 fQIDAQAB

  • 签名

将请求报文ASCII排序组成对象后转换成json string后使用商户RSA私钥进行签名,将签名获得的值放入http header中,key为sign

支付渠道


支付渠道国家/地区支付钱包
Airwallex全球Visa
Mastercard
Payermax中国香港ALIPAYHK
中国台湾台灣信用卡、國際信用卡
印度尼西亚BCA、BNI、BRI、BTPN、CIMB、Danamon、MUAMALAT、Mandiri、Maybank、Permata、Sinarmas、Credit/Debit Card(redirect)、Alfamart、BRI、Danamon、Maybank、Permata、One-Touch(DANA)、QRIS、Akulaku、DANA、Doku Wallet、OVO、ShopeePAY
俄罗斯QIWI
韩国Bank Transfer、Virtual Account、Credit Card、KAKAOPAY、PAYCO、toss
马来西亚Axiata Boost、Grab Pay、Touch’n Go
菲律宾Bank Transfer、BPI、UnionBank、BillEase、DragonPay Credits、Paymaya、GCash、Grab Pay
新加坡eNETS、GrabPay、PayNow
泰国TrueMoney One-Touch、Line Pay、PromptPay、TrueMoney
阿联酋Visa/MasterCard
巴林Visa/MasterCard
埃及Visa/MasterCard
约旦Visa/MasterCard
科威特KNET、Visa/MasterCard
阿曼Visa/MasterCard
卡塔尔Visa/MasterCard
沙特阿拉伯MADA、Visa/MasterCard
土耳其Akbank、Alternatifbank、DenizBank、Finansbank、Garabti Bankasi、Halkbank、Kuveyt Türk、PTT、Türk Ekonomi Bankası、Türkiye Finans Katilim Bankasi、VakıfBank、Yapı Kredi、Ziraat Bank、İşbank、Şekerbank、Debit/Credit Card、Ininal、GPay Wallet、Papara、
巴西Banco do Brasil、Bradesco、Caixa、Itau、Santander、Boleto、Boletofast、Lottery、PIX、Ame、MercadoPago、PagSeguro、PicPay
智利WebPay、Credit Card、Servipag
哥伦比亚Debit/Credit Card、PSE、Baloto、Davivienda、Efecty
墨西哥BBVA、Banorte、SPEI、STP、Santander、Debit/Credit Card、OXXO
秘鲁BBVA、BCP、Interbank、Debit/Credit Card、PagoEfectivo
  • 签名算法

测试卡


支付渠道测试卡号类型说明
Airwallex4035 5010 0000 0008Visa这张卡无论金额多少都会支付成功
4012 0003 0000 1003 Visa付款金额为:80.59时,拒绝
2223 0000 1018 1375Mastercard付款金额为:80.05时,拒绝
Payermax4444333322221111Visa姓名:James Smith 有效期-年:25 有效期-月:03 CVV:123
5555555555554444Master姓名:Allen Black 有效期-年:26 有效期-月:11 CVV:357

创建订单


  • 请求url
环境请求URL
测试环境https://developapidev.joyark.com/en/pay-center/recharge-order/create
生产环境https://api-game.joyark.com/en/pay-center/recharge-order/create
  • 请求方式

Post


  • header参数
请求参数必选参数类型说明
signsring签名
Content-Typesringapplication/json

  • 请求参数
请求参数必选参数类型长度说明
timestampsring32请求时间,符合rfc3339规范,格式:yyyy-MM-dd’T’HH:mm:ss.SSSXXX 事例:2022-01-22T10:00:00.500+08:00
payTypesring30支付方式: Payermax Airwallex
mchIdint64平台商户号
goodsring100商品名称
paymentMethodsarrayarray具体支付方式:例如'card'
currencysring3币种代码,大写字母 备注:Payermax会根据国家代码自动将所传货币转为本币进行结算
moneysring(10,2)支付金额
returnUrlsring256跳转地址
countrysring3国家代码,大写字母
userId有条件int64用户ID payType= Payermax 必填
languagesring8收银台页面语言
productId有条件string64payType= Payermax Paypal 必填
+ metadata有条件object附加参数
openid有条件string128用户标识 openid |channel_name |merchant三个参数要不全传要不全不传,传其中一个无效 ;对接免登陆必传
channel_name有条件string128设备标识
merchant有条件string128渠道标识
+products有条件ArrayArraypayType= Airwallex 必填
codesring64商品ID
descsring100商品描述
namesring100商品标题
quantityint16商品数量
unit_price(10,2)手机号码商品单价
typeint4商品类型
  • 请求示例
{
"currency": "SGD", 
"good": "test", 
"mchId": 10002, 
"money": "10.00", 
"payType": "payermax", 
"returnUrl": "https://webdev.bifrost.com/v1/pay/payerMaxNotify", 
"timestamp": "2022-10-12T07:40:23.371Z", 
"userId": "123456"
}
1
2
3
4
5
6
7
8
9
10
  • 返回参数

返回参数

返回参数参数类型说明
timestampsring请求时间,符合rfc3339规范,格式:yyyy-MM-dd’T’HH:mm:ss.SSSXXX 事例:2022-01-22T10:00:00.500+08:00
codeint状态码
msgsring错误信息
+dataarray返回数据
orderNosring平台订单号
urlsring收银台页面
thirdOrderSignsringpayType=PayerMax时返回

错误返回参数

返回参数参数类型说明
codeint状态码
msgsring错误信息
timestampsring请求时间,符合rfc3339规范,格式:yyyy-MM-dd’T’HH:mm:ss.SSSXXX 事例:2022-01-22T10:00:00.500+08:00
// 示例
{
    "code": 200,
    "data": {
        "url": "https://cashier-n-uat.payermax.com/index.html#/cashier/home?merchantId=010113835116808&merchantAppId=95aff0f7ffe445e5a5fad276d88c79a1&tradeToken=TOKEN202210270000381115&language=en&token=4334dca7036b4c88909bfd937910da6d&frontCallbackUrl=https%3A%2F%2Fdevelopapidev.joyark.com%2Fen%2Fpay-center%2Forder%2Freturn%3FreturnUrl%3Dhttps%3A%2F%2Fwebdev.bifrost.com%2Fv1%2Fpay%2FpayerMaxNotify%26payStatus%3D1&version=1.0",
        "orderNo": "443.PA.20221027-20151109-10982861-08710506-2290",
        "thirdOrderSign": "003202210270851172290"
    },
    "msg":"SUCCESS",
    "timestamp": "2022-10-27T08:51:19.000+00:00"
}
1
2
3
4
5
6
7
8
9
10
11

查询订单


  • 请求url
环境请求URL
测试环境https://developapidev.joyark.com/en/pay-center/recharge-order/info
生产环境https://api-game.joyark.com/en/pay-center/recharge-order/info
  • 请求方式

Post


  • header参数
请求参数必选参数类型说明
signsring签名
Content-Typesringapplication/json

  • 请求参数
请求参数必选参数类型长度说明
timestampsring32请求时间,符合rfc3339规范,格式:yyyy-MM-dd’T’HH:mm:ss.SSSXXX 事例:2022-01-22T10:00:00.500+08:00
orderNosring30平台订单号
mchIdint64平台商户号
  • 请求示例
{
"mchId": 10002, 
"orderNo": "443.PA.20221027-20151109-10982861-08710506-2290", 
"timestamp": "2022-10-12T07:40:23.371Z", 
}
1
2
3
4
5
  • 返回参数

正确返回参数

返回参数参数类型说明
timestampsring请求时间,符合rfc3339规范,格式:yyyy-MM-dd’T’HH:mm:ss.SSSXXX 事例:2022-01-22T10:00:00.500+08:00
codeint状态码
msgsring错误信息
+dataarray返回数据
orderNosring平台订单号
amountstring支付金额
payTimesring支付时间
statussringCREATE-创建,PAYING-支付中,IN_PROGRESS-支付成功,FAILED-支付失败,REVERSED-取消订单

错误返回参数

返回参数参数类型说明
codeint状态码
msgsring错误信息
timestampsring请求时间,符合rfc3339规范,格式:yyyy-MM-dd’T’HH:mm:ss.SSSXXX 事例:2022-01-22T10:00:00.500+08:00
// 正确
{
    "code": 200,
    "data": {
        "amount": "10.00",
        "orderNo": "443.PA.20221027-20151109-10982861-08710506-2290",
        "payTime": null,
        "status": "REVERSED",
    },
    "msg":"SUCCESS",
    "timestamp": "2022-10-27T08:51:19.000+00:00"
}
1
2
3
4
5
6
7
8
9
10
11
12

异步通知


1.同样的通知可能会多次发送给商户系统。商户系统须能够正确的处理重复通知。
2.后台通知交互时,如果平台收到商户的应答不符合规范或超时,会判定本次通知失败,重新发送通知,直到成功为止(在通知一直不成功的情况下,会发一直通知).
3.在订单状态不明或者没有收到平台支付结果通知的情况下,建议商户主动调用【查询订单】接口确认订单状态。

  • 通知方式

Post


  • header参数
请求参数必选参数类型说明
signsring签名
Content-Typesringapplication/json

  • 接口参数
请求参数必选参数类型长度说明
timestampsring32请求时间,符合rfc3339规范,格式:yyyy-MM-dd’T’HH:mm:ss.SSSXXX 事例:2022-01-22T10:00:00.500+08:00
orderNosring30平台订单号
typeint4订单类型 1 payment订单 2 subscription订单
statusstring64CREATE-创建,PAYING-支付中,IN_PROGRESS-支付成功,FAILED-支付失败,REVERSED-取消订单 REFUSE-拒付(只通知1次)
amountstring(10,2)商户传入的订单金额
currencyCodestring3订单币种
payTimestring32支付时间
+ metadataobject附加参数
openidstring128用户标识
channel_namestring128设备标识
merchantstring128渠道标识
merchantNamestring50商户名
  • 返回

成功时,http返回状态码为200

上次更新: 1/3/2023, 3:03:25 AM