用户采用POST方法向平台提交请求,数据格式采用JSON,平台地址为:
https://平台域名/yunke-order/order
如:https://pay.wn.com/yunke-order/order
请求参数如下:
参数名 | 类型 | 是否必选 | 限制 | 描述 | 示例 |
---|---|---|---|---|---|
user_id | int | 是 | 系统分配,不可自定义 | 用户id:商家在平台注册时获得的用户ID | 4 |
order_number | string | 是 |
长度:string[6,32] |
商户订单号:在商家系统中全局唯一 | 20210530_R060524 |
description | string | 是 |
长度string[1,127] |
描述:商品或服务的描述 | 小米11手机 |
total | float | 是 |
可带小数点精确到分 |
总付款金额:单位元 | 18.6 |
timeout_express | int | 是 | Unix时间戳( 1970年1月1日 00:00:00 到当前时间的秒数) 与当前的时间差值范围在1分钟到15天 |
交易关闭时间:时间戳,超过该时间将无法付款 |
1622341093 |
return_url | string | 是 |
长度string[1,256] |
付款后跳转地址:用户完成付款后,系统将跳回商家的该地址 |
https://www.drupal.org |
notify_url | string | 否 |
长度string[1,256] |
付款异步通知地址:用于通知商家付款是否成功的异步通知URL绝对地址,如无将不通知,采用POST方法通知 |
https://www.drupal.org |
attach | string | 否 | 长度string[1,128] 任意数据,推荐为json字符串 |
附加数据:在查询API和支付通知中原样返回,可作为自定义参数使用 | 云客:user:drupal |
sign | string | 是 | 长度string[64] 哈希值 |
签名字符串:用于保证请求真实、不被篡改、防止重放攻击,通讯必须签名,点击查看签名算法 |
接口响应如下:
响应分为公共参数部分和业务参数部分
参数名 | 类型 | 是否必选 | 限制 | 描述 | 示例 |
---|---|---|---|---|---|
code | int | 是 | 三位整数 | 处理结果的状态码,详见这里 | 2000 |
msg | string | 是 | 长度string[1,256] | 处理结果的描述短语 | “ok” |
sign | string | 是 | 长度string[64] 哈希值 |
签名字符串:用于保证请求真实、不被篡改、防止重放攻击,通讯必须签名,点击查看签名算法 |
参数名 | 类型 | 是否必选 | 限制 | 描述 | 示例 |
---|---|---|---|---|---|
url | string | 视条件而定 仅在状态码以2开始时存在 |
url绝对地址 | 付款跳转页面,系统应将用户重定向到该页面进行付款操作, | https://www.drupal.org |
常见问题:
1、同一个商户订单号多次调用平台下单接口时,返回结果会分情况而定,当该单已付款时,会返回错误消息,而不是URL,当未付款时,会返回URL,此时会将原下单信息更新为新的下单信息,但强烈建议不要这样做,如果订单信息有变应该生成新的订单号,因为部分支付渠道(比如微信)当信息变更时,强制要求更换单号,否则提示重复下单错误,这导致不能付款,而支付宝并不限制
2、微信支付有场景限制:比如已经在PC端浏览器下单发起了支付(显示了付款二维码),而此时用户放弃支付,之后又在移动端浏览器或微信浏览器内等其他场景下对该订单继续付款,那么将出现重复下单的错误提示而无法付款,用户只能返回到最初下单时的场景(PC端)下才能付款成功,微信支付各场景互斥,要解决该问题,客户端系统可以产生新的订单号,或者让用户在付款页面的提示下返回原场景继续完成支付。支付宝不存在该问题。