支付
统一下单
商户业务系统通过统一下单接口发起支付收款订单,easylink支付网关会根据商户配置的支付通道路由支付通道完成支付下单。支付网关根据不同的支付方式返回对应的支付参数,业务系统使用支付参数发起收款。
接口说明
请求URL:/api/pay/unifiedOrder
请求方式:POST
请求类型:application/json 或 application/x-www-form-urlencoded
请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 商户号 | mchNo | 是 | String(30) | M1621873433953 | 商户号 |
| 应用ID | appId | 是 | String(24) | 60cc09bce4b0f1c0b83761c9 | 应用ID |
| 商户订单号 | mchOrderNo | 是 | String(30) | 20160427210604000490 | 商户生成的订单号 |
| 支付方式 | wayCode | 是 | String(30) | WX_LITE | 支付方式,如微信小程序WX_LITE |
| 支付金额 | amount | 是 | int | 100 | 支付金额,单位分 |
| 货币代码 | currency | 是 | String(3) | HKD | 三位货币代码,港币:HKD |
| 客户端IP | clientIp | 否 | String(32) | 210.73.10.148 | 客户端IPV4地址 |
| 商品标题 | subject | 是 | String(64) | 商品标题测试 | 商品标题 |
| 商品描述 | body | 是 | String(256) | 商品描述测试 | 商品描述 |
| 异步通知地址 | notifyUrl | 否 | String(256) | https://www.gnete.com.hk/notify.htm | 支付结果异步回调URL,只有传了该值才会发起回调 |
| 跳转通知地址 | returnUrl | 否 | String(256) | https://www.gnete.com.hk/return.htm | 支付结果同步跳转通知URL |
| 失效时间 | expiredTime | 否 | int | 3600 | 订单失效时间,单位秒,默认2小时.订单在(创建时间+失效时间)后失效 |
| 渠道参数 | channelExtra | 否 | String(256) | {"auth_code", "13920933111042"} | 特定渠道发起的额外参数,json格式字符串.详见渠道参数说明 |
| 预授权标识 | preauthFlag | 否 | String(5) | false | 取值true或false,默认false |
| 扩展参数 | extParam | 否 | String(512) | 134586944573118714 | 商户扩展参数,回调时会原样返回 |
| 请求时间 | reqTime | 是 | long | 1622016572190 | 请求接口时间,13位时间戳 |
| 接口版本 | version | 是 | String(3) | 1.0 | 接口版本号,固定:1.0 |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名值,详见签名算法 |
| 签名类型 | signType | 是 | String(32) | MD5 | 签名类型,目前只支持MD5方式 |
请求示例数据
{
"amount": 8,
"extParam": "",
"mchOrderNo": "mho1624005107281",
"subject": "商品标题",
"wayCode": "WX_H5",
"sign": "84F606FA25A6EC4783BECC08D4FDC681",
"reqTime": "1624005107",
"body": "商品描述",
"version": "1.0",
"channelExtra": "{\"authCode\":\"280812820366966512\"}",
"appId": "60cc09bce4b0f1c0b83761c9",
"clientIp": "192.166.1.132",
"notifyUrl": "https://www.gnete.com.hk/notify.html",
"signType": "MD5",
"currency": "HKD",
"returnUrl": "",
"mchNo": "M1623984572"
}返回参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 返回状态 | code | 是 | int | 0 | 0-处理成功,其他-处理有误,详见错误码 |
| 返回信息 | msg | 否 | String(128) | 签名失败 | 具体错误原因,例如:签名失败、参数格式校验错误 |
| 签名信息 | sign | 否 | String(32) | CCD9083A6DAD9A2DA9F668C3D4517A84 | 对data内数据签名,如data为空则不返回 |
| 返回数据 | data | 否 | String(512) | {} | 返回下单数据,json格式数据 |
data数据格式
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 支付订单号 | payOrderId | 是 | String(30) | U12021022311124442600 | 返回支付系统订单号 |
| 商户订单号 | mchOrderNo | 是 | String(30) | 20160427210604000490 | 返回商户传入的订单号 |
| 订单状态 | orderState | 是 | int | 2 | 支付订单状态 0-订单生成 1-支付中 2-支付成功 3-支付失败 4-已撤销 5-已退款 6-订单关闭 |
| 支付数据类型 | payDataType | 是 | String | payUrl | 支付参数类型 payUrl-跳转链接的方式 form-表单方式 wxapp-微信支付参数(微信公众号,小程序,app支付时) aliapp-支付宝app支付参数 ysfapp-云闪付app支付参数 codeUrl-二维码地址 codeImgUrl-二维码图片地址 none-空支付参数 |
| 支付数据 | payData | 否 | String | http://www.gnete.com.hk/pay.html | 发起支付用到的支付参数,如果微信公众号支付等 |
| 渠道错误码 | errCode | 否 | String | ACQ.PAYMENT_AUTH_CODE_INVALID | 上游渠道返回的错误码 |
| 渠道错误描述 | errMsg | 否 | String | Business Failed 失败 | 上游渠道返回的错误描述 |
返回示例数据
{
"code": 0,
"data": {
"errCode": "ACQ.PAYMENT_AUTH_CODE_INVALID",
"errMsg": "Business Failed【支付失败,获取顾客账户信息失败,请顾客刷新付款码后重新收款,如再次收款失败,请联系管理员处理。[SOUNDWAVE_PARSER_FAIL]】",
"mchOrderNo": "mho1624005752661",
"orderState": 3,
"payOrderId": "P202106181642329900002"
},
"msg": "SUCCESS",
"sign": "F4DA202C516D1F33A12F1E547C5004FD"
}支付方式
| WayCode | 支付方式 |
|---|---|
| ALI_JSAPI | 支付宝生活号 |
| ALI_APP | 支付宝APP |
| ALI_H5 | 支付宝H5 |
| ALI_QR | 支付宝扫码(主扫) |
| WX_JSAPI | 微信公众号 |
| WX_LITE | 微信小程序 |
| WX_APP | 微信APP |
| WX_H5 | 微信H5 |
| WX_QR | 微信扫码(主扫) |
| UP_OP | 银联在线支付 |
| UP_EXPRESS | 银联快捷支付 |
| UP_APP | 银联APP |
| YSF_QR | 云闪付扫码(主扫) |
| NUVEI_H5 | NUVEI H5 |
| NUVEI_CARD | VISA/MC 银行卡 |
| GOOGLE_PAY | Google 支付 |
| APPLE_PAY | Apple 支付 |
channelExtra参数说明
当 wayCode=WX_JSAPI 或 wayCode=WX_LITE 时,channelExtra必须传subAppid、openid,channelExtra示例数据如:
{"subAppid": "o6BcIwvSiRpfS8e_UyfQNrYuk2LI", "openid": "o6BcIwvSiRpfS8e_UyfQNrYuk2LI"}当 wayCode=WX_H5 或 wayCode=WX_APP 时,channelExtra可以传subAppid,channelExtra示例数据如:
{"subAppid": "o6BcIwvSiRpfS8e_UyfQNrYuk2LI"}当 wayCode=ALI_H5 时,channelExtra可以传walletType设置钱包类型。此时walletType可以为:CN-中国大陆钱包,HK-香港钱包,不传walletType默认返回HK类型, channelExtra示例数据如:
{"walletType": "CN"}当 wayCode=ALI_QR 或 wayCode=WX_QR 或 wayCode=YSF_QR 时,channelExtra可以传payDataType设置返回支付数据支付类型。此时payDataType可以为:codeUrl-二维码地址,codeImgUrl-二维码图片地址,不传payDataType默认返回codeUrl类型, channelExtra示例数据如:
{"payDataType": "codeImgUrl"}当 wayCode=UP_OP 或 wayCode=UP_APP 时,channelExtra可以传accNo锁定银行卡号交易。channelExtra示例数据如:
{"accNo": "6250******0016"}当 wayCode=UP_EXPRESS 时,channelExtra可以传customerInfo输入银行卡验证信息。channelExtra示例数据如:
{"customerInfo": "aN89IpTVcF7EoN9aBbDwjc1BN0nFrcz22trbqalSn4YJzCW3muyO70gIRX9KUblQP57bIJ+/Cg+VacE0r2l82ghRQfAGQTaO3K+Dzj3t97k7p4cl8QtdvbzQBAqIS3O905PMmDsezZmm1Ag5HEjCjfzZke1TZmieof2uRzIO0DD4yWOZu0Qx3VePGt+yrPihwlaK/raXYjKuXSA38sWrKg98B3e7Ie/cilDgYwxvXlRAjABO+ecJq844Kc7v7Dnus7FC0cwu+OLnGT4BJTsXa5ywl4IbUvrvsKBvvxAfMDwkDwgio1+hPORVyDSUpOd/9XSXC9spu+GhkBbWQgXlfA=="}当 wayCode=NUVEI_CARD 时,channelExtra需要传card输入银行卡信息、billingAddress账单地址信息、browserDetails浏览器信息。channelExtra示例数据如:
{
"card": {
"cardNumber": "2******7736",
"cardHolderName": "NAME",
"expirationMonth": "12",
"expirationYear": "25",
"cvv": "123"
},
"billingAddress": {
"country": "US",
"email": "*@email.com",
"phone": "12345",
"firstName": "A",
"lastName": "B"
},
"browserDetails": {
"acceptHeader": "text/html,application/xhtml+xml",
"userAgent": "Mozilla",
"clientIp": "192.168.1.11",
"javaEnabled": "TRUE",
"javaScriptEnabled": "TRUE",
"language": "EN",
"colorDepth": 48,
"screenHeight": 400,
"screenWidth": 600,
"timeZone": "0"
}
}当wayCode=AWX_NATIVE时,channelExtra需要传card输入银行卡信息、billingAddress账单地址信息、browserDetails浏览器信息、customer客户信息。 channelExtra示例数据如:
{
"card": {
"cardNumber": "2******7736",
"cardHolderName": "NAME",
"expirationMonth": "12",
"expirationYear": "25",
"cvv": "123"
},
"billingAddress": {
"country": "US",
"email": "*@email.com",
"phone": "12345",
"firstName": "A",
"lastName": "B"
},
"browserDetails": {
"deviceId": "96d1cff1-35e1-d891-325e-c3f7e806f32d"
},
"customer": {
"customerId": "3ad75e99-7d18-249f-b842-79685d8ca305"
}
}Payment data for enhanced fraud protection
browserDetails.deviceId Fortify security with device fingerprinting
Step 1: Add the script to your shopping site
Place the following script just before the closing </body> tag on all public-facing pages of your shopping site. The script loads asynchronously and does not affect page load time. We recommend that you load the script on all public user-facing pages. If you are unable to load the script on pages such as payment, login, etc, make sure to have loaded the script at least once before the checkout process is complete.
<script
type="text/javascript"
async
id="airwallex-fraud-api"
data-order-session-id="ORDER-SESSION-ID"
src="https://static.airwallex.com/webapp/fraud/device-fingerprint/index.js">
</script>For testing, change the URL to https://static-demo.airwallex.com/webapp/fraud/device-fingerprint/index.js
Step 2: Add a unique session ID
Replace ORDER-SESSION-ID with a unique order session ID for the current shopper's checkout attempt.We recommend that you use a UUID generator to generate a random UUID string (64 ~ 128 bits).
Step 3: Send the session ID
When your shopper is ready to make a payment, using the value of ORDER-SESSION-ID in the browserDetails.deviceId in the request body.
customer.customerId Unique identifier of the customer in merchant's system. Maximum length is 64.
当 wayCode=GOOGLE_PAY 或 wayCode=APPLE_PAY 时,channelExtra需要传paymentToken或者decryptPaymentToken、billingAddress账单地址信息、browserDetails浏览器信息。channelExtra示例数据如:
{
"paymentToken": {
"paymentMethod": {
"displayName": "MasterCard 1111",
"network": "MasterCard",
"type": 2
},
"transactionIdentifier": "4012338FD9B5512363DEF7B2123A5E106F2123A1094BECA4112390D7A9C12323",
"paymentData": {
"header": {
"publicKeyHash": "Lbeg3123Fp5\\/+Yd+Tt123i929J1hLQfkk123av123VM=",
"ephemeralPublicKey": "MFkwEw123oZIzj0CAQYIK123zj0DAQ123AEHz123h827rOlShO123V9eUgJ\\/+etmbj+JPos7Z123OdSKd4123u9RiO3123dyH7+gVDxoiJlEtL123jZ312A==",
"transactionId": "4020123fd9b5513263def7b2319a5e1232e611324beca4111237a9c741323"
},
"version": "EC_v1",
"data": "71Z1Ji132P2DriT2J123k06Dt123IoLtf3321Jdw123o0skxS17Hq132hgx4sAd123bj4MG2vu123fmF+PFr123yuZjorwa123n2tLv312SbuLz132ZI+xw+ZlO123Phldalpn123I1Xxo6CQp331213rlaK123GX164\\/8bg+iZFgYmx123kp5nNvtpD6qjil4tUaa123Dt56xAXAn7M486JI4c45\\/kajFptwR+opMIZFvWbSzlgYFQ1eCCdZpLxXr1SOTQqfmFZK6jQBobX53NyymcfwG++XkFeNlR8odO8RnQm4ibNhlowuB9HSIb123dVarkl+zNPO13rAhvfsA1Nav6yq2su39aUmv2PDiMVfrM5pV0UtNteQ6nMvRmeVnRfl5LLnk=",
"signature": "MIAGCSqGSIb3DQEHAqCAMIACAQEx123glghkgBZQMEAg123YJKoZIhvcNAQc123ggDCCA+MwggOIoAMCAQICCEwwQUlRnVQ2MAoGCCqGSM49BAMCMHoxLjAsBgN123JUFwcGx567GxpY2F0aW9uIEludGVncmF123uIENB756daFw0yNDA1MTYwMTMyNTdaMF8xJTAjBgNVBAMMHGVjYy1zbXAtYnJva2VyLX123fVUM0LVBST0QxFDASBgNVBAsMC2lPUyBTeXN0ZW1123DVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMIVd+3r1seyIY9o3XCQoSGNx7C123YRgldlK9KVBG4NCDtgR80B+g5679+syINa61dTv9JKJiT58DxOjggIRMIICDTAMB567MBAf8EA435B8GA1UdIwQYMBaAFCPyScRPk+TvJ+bE9ihsP6K7\\/S5LMEUGCCsGAQ756BDkwNzA1BggrBgEFBQcwAYYpaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3A345hcHBsZWFpY2EzMDIwggEdBgNVHSAEggEUMIIBEDCCA345CSqGS5762QFATCB\\/jCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZm345RlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdG345ydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA2BggrBgEFBQcCARYqaHR0cDovL3d3dy5hcHBsZS5jb20vY2VydGlm345GVhdXRob3JpdH345QGA1UdHwQtMCswK567GI2h0dHA6Ly9jcmwuYXBwbGUuY29tL2FwcGxlYWljYTMuY3JsMB0GA1UdDgQWBBSUV9t345homJdi9+V4UH55tYJDAOBgNVHQ8BAf8EBAMCB4AwDwYJKoZ567dBAIFADAKBggqhkjOPQQ567ADBGAiEAvglXH+ceH345WvrLTHL+tEXzAYUiLHJRACth69b1UCIQDRizUKXdbdbrF0Y567rLOh8+j5q9svYOAiQ3ILN2qYzCCAu4wggJ1oAMCAQICCEltL786mNqXMAo345SM49BAMCMGcxGzAZBgNVBAMMEkF345FJvb3QgQ0EgLSBHMzEmMC576ECwwdQXBwbGUgQ2VydGlma567vbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTE0M345zNDYzMFoXDTI5MDUwNjIzNDYzMFowejEu567EAwwlQXBwbGUgQXBwbGljYXRpb24gSW5345b24gQ0EgLSBHMzEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3567Ez567AoMCkFwcGxlIEluYy4xCzAJBgNVB567TMFk345AQYIKoZIzj0DAQcDQgAE8BcRhBnXZIXVGl4lgQd26ICi7957rk3gjfxLk+EzVtVmWzWuItCXdg0iTnu6CP12F86Iy3a7ZnC+yOgphP9URaOB9zCB9DBGBggrBgEFBQcB3456MDgwNgYIKwYBBQUHMAGGKmh0dHA6Ly9vY3N567wcGxlLmNvbS9567QtYXBwbGVyb290Y2FnMzAdBgNVHQ4EFgQUI\\/JJxE+T5O8n345KGw\\/orv9LkswDwYDVR0TAQH\\/BAUwAwEB\\/zAfBgNVHSMEGDA567sN6hWD567md6+veuv2sskqzA3BgNVHR8EMDAuMCygKqAohiZodH3458vY3JsLmFwcGxlLmNvbS9hcHBsZXJvb3RjYWczLmNybDAOBgNVHQ675EBAMCAQYwEA576ZIhvdjZAYCDgQCBQAwCgYIKoZIzj0EAwIDZwAw345Os9yg1EWmbGG+zXDVspiv\\/QX7dkPdU2ijr7xnIFeQreJ+Jj3m1m567VBDY+d6cL+AjAyL567CjBXdsXfM4O5Bn\\/Rd8LCFtlk\\/GcmmCEm93455nLmwmJIWEGmQ8Jkh0AADGCAYcwggGDAgEBMIGGMHoxLjAsBgNVBAMMJUFwcGxlIEFwcGx567aW9uIEludGVncmF0aW9uIENBIC0gRzM345AkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRMwEQYDVQQKDApBcHBsZS567uMQswCQYDVQQGEwJVUwIITDBBSVGdVDYwCwYJ345WUDBAIBoIGTMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIzMDM576DAwN1owKAYJKoZIhvcNAQk0MRswGTALB345gBZQMEAgGhCgYIKoZI345AwIwLwYJKoZIhvcNAQkEMSIEIFWqRuTCui2hu5V8XjRwkFWDdn5Y1lyT265LyLt4luXxMAoGCCqGS345MCBEYwRAIgQpTF1oj7TFxllHB1+I32\\/QxTvvkpUo4FKZb4JP3453DgndH3DvZIL88eeYWP7qPEKfez2xh345DPPAcMJ2AAAAAAAA"
}
},
"decryptPaymentData": {
"cardholderName": "John Doe",
"applicationPrimaryAccountNumber": "4818428860354006",
"applicationExpirationDate": "300131",
"currencyCode": "156",
"transactionAmount": "1000",
"deviceManufacturerIdentifier": "040010030278",
"paymentDataType": "3DSecure",
"paymentData": {
"emvData": "",
"encryptedPINData": ""
},
"authenticationResponses": [],
"merchantTokenIdentifier": "",
"merchantTokenMetadata": ""
},
"billingAddress": {
"country": "US",
"email": "*@email.com",
"phone": "12345",
"firstName": "A",
"lastName": "B"
},
"browserDetails": {
"acceptHeader": "text/html,application/xhtml+xml",
"userAgent": "Mozilla",
"clientIp": "192.168.1.11",
"javaEnabled": "TRUE",
"javaScriptEnabled": "TRUE",
"language": "EN",
"colorDepth": 48,
"screenHeight": 400,
"screenWidth": 600,
"timeZone": "0"
}
}card数据格式
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 银行卡号 | cardNumber | 是 | String(20) | 2******7736 | 付款完整银行卡号 |
| 持卡人姓名 | cardHolderName | 是 | String(70) | ZHANSAN | |
| 卡过期年份 | expirationYear | 是 | String(2) | 25 | 2025年过期,则填入25 |
| 卡过期月份 | expirationMonth | 是 | String(2) | 12 | 12月过期,则填入12 |
| 卡安全码 | cvv | 是 | String(3) | 123 |
billingAddress数据格式
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 国家码 | country | 是 | String(2) | HK | 2-letter ISO country code |
| 账单邮箱 | 是 | String(100) | xxx@gmail.com | ||
| 账单手机号 | phone | 是 | String(18) | 85212345678 | |
| 名字 | firstName | 是 | String(30) | SAN | |
| 姓氏 | lastName | 是 | String(40) | ZHAN |
browserDetails数据格式
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| accept信息 | acceptHeader | 是 | String(2048) | text/html,application/xhtml+xml | 用户浏览器上送http header中的accept信息 |
| userAgent | userAgent信息 | 是 | String(18) | Mozilla | 用户浏览器上送http header中的user-agent信息 |
| 用户浏览器端IP | clientIp | 是 | String() | 192.168.1.1 | |
| 是否支持Java | javaEnabled | 是 | String() | TRUE | 前端通过navigator.javaEnabled获取,固定值:true或false |
| 是否支持JavaScript | javaScriptEnabled | 是 | String(3) | TRUE | 前端通过navigator. javaScriptEnabled 获取,固定值:true或false |
| 浏览器语言类型 | language | 是 | String(8) | EN | 前端通过navigator. language 获取 |
| 浏览器调色板的位深度 | colorDepth | 是 | String(2) | 前端通过navigator. colorDepth获取 | |
| 浏览器屏幕高度 | screenHeight | 是 | String(6) | 前端通过screen.height获取 | |
| 浏览器屏幕宽度 | screenWidth | 是 | String(6) | 前端通过screen.width获取 | |
| 浏览器的时区信息 | timeZone | 是 | String(5) | 前端通过 new Date().getTimezoneOffset()获取 |
paymentToken数据格式
Apple Pay:
参考 https://developer.apple.com/documentation/passkit/payment-token-format-reference
商户提供paymentToken与Apple Pay支付证书,支付网关会根据Apple Pay支付证书验证paymentToken的合法性与解密支付数据。
decryptPaymentData数据格式
Apple Pay:
参考 https://developer.apple.com/documentation/passkit/payment-token-format-reference#Payment-data-keys
商户提供解密支付数据。
查询订单
商户通过该接口查询订单,支付网关会返回订单最新的数据
接口说明
请求URL:/api/pay/query
请求方式:POST
请求类型:application/json 或 application/x-www-form-urlencoded
请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 商户号 | mchNo | 是 | String(30) | M1621873433953 | 商户号 |
| 应用ID | appId | 是 | String(24) | 60cc09bce4b0f1c0b83761c9 | 应用ID |
| 支付订单号 | payOrderId | 是 | String(30) | P20160427210604000490 | 支付中心生成的订单号,与mchOrderNo二者传一即可 |
| 商户订单号 | mchOrderNo | 是 | String(30) | 20160427210604000490 | 商户生成的订单号,与payOrderId二者传一即可 |
| 请求时间 | reqTime | 是 | long | 1622016572190 | 请求接口时间,13位时间戳 |
| 接口版本 | version | 是 | String(3) | 1.0 | 接口版本号,固定:1.0 |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名值,详见签名算法 |
| 签名类型 | signType | 是 | String(32) | MD5 | 签名类型,目前只支持MD5方式 |
请求示例数据
{
"payOrderId": "P202106181104177050002",
"appId": "60cc09bce4b0f1c0b83761c9",
"sign": "46940C58B2F3AE426B77A297ABF4D31E",
"signType": "MD5",
"reqTime": "1624006009",
"mchNo": "M1623984572",
"version": "1.0"
}| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 返回状态 | code | 是 | int | 0 | 0-处理成功,其他-处理有误,详见错误码 |
| 返回信息 | msg | 否 | String(128) | 签名失败 | 具体错误原因,例如:签名失败、参数格式校验错误 |
| 签名信息 | sign | 否 | String(32) | CCD9083A6DAD9A2DA9F668C3D4517A84 | 对data内数据签名,如data为空则不返回 |
| 返回数据 | data | 否 | String(512) | {} | 返回下单数据,json格式数据 |
data数据格式
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 支付订单号 | payOrderId | 是 | String(30) | P12021022311124442600 | 返回支付系统订单号 |
| 商户号 | mchNo | 是 | String(30) | M1621873433953 | 商户号 |
| 应用ID | appId | 是 | String(24) | 60cc09bce4b0f1c0b83761c9 | 应用ID |
| 商户订单号 | mchOrderNo | 是 | String(30) | 20160427210604000490 | 返回商户传入的订单号 |
| 支付接口 | ifCode | 是 | String(30) | wxpay | 支付接口编码 |
| 支付方式 | wayCode | 是 | String(30) | WX_LITE | 支付方式,如微信小程序WX_LITE |
| 支付金额 | amount | 是 | int | 100 | 支付金额,单位分 |
| 货币代码 | currency | 是 | String(3) | HKD | 三位货币代码,港币:HKD |
| 订单状态 | state | 是 | int | 2 | 支付订单状态 0-订单生成 1-支付中 2-支付成功 3-支付失败 4-已撤销 5-已退款 6-订单关闭 |
| 客户端IP | clientIp | 否 | String(32) | 210.73.10.148 | 客户端IPV4地址 |
| 商品标题 | subject | 是 | String(64) | 商品标题测试 | 商品标题 |
| 商品描述 | body | 是 | String(256) | 商品描述测试 | 商品描述 |
| 渠道订单号 | channelOrderNo | 否 | String | 20160427210604000490 | 对应渠道的订单号 |
| 渠道错误码 | errCode | 否 | String | 1002 | 渠道下单返回错误码 |
| 渠道错误描述 | errMsg | 否 | String | 业务异常错误 | 渠道下单返回错误描述 |
| 扩展参数 | extParam | 否 | String(512) | 134586944573118714 | 商户扩展参数,回调时会原样返回 |
| 创建时间 | createdAt | 是 | long | 1622016572190 | 订单创建时间,13位时间戳 |
| 成功时间 | successTime | 否 | long | 1622016572190 | 订单支付成功时间,13位时间戳 |
返回示例数据
{
"code": 0,
"data": {
"amount": 58,
"appId": "60cc09bce4b0f1c0b83761c9",
"body": "商品描述",
"channelOrderNo": "2021061822001423031419593035",
"clientIp": "192.166.1.132",
"createdAt": 1623985457705,
"currency": "HKD",
"extParam": "",
"ifCode": "alipay",
"mchNo": "M1623984572",
"mchOrderNo": "mho1623985457320",
"payOrderId": "P202106181104177050002",
"state": 2,
"subject": "商品标题",
"successTime": 1623985459000,
"wayCode": "WX_H5"
},
"msg": "SUCCESS",
"sign": "9548145EA12D0CD8C1628BCF44E19E0D"
}关闭订单
商户通过该接口关闭订单,支付网关会对订单完成关闭处理。
接口说明
请求URL:/api/pay/close
请求方式:POST
请求类型:application/json 或 application/x-www-form-urlencoded
请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 商户号 | mchNo | 是 | String(30) | M1621873433953 | 商户号 |
| 应用ID | appId | 是 | String(24) | 60cc09bce4b0f1c0b83761c9 | 应用ID |
| 支付订单号 | payOrderId | 是 | String(30) | P20160427210604000490 | 支付中心生成的订单号,与mchOrderNo二者传一即可 |
| 商户订单号 | mchOrderNo | 是 | String(30) | 20160427210604000490 | 商户生成的订单号,与payOrderId二者传一即可 |
| 请求时间 | reqTime | 是 | long | 1622016572190 | 请求接口时间,13位时间戳 |
| 接口版本 | version | 是 | String(3) | 1.0 | 接口版本号,固定:1.0 |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名值,详见签名算法 |
| 签名类型 | signType | 是 | String(32) | MD5 | 签名类型,目前只支持MD5方式 |
请求示例数据
{
"payOrderId": "P202106181104177050002",
"appId": "60cc09bce4b0f1c0b83761c9",
"sign": "46940C58B2F3AE426B77A297ABF4D31E",
"signType": "MD5",
"reqTime": "1624006009",
"mchNo": "M1623984572",
"version": "1.0"
}| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 返回状态 | code | 是 | int | 0 | 0-处理成功,其他-处理有误,详见错误码 |
| 返回信息 | msg | 否 | String(128) | 签名失败 | 具体错误原因,例如:签名失败、参数格式校验错误 |
| 签名信息 | sign | 否 | String(32) | CCD9083A6DAD9A2DA9F668C3D4517A84 | 对data内数据签名,如data为空则不返回 |
| 返回数据 | data | 否 | String(512) | {} | 返回下单数据,json格式数据 |
data数据格式
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 渠道错误码 | errCode | 否 | String | 1002 | 渠道关单返回错误码 |
| 渠道错误描述 | errMsg | 否 | String | 关闭异常 | 渠道关单返回错误描述 |
返回示例数据
{
"code": 0,
"data": {
"errCode": "",
"errMsg": ""
},
"msg": "SUCCESS",
"sign": "9548145EA12D0CD8C1628BCF44E19E0D"
}支付通知
当订单支付成功时,支付网关会向商户系统发起回调通知。如果商户系统没有正确返回,支付网关会延迟再次通知。
接口说明
请求URL:该链接是通过统一下单接口提交的参数notifyUrl设置,如果无法访问链接,商户系统将无法接收到支付中心的通知。
请求方式:POST
请求类型:application/x-www-form-urlencoded
通知参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 支付订单号 | payOrderId | 是 | String(30) | P12021022311124442600 | 返回支付系统订单号 |
| 商户号 | mchNo | 是 | String(30) | M1621873433953 | 商户号 |
| 应用ID | appId | 是 | String(24) | 60cc09bce4b0f1c0b83761c9 | 应用ID |
| 商户订单号 | mchOrderNo | 是 | String(30) | 20160427210604000490 | 返回商户传入的订单号 |
| 支付接口 | ifCode | 是 | String(30) | wxpay | 支付接口编码 |
| 支付方式 | wayCode | 是 | String(30) | WX_LITE | 支付方式,微信小程序WX_LITE |
| 支付金额 | amount | 是 | int | 100 | 支付金额,单位分 |
| 货币代码 | currency | 是 | String(3) | HKD | 三位货币代码,港币:HKD |
| 订单状态 | state | 是 | int | 2 | 支付订单状态 0-订单生成 1-支付中 2-支付成功 3-支付失败 4-已撤销 5-已退款 6-订单关闭 |
| 客户端IP | clientIp | 否 | String(32) | 210.73.10.148 | 客户端IPV4地址 |
| 商品标题 | subject | 是 | String(64) | 商品标题测试 | 商品标题 |
| 商品描述 | body | 是 | String(256) | 商品描述测试 | 商品描述 |
| 渠道订单号 | channelOrderNo | 否 | String | 20160427210604000490 | 对应渠道的订单号 |
| 渠道错误码 | errCode | 否 | String | 1002 | 渠道下单返回错误码 |
| 渠道错误描述 | errMsg | 否 | String | 134586944573118714 | 渠道下单返回错误描述 |
| 扩展参数 | extParam | 否 | String(512) | 134586944573118714 | 商户扩展参数 |
| 创建时间 | createdAt | 是 | long | 1622016572190 | 订单创建时间,13位时间戳 |
| 成功时间 | successTime | 否 | long | 1622016572190 | 订单支付成功时间,13位时间戳 |
| 通知请求时间 | reqTime | 是 | long | 1622016572190 | 通知请求时间,,13位时间戳 |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名值,详见签名算法 |
返回结果
业务系统处理后同步返回给支付中心,返回字符串 success 则表示成功,返回非success则表示处理失败,支付中心会再次通知业务系统。(通知频率为0/30/60/90/120/150,单位:秒)
注意:返回的字符串不区分大小写,字符串前后不能有空格和换行符。
通知示例数据
{
"amount": 5,
"body": "商品描述",
"clientIp": "192.166.1.132",
"createdAt": "1622016572190",
"currency": "HKD",
"extParam": "",
"ifCode": "wxpay",
"mchNo": "M1621873433953",
"appId": "60cc09bce4b0f1c0b83761c9",
"mchOrderNo": "mho1621934803068",
"payOrderId": "20210525172643357010",
"state": 3,
"subject": "商品标题",
"wayCode": "WX_H5",
"sign": "C380BEC2BFD727A4B6845133519F3AD6"
}