需要实现的接口
- 回调接口是指第三方提供的一个 API 请求入口,此 API 接口的请求和响应需要按照以下文档进行开发
- 友朋会根据业务逻辑调用第三方回调接口,以 HTTP STATUS 返回 200 为成功,友朋会对非 200 状态的请求进行重试,重试的间隔为 1,3,5,10,15 分钟,如果都无法得到正确响应会丢弃此通知
- 所有参数区分大小写
- 友朋采用 HTTP POST Content-Type:application/x-www-form-urlencoded 方式请求第三方回调接口
- 所有参数区分大小写
请求参数
参数名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
method | string | Y | 业务方法,以下每个接口表示每个业务方法 (字母小写) |
biz_content | string | Y | 业务参数 json 字符串 |
timestamp | int | Y | unix 时间戳到秒 |
sign_type | string | Y | 签名方式,md5 (小写) |
sign | string | Y | 签名(小写) |
返回结果
参数名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
error_code | int | 是 | 错误代码 =0 正常(操作成功,接口调用成功) !=0 异常错误 |
error_msg | string | 是 | 错误描述 |
data | object | 是 | 返回业务内容 |
签名与校验签名
- 除 sign 参数外所有参数必须参与签名,参数以文本方式字典排序,排序后使用 key=value&key=value 方式拼接字符串
- 得到字符串 tmpString
- 签名:md5(tmpString+"&"+appSecret) 得出的结果转换为小写字母
- appSecret 由品牌商在后台配置(此文档里接口 appSecret 用的是支付配置中的签名秘钥,非支付业务接口签名均用开放平台 appSecret)
接口 api.test
接口说明:
- 接口测试,传递的参数原样返回,此接口必须实现,运营商再后台配置参数的时候友朋会发起此接口请求,返回成功才能完成配置
业务参数:
参数名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
无 |
返回结果:
参数名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
无特殊说明 |
接口 consumer.order.refunds
接口说明:
- 退款接口,由友朋主动发起退款,第三方需要同步返回退款结果
- 此接口是用于当设备出货失败的时候,系统根据业务逻辑主动发起退款,第三方必须立即请求支付渠道的退款接口,同步返回退款结果
业务参数:
参数名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
ReceiptNo | string | Y | 友朋订单号 |
TradeNo | string | Y | 支付渠道交易流水号 |
返回示例
//退款成功
{
"error_code": 0, //业务逻辑成功返回0 不成功返回非0
"error_msg": "SUCCESS",
"data": {
"RefundsRawData": {}, //支付渠道退款返回的原始数据
"RefundsTime": 1517197309
}
}
//退款失败
{
"error_code": -1,
"error_msg": "业务失败原因的描述",
}
接口 consumer.order.refunds.notify
接口说明:
- 用户申请退款
- 此接口是当用户申请退款,友朋系统会主动通知第三方,第三方需要对此退款申请保存并根据自有业务逻辑通知到相关处理人员
- 当第三方处理退款订单后,需要将结果通知到友朋,通过友朋运营商平台第三方开放平台的接口 consumer.order.refunds.update
业务参数:
参数名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
ReceiptNo | string | Y | 友朋订单号 |
TradeNo | string | Y | 支付渠道交易流水号 |
UserRefundsStatus | int | Y | 用户退款申请状态 0=未申请 1=申请退款 -1=拒绝退款 2=通过退款 |
UserRefundsTime | int | Y | 用户退款申请时间 |
UserRefundsReason | string | Y | 用户退款原因 |
UserRefundsRemarks | string | N | 用户退款备注 |
UserRefundsReason 值定义
值 | 描述 |
---|---|
REFUNDS_REASON_DELIVERY_FAIL | 没有掉货 |
REFUNDS_REASON_PRODUCT_NOT_MATCH | 掉错商品 |
REFUNDS_REASON_PRODUCT_BROKEN | 商品损坏 |
返回示例
//业务成功
{
"error_code": 0, //业务逻辑成功返回0 不成功返回非0
"error_msg": "SUCCESS"
}
//业务失败
{
"error_code": -1,
"error_msg": "业务失败原因的描述",
}
接口 consumer.order.refunds.result.notify
接口说明:
- 退款结果通知
- 当第三方订单变为退款成功或拒绝退款时会调用此接口通知第三方
业务参数:
参数名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
ReceiptNo | string | Y | 订单交易编号 |
UserRefundsStatus | Number | Y | -1:拒绝 2:同意 |
RefundsRemarks | string | N | 审核备注 |
IsAutoRefunds | Number | Y | 1: 自动退款 |
OperatorsRefunds | Number | Y | 1:主动退款 |
返回示例
//业务成功
{
"error_code": 0, //业务逻辑成功返回0 不成功返回非0
"error_msg": "SUCCESS"
}
//业务失败
{
"error_code": -1,
"error_msg": "业务失败原因的描述",
}
接口 consumer.order.reader.create (可选)
接口说明:
- 外部读卡器创建支付订单
- 设备上的外部读卡器当获取到信息后,会通过此接口通知第三方,第三方处理完业务逻辑后需要回调通知到参数 NotifyUrl 地址(参考第三方支付)
业务参数:
参数名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
OrderID | string | Y | 订单 id |
ReceiptNo | string | Y | 订单号 |
Price | Number | Y | 商品金额 |
BarCode | string | Y | 商品条码 |
PayExtend | Object | Y | 支付扩展参数 |
PayExtend.Data | string | Y | 读卡器获取到的值 |
NotifyUrl | string | Y | 回调通知的 Url |
返回示例
//业务成功
{
"error_code": 0, //业务逻辑成功返回0 不成功返回非0
"error_msg": "SUCCESS"
}
//业务失败
{
"error_code": -1,
"error_msg": "业务失败原因的描述",
}