第三方支付业务
售货机
说明
- 友朋运营商后台支付配置中会增加 3 个参数配置: 支付地址,回调接口,签名秘钥
- 友朋在创建本地订单后会携带订单参数跳转到第三方支付地址
- 第三方的地址需要判断当前客户端是微信/支付宝,按照支付渠道业务逻辑实现支付流程
- 支付渠道同步返回支付结果后跳转回友朋指定 URL
- 支付渠道异步回调第三方服务器通知支付结果,第三方处理完业务逻辑后需要调用友朋回调接口
签名与校验签名
- 除 sign 参数外所有参数必须参与签名,参数以文本方式字典排序,排序后使用 key=value&key=value 方式拼接字符串
- 得到字符串 tmpString
- 签名:md5(tmpString+"&"+appSecret) 得出的结果转换为小写字母
- appSecret 需要运营商后台配置 (此文档里接口 appSecret 用的是支付配置中的签名秘钥,非支付业务接口签名均用开放平台 appSecret)
第三方支付地址跳转参数说明
- 示例: http://www.thirdparty.com/pay
- 请求方式:HTTP GET
- 友朋会携带以下参数引导消费者跳转到第三方 URL,参数区分大小写
- 如果第三方业务系统是对接多个运营商的情况下,为了区分不同运营商的跳转地址可以在 URL 上增加业务区分参数,如:http://www.thirdparty.com/[APPID]/pay
请求参数:
参数名称 | 类型 | 是否必须 | 参考值 |
---|---|---|---|
receipt_no | string | Y | 友朋业务订单号全局唯一 |
return_url | string | Y | 同步返回支付结果地址 |
notify_url | string | Y | 异步回调支付结果通知地址 |
timestamp | int | Y | UNIX 时间戳,示例:1516980357 |
sign | string | Y | 签名 |
说明:
- 第三方页面接收参数后需要校验参数合法性,判断 timestamp 是否-+60s 防止数据重放
- 第三方通过 receipt_no 请求友朋服务器 API 获取订单信息(金额,商品信息,设备信息等)具体参考(友朋运营商平台第三方开放平台接口文档)
- 第三方根据自有业务逻辑对支付渠道发起支付请求,同步重定向到 return_url
- 当第三方收到支付渠道回调后处理完自身业务逻辑后回调 notify_url(支付成功回调,其他状态不需要回调)
- 同步跳转 return_url
支付回调参数说明
- 示例 URL: https://c.yopoint.com/thirdpay/notify/[xxxxx] (请根据 302 传递的参数 notify_url 请求)
- 请求方式: HTTP POST
请求参数:
参数名称 | 类型 | 是否必须 | 参考值 |
---|---|---|---|
receipt_no | string | Y | 友朋业务订单号全局唯一 |
trade_no | string | Y | 支付渠道交易流水号 |
trade_status | int | Y | 支付结果 1=支付成功 -1=交易关闭 |
trade_rawdata | string | Y | 支付渠道回调的所有参数以 JSON 字符串方式传递,如果没值请传递 {} 空对象字符串 |
timestamp | int | Y | UNIX 时间戳,示例:1516980357 |
price | int | N | 订单实际支付金额,单位分,如不修改订单价格此字段不要传,此字段不参与签名 |
sign | string | Y | 签名 |
说明:
- 友朋收到请求并校验,处理成功后返回 success 纯文本,对于非 success 的返回视为业务处理失败,第三方需要对此回调发起重试,直到返回 success 为止
- price 字段不参与签名
- trade_rawdata 如果没值请传递 {} 字符串且参与签名
自取柜
说明
- 友朋内部会配置好运营商指定的支付配置 2 个参数配置: 回调接口,签名秘钥
- 第三方处理完业务逻辑后需要调用友朋回调接口
签名与校验签名
- 除 sign 参数外所有参数必须参与签名,参数以文本方式字典排序,排序后使用 key=value&key=value 方式拼接字符串
- 得到字符串 tmpString
- 签名:md5(tmpString+"&"+appSecret) 得出的结果转换为小写字母
- appSecret (此文档里接口 appSecret 非支付业务接口签名均用开放平台 appSecret)
支付回调参数说明
前置逻辑: 每次调用 cabinet.open.door 接口开门后,友朋接口会返回回调地址,请务必保存每笔订单的回调地址。 实现业务:第三方开发者接入自有支付通道,每笔开门订单完成支付(扣款)后,进行异步回调。如回调接口失败,请确保重试补偿机制。
- 示例 URL: https://c.yopoint.com/thirdpay/gateway/cabinet_notify/[xxxxx] (请根据 302 传递的参数 notify_url 请求)
- 请求方式: HTTP POST
请求参数:
参数名称 | 类型 | 是否必须 | 参考值 |
---|---|---|---|
receipt_no | string | Y | 友朋业务订单号全局唯一 |
trade_no | string | Y | 支付渠道交易流水号 (尽可能采用支付通道的业务流水号,避免二次对账) |
trade_status | int | Y | 支付结果 1=支付成功 -1=交易关闭 |
trade_raw_data | object | N | 支付渠道回调的所有参数以 JSON 字符串方式传递,如果没值请传递 {} 空对象字符串 |
complete_status | string | Y | 完成状态 |
pay_time | int | Y | 支付时间 YYYYMMDDHHMMSS, 示例:20210122112001 |
sign | string | Y | 签名 |
说明:
- 友朋收到请求并校验,处理成功后返回 success 纯文本,对于非 success 的返回视为业务处理失败,第三方需要对此回调发起重试,直到返回 success 为止
- trade_raw_data 如果没值请传递 {} 字符串且参与签名
- complete_status 如果没值请传递 "" 字符串且参与签名