统一下单

统一下单

业务通过统一下单接口可以发起任意三方支付(微信支付宝支付系统)渠道的支付订单。业务系统不必关心该如何调用三方支付,统一下单接口会根据业务系统选择的支付渠道ID,选择对应支付渠道的支付产品,发起下单请求,然后响应给业务系统支付请求所需参数。

An image

对于商户APP,商户发送支付请求到支付中心后,支付中心向商户返回加密数据且不向三方支付发送消息。商户利用接收到的加密数据调用三方支付的SDK,向三方支付发起支付请求。当支付中心收到三方支付 的支付消息后,支付中心通知商户支付结果。

An image

关于微信支付宝的更多文档请访问如下链接:

API 请求

端点

https://api.iotpaycloud.com/v1/create_order

方法

POST

头部

Content-Type: application/x-www-form-urlencoded

参数说明

字段名变量名必填类型示例值描述
商户IDmchIdString(30)10000701支付中心分配的商户号
商户订单号mchOrderNoString(30)20160427210604000490商户生成的订单号,请保证唯一性
渠道IDchannelIdString(24)WX_JSAPI支付渠道参数
币种currencyString(3)CAD三位货币代码,加币:CAD
支付金额amountint100支付金额,单位分
客户端IPclientIpString(32)210.73.10.148客户端IP地址
设备deviceString(50)WEB终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB"
结果回调URLnotifyUrlString(200)http://xxx.com/notify.php支付结果回调URL,勿包含?
商品主题subjectString(64)测试商品商品主题
商品描述信息bodyString(255)xxpay测试商品描述商品描述信息
扩展参数1param1String(64)该参数可忽略
扩展参数2param2String(64)支付中心回调时会原样返回
附加参数extraString(512)微信小程序,WX_APP,WX_NATIVE需要
结束跳转URLreturnUrlString(200)WX_JSAPI, ALIPAY_PC, ALIPAY_WAP需要支付结束跳转URL,勿包含?
子账号jobNoString(50)商户登录名
附言remarksString(200)商户的附言
签名signString(32)C380BEC2BF3519F3AD6签名值,详见签名算法

参数示例

params={"amount":1,"mchId":"10000000","mchOrderNo":"9af01329f1ec4c4694631b077a0e8573","subject":"商品支付主题","sign":"F64C43C1487C7C0DA93DA93DD2961FA2","body":"商品支付内容","param1":"","param2":"","clientIp":"127.0.0.1","extra":"{\"openId\":\"o2RvowBf7sOVJf8kJksUEMceaDqo\", \"type\":\"minipay\",\"appId\":\"xxxxxxxxx\"}","notifyUrl":"http://ngrok.4jicao.com/goods/payNotify","currency":"CAD","device":"WEB","channelId":"WX_JSAPI"}

附加参数extra说明

小程序支付(WX_JSAPI)

字段名变量名必填类型示例值描述
附加参数extraJSON{"openId":"o2RvowBf7sOVJf8kJksUEMceaDqo", "type":"minipay","appId":"xxxxxxxxx"}openid,type,appId为必填。

微信App支付(WX_APP)

字段名变量名必填类型示例值描述
附加参数extraJSON{"type":"apppay","appId":"xxxxxxxxx"}type,appId为必填。

微信原生扫码支付(WX_NATIVE)

productId参数必填,对应业务系统定义的商品ID。

字段名变量名必填类型示例值描述
附加参数extraJSON{"productId":"120989823"}对应业务系统定义的商品ID。

注意

当notify回传时,参数"mchOrderNo"被放入"param1","parma1"在发起订单时不要填入参数,否则回传时被覆盖。

支付完成后仍需根据notify判断是否支付成功或失败

返回结果

字段名变量名必填类型示例值描述
返回状态码retCodeStringSUCCESSSUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看resCode来判断
返回信息retMsgString签名失败返回信息,如非空,为错误原因 签名失败 参数格式校验错误
签名signString

channelId=ALIPAY_PC or ALIPAY_WAP or UPI_SEQ

字段名变量名必填类型示例值描述
支付订单IDpayOrderIdString支付订单ID
跳转urlpayUrlString跳转到此地址,直接echo该参数,或者redirect到扩展参数中的url
扩展参数retParamsArrayfor ALIPAY_WAP, 跳转至retParams.alipayUrl, for UPI_SEQ, 跳转至retParams.unionpayUrl

channelId=ALIPAY_QR

字段名变量名必填类型示例值描述
支付订单IDpayOrderIdString支付订单ID
二维码codeqr_codeString商家根据qr_code生成二维码,让用户使用支付宝扫码

channelId=WX_NATIVE

字段名变量名必填类型示例值描述
支付订单IDpayOrderIdString支付订单ID
二维码codecodeUrlString商家根据codeUrl生成二维码,让用户使用微信扫码
预支付标识prepayIdString第三方支付公司返回的预支付标识

channelId=CC_PAX

字段名变量名必填类型示例值描述
附加参数extrayString(json){"cardType": "M", "cardNum": "XXXXXXXX1166", "expireDate": "1022"}credit card transaction info

参数示例

"extra":"{\"cardType\":\"M\",\"cardNum\":\"XXXXXXXX1166\",\"expireDate\":\"1022\",\"emvLabel\":\"MASTERCARD\",\"emvAID\":\"A0000000041010\",\"emvTVR\":\"0000008000\",\"emvTSI\":\"0000\",\"emvTC\":\"ARQC: 3D36ACBD44BE512B\",\"termNum\":\"25957\",\"bankTermNum\":\"40880013\",\"termInvoiceNum\":\"724172\",\"seqNum\":\"000001000061\",\"authNum\":\"01046Z\",\"batchNum\":\"0008\",\"trxMethod\":\"T\",\"accountType\":\"\",\"receiptDisp\":\"000 Approved 00 Thank You\",\"cashbackAmount\":\"\",\"timeStamp\":\"20210120-19402057\",\"surchargeAmount\":\"\",\"langCode\":\"E\",\"trxDate\":\"01202021\",\"trxTime\":\"164033\",\"cvmResults\":\"1F0302\",\"trxCode\":\"00\"}"

下单测试

统一下单测试点击这里在新窗口打开 源码下载 下载在新窗口打开

扫码(商家扫用户)下单测试点击这里在新窗口打开 源码下载 下载在新窗口打开

在线签名检查在新窗口打开

上次更新: