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

news2024/10/5 18:34:43

一、背景

上一篇我们介绍了支付回调接口的对接情况,当回调出现网络等异常情况,导致用户的支付订单未及时处理或处理失败的时候,商户则需要自己主动向浦发银行发起查询支付结果。
主动查询支付结果,发挥补偿重试的重要作用,在对接支付的流程中,是不可缺少的一个环节。

支付回调是被动接收“消息”,查询支付结果则是主动去获取“消息”。(这里的消息是指订单支付的结果通知)

共同点是:它们的业务逻辑处理相同,触发更新支付订单。

本文仅对主动查询支付结果的接口介绍,后文将要对接查询退款结果接口所使用的是同一个接口。支付和退款的处理逻辑大差不差,处理对象不同而已。(前者是支付订单,后者是退款订单)

二、流程图

在这里插入图片描述

三、接口说明

  • 接口名称:对公收款交易查证
  • 接口URI:/api/corporateAccounts/payments/status
  • 调用方式:GET
  • 必填的请求参数:

浦发银行官方提供的文档不准确,详细见下文。

    • tranOrdrNo:实际是非必填参数,文档也即下面的截图不对,它和后面的mrchOrdrNo两者二选一的关系。
    • mrchOrdrNo:平台支付流水号,它和上一个参数tranOrdrNo二者是二选一的关系。
    • tranDate:必填参数,还是那句话,画蛇添足的一个字段。如果不传,则报错–“errInfo”: “输入交易日期不能为空”
    • mrchId:商户号,必填参数
      在这里插入图片描述订正文档:tranOrdrNo和mrchOrdrNo的必填选项应该是C,表示某条件成立时必须填写的域。

报文示例

  • 请求报文

交易日期tranDate,是在发起支付请求接口中,和银行支付流水号tranOrdrNo一起保存在支付订单里。只因为它是必传参数,可是其他支付渠道并无此要求,所以我把tranDate保存在字段–支付成功时间payOkDate。

1、以平台支付流水号为依据发起主动查询(建议)

{
    "mrchId": "310319982990001",
    # 平台支付流水号
    "mrchOrdrNo": "0624041809544B0018534",
    "tranDate": "20240418"
}

2、以浦发银行支付流水号为依据发起主动查询(文档说tranOrdrNo字段是必填,说法不对,这里再次提醒)

{
    "mrchId": "310319982990001",
    # 银行支付流水号
    "tranOrdrNo": "1901041809532900122081065712",
    "tranDate": "20240418"
}
  • 响应报文

并不会返回商户支付流水号!!!关键返回字段:{ “ordrSt”: “00”,
“tranAmt”: “0.01”,
“ordrSt”: “00”,
“tranTimep”: “20240418095400”,
“frmrMrchOrdrNo”: “1901041809532900122081065712” }

{
    "statusCode": "0000",
    "transNo": "04972404186851005317430509",
    "usrFlgId": "",
    "isSbscrbFlg": "",
    "usrChildFlg": "",
    "isFlag": "",
    "transAmt": "",
    "busnPckt": "",
    "clueDtl": "",
    "totalAmt": "",
    "ordrAmt": "",
    "wthdrwnUsAmtCnl": "",
    "retGdsAmt": "",
    "rfdAmt": "",
    "vcherNum": "",
    "fundSource": "",
    "inAcctName": "",
    "rfndRlst": "",
    "byrOfAlipayAcctNO": "",
    "actRcvAmt": "",
    "byrPayAmt": "",
    "usPntsPayAmt": "",
    "toUsEstbInvAmt": "",
    "clientID": "",
    "inrChlCnlNo": "",
    "mrchStrNm": "",
    "userId": "",
    "addItInNal": "",
    "infoDsc": "",
    "fldData": "",
    "bussRetCd": "",
    "returnInfo": "",
    "trdMerMechNo": "",
    "weChatSubMechNo": "",
    "errCode1": "",
    "errInfo": "",
    "terminalNo": "",
    "tranType": "",
    "ordrSt": "00",
    "pyBnkInfo": "",
    "cmdtyInfo": "",
    "tranAmt": "0.01",
    "ccy": "",
    "thdPltfrmTm": "",
    "thdPtySeq": "",
    "tranOrdrNo": "",
    "tranDate": "20240418",
    "clrgDate": "",
    "tranTimep": "20240418095400",
    "mrchTm": "",
    "bussLstNo": "",
    "frmrMrchDate": "",
    "frmrMrchOrdrNo": "1901041809532900122081065712",
    "orgClrgDt": "",
    "tranCode": "OOPY",
    "mrchId": "310319982990001",
    "openBrNo": "",
    "instId": "",
    "mrchDvlpmBnkNo": "",
    "mrchDvlpmBnkBrId": "",
    "strNo": "",
    "cshrNo": "",
    "mrchlInfmAdr": "",
    "channelNo": "",
    "hvWthdrwnAmt": "0.00",
    "rfndblAmt": "0.01",
    "hvThdChrgAmt": "",
    "reserveAmt": "",
    "chrgAmt": "",
    "charges": "",
    "prjPrdTp": "",
    "ordrPcsSt": "",
    "trdRtCd": "00",
    "feeRtId": "",
    "cmdtyDsc": "",
    "crdType": "",
    "bussTrm": "",
    "thdPtyObjNo": "",
    "remark1": "",
    "remark2": "11",
    "dcnRfdDtl": "",
    "crtTm": "",
    "cashRfndAmt": "",
    "pblcAcctId": "",
    "bussRetInfo": "",
    "trdStInfo": "",
    "bussStatusDsc": "",
    "weRfndStatus": "",
    "aLTrnCrc": "",
    "pymtMd": "",
    "dscntAmnt": "",
    "mdsctAmnt": "",
    "byUserType": "",
    "acceptEndTime": "",
    "pftSt": "",
    "errCode2": "",
    "byrRfndAmnt": "",
    "dscntRfndAmnt": "",
    "mdsctRfndAmnt": "",
    "trdChnl": "",
    "rsrvFld1": "",
    "rsrvFld2": "",
    "rsrvFld3": "",
    "rsrvFld4": "",
    "rsrvFld5": "",
    "rsrvFld6": "",
    "rsrvFld7": "",
    "remark3": "",
    "tranVrfyInfo": [

    ]
}

订单状态的字典

在这里插入图片描述
订单状态:

  • 00-交易成功
  • 01-交易失败
  • 03-部分退货
  • 04-全部退货
  • 05-退货中
  • 09-支付中
  • 99-超时

四、总结

最后,说一说什么时候触发主动查询支付结果。

在这里插入图片描述

  • 定时查询一定时间区间内,未支付成功的支付订单,主动询问第三方支付。
  • 查询支付订单详情
  • 关单前

可以说,作为支付回调的补偿功能,定期发起查询支付结果,在支付体验已经打折扣的情况下,大大减少用户的投诉,给你的支付系统挽回一定的口碑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1611501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自然语言处理基础面试

文章目录 TF-IDFbag-of-wordsBert 讲道理肯定还得有Transformer,我这边先放着,以后再加吧。 TF-IDF TF(全称TermFrequency),中文含义词频,简单理解就是关键词出现在网页当中的频次。 IDF(全称…

C语言实现贪吃蛇项目(2)

先来看看效果: 20240420_212115 文章目录: 3.项目实现3.0宽字符的打印3.01本地化操作setlocale函数宽字符的打印 3.1贪吃蛇结构的创建和维护3.11贪吃蛇结构的创建3.12贪吃蛇的维护 3.2初始化游戏3.21.打印欢迎界面、隐藏光标和设置窗口大小3.22.绘制地图…

java中File类和输入输出流的用法

目录 针对文件系统进行操作 针对文件内容进行操作 java针对文件操作可以分为两种:1)针对文件系统进行操作,如创建文件,删除文件,创建目录,重命名文件等。 2)针对文件内容进行操作&#xff0c…

SQLite R*Tree 模块(三十三)

返回:SQLite—系列文章目录 上一篇:SQLite FTS3 和 FTS4 扩展(三十二) 下一篇:SQLite轻量级会话扩展(三十四) 1. 概述 R-Tree 是一个特殊的 专为执行范围查询而设计的索引。R-树最常见的是 用于地理空间系统,其中…

第 2 章:FFmpeg简介

2.1 历史 历史 一些相关术语介绍: 容器(Container)格式:一种文件封装格式,里边主要包含了流,一般会使用一个特定的后缀名标识,例如.mov、.avi、.wav等。流 (Stream)&am…

稀碎从零算法笔记Day54-LeetCode:39. 组合总和

题型:数组、树、DFS、回溯 链接:39. 组合总和 - 力扣(LeetCode) 来源:LeetCode 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数…

Tomcat核心组件深度解析

Server组件 Service组件 连接器Connector组件 容器Container组件

C语言系列文章 | 初识C语言

首先分为几个方面来和各位读者介绍C语言,并在之后的学习过程中不断地和各位读者去分享我学习的经历。 坐好,发车咯~目录如下:1. C语言是什么?2. C语言的历史和辉煌3. 编译器的选择VS20224. VS项目和源⽂件、头⽂件介绍5. 第⼀…

前端css中table表格的属性使用

前端css中table表格的属性使用 一、前言二、常见的表格属性1.边框的样式2.布局和对齐3.间距和填充4.背景和颜色5.字体的样式6.边框的圆角 三、简单的表格,例子11.源码12.源码1效果截图 四、给表格添加动画效果,例子21.源码22.源码2的运行效果 五、结语六…

Vue 指令、计算属性、侦听器

目录 指令 指令修饰符 按键修饰符 ​编辑 v-model修饰符 事件修饰符 v-bind对于样式操作的增强 操作class 对象 数组 操作style v-model应用于其他表单元素 computed计算属性 概念 基础语法 ​编辑 计算属性vs方法 computed计算属性 作用 语法 缓存特性 m…

图像处理的魔法师:Pillow 库探秘

文章目录 图像处理的魔法师:Pillow 库探秘第一部分:背景介绍第二部分:库是什么?第三部分:如何安装这个库?第四部分:库函数使用方法第五部分:场景应用第六部分:常见Bug及解…

Unity射击游戏开发教程:(2)实例化和销毁游戏对象

现在我们有了“飞船”,我们可以在屏幕上移动它,现在我们需要发射一些激光!与宇宙飞船一样,我们将让事情变得简单并使用 Unity 自己的基本形状。舱体的效果很好,所以我们来创建一个。 我们保存了有关位置、旋转和缩放的信息。我们想要缩小这个对象,假设每个轴上缩小到 0.2…

使用PHP开发体育赛事直播平台,有这些缺点和优点

"东莞梦幻网络科技"作为体育直播平台开发领域的领导者,选择使用PHP开发体育赛事直播平台的现成源码,为什么会选择该语言,背后的选择理由可以从该技术的优点和缺点中找到答案。 一、优点1、易学易用与快速开发:PHP语言语…

git远程分支强制覆盖本地分支

目录 第一章、问题1.1)报错提示:没有为分支主机或分支配置被跟踪的分支1.2)报错分析与解决 第二章、2.1)本地误删代码后想要git pull拉取覆盖:失败2.2)报错分析和解决 友情提醒: 先看文章目录,…

Java多线程-API

常见API一览 Thread t1 new Thread(() -> {System.out.println("我是线程t1");System.out.println("Hello, World!"); }); t1.start(); // 获取线程名称 getName() // 线程名称默认是Thread-0, Thread-1, ... System.out.println(t1.getName());// 通过…

SpringCloud系列(8)--将服务提供者Provider注册进Eureka Server

前言:上一章节我们介绍了Eureka服务端的安装与配置,本章节则介绍关于微服务如何入职Eureka Server Eureka架构原理图 1、修改provider-payment8001子模块的pom.xml文件,引入Eureka Clinet的依赖,然后reolad一下,下载依…

windows驱动开发-WDM框架(一)

在前面的文章中解释过,NT5.0之后windows确定了新的架构Windows Driver Model (WDM),在Vista之后又推出了Windows Driver Framework(WDF),这两个都属于驱动程序框架,那么它们的之间的关系是怎样的? WDF是对WDM进行的封…

学习空间转换-3D转换

1.什么是空间转换? 使用的是transform属性实现元素在空间内的位移,旋转,缩放等效果。 空间:是从坐标轴角度定义的。x,y,z三条坐标轴构成的一个立体空间,Z轴位置与视线方向相同。 所以空间转换也被叫做3D转换 语法&a…

本地消息表模式保障分布式系统最终一致性

系统架构说明 状态转换说明 订单表消息表process_queue库存系统return_queue说明成功失败///订单库回滚成功成功失败//订单系统重发消息成功成功成功失败/Broker自动重试,注意接口幂等成功成功成功库存不足退回/Broker通知回掉,订单/消息作废成功成功成…

【做一名健康的CSDNer】《脱单恋爱秘籍》 —— 让爱情不再是难题

在这个快节奏的数字时代,程序员们以其独特的智慧和专业技能,为世界带来了翻天覆地的变化。然而,当代码和逻辑成为日常,爱情和人际关系的编程似乎变得复杂起来。为了帮助程序员们在爱情的道路上也能取得成功,我们精心打…