对接浦发银行支付(七)-- 关单接口

一、背景

为什么需要关单? 前文说了,用户在下单支付之后,什么时候真正支付是不可预知。

所以,我们一般会对支付订单设置一个过期时间,无论是支付安全也好,还是业务上的支付时间要求也罢。

下面举一个例子,常见于商品搞活动的支付场景:

  • 规定某个商品的支付时间必须是在30分钟内完成支付, 业务订单(订单服务所创建的订单)和支付订单都将在30分钟后自动过期。但是,如果用户在即将过期时,已拉起了支付,停留在输入密码界面;等订单过期后,用户这个时候才进行支付,而支付渠道是不知道支付订单已过期了。 所以,我们需要及时通知支付渠道,阻止用户在订单过期之后的支付。

所以我们总结下,什么状态下的支付订单才允许被关单?

  • 状态是未支付或者支付中
  • 在关单前,再次主动查询支付结果,相当于是二次确认订单是未支付

下面是关单流程:

二、关单流程

在这里插入图片描述

三、关单接口

关单接口本身非常简单

  • 接口名称:对公收款订单关闭
  • 接口URI:/api/corporateAccounts/payments/ordersClose
  • 请求方式:POST
  • 必填的请求参数:
    • ebankPyOrdrNo:浦发银行支付流水号,在支付下单的时候返回的字段tranOrdrNo
    • origTranDate:浦发银行交易日期,也是在支付下单的时候返回的字段tranDate

在这里插入图片描述

示例报文

  • 请求报文
{
    "mrchId": "310319982990001",
    "ebankPyOrdrNo": "1901041813111811145662066744",
    "origTranDate": "20240418"
}
  • 响应报文

判断errCode是否等于0000000,所以需要解析响应报文中的errCode和errInfo。然而其他字段,对于我们程序并不用得上。

在这里插入图片描述

{
    "statusCode": "0000",
    "transNo": "04972404186851313124609429",
    "mrchId": "",
    "tranOrdrNo": "1A41041813120106664798A00162",
    "errCode": "0000000",
    "errInfo": "订单关闭成功",
    "orgOrdrStCd": "06",
    "rsrvFld1": "",
    "rsrvFld2": "",
    "rsrvFld3": "",
    "rsrvFld4": "",
    "rsrvFld5": "",
    "rsrvFld6": "",
    "extdFld1": "",
    "extdFld2": ""
}

四、总结

关单接口比较简单,就讲到这。

有些支付渠道却没有提供关单接口,就我对接过的银行中,提供了关单接口的银行有工行、杭州银行、浦发银行和微信;未提供关单接口的银行是农行。

希望通过本文的讲述,你对接第三方支付的时候,尽量接入关单接口。(第三方支付的接口众多,需要形成一个支付闭环,不要对接了一个支付下单和支付回调接口就完事了)

对接浦发银行系列文章目录:

对接浦发银行支付(一)-- 总体概述与准备工作

对接浦发银行支付(二)-- 公众号JSAPI支付

对接浦发银行支付(三)-- QR扫码付

对接浦发银行支付(四)-- 支付回调接口

对接浦发银行支付(五)-- 主动查询支付结果

对接浦发银行支付(六)-- 请求退款接口与查询退款结果接口

对接浦发银行支付(七)-- 关单接口

对接浦发银行支付(八)-- 对账接口

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值