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

一、使用场景

扫码付,指的是支付平台,给每个用户的具体订单生成一个QR二维码,用户本人或者他人扫码付款。
付款用户可以直接识别二维码,或者下载到本地,通过微信或支付宝扫一扫识别,第二步将跳转至对应的支付页面H5–第三方支付提供。
二维码其实就是一个h5地址,既要支持微信扫,又要支持支付宝扫。

简单的流程如下:
在这里插入图片描述

从上述要求寻找浦发银行的支付方式,交易类型tranType,选择“OK-聚合动态码支付”。

下面将具体介绍浦发银行的扫码付。

二、扫码付接口

和jsapi支付是同一个接口,交易类型不同,且不必要openId。

  • 接口名称:对公收款支付
  • 接口URI:/api/corporateAccounts/payments/orders
  • 请求方式:POST

请求报文

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • terminalNo:终端号,在申请商户的时候,由浦发银行分配给我们
  • cmdtyDsc:商品描述
  • tranAmt:交易金额,单位是元
  • iPAdress:这个最容易踩坑,地址的英文明明是address,它偏偏要少写一个d;其次该字段在Lombok自动生成getter/setter的时候,会变成“IPAdress”。
  • mrchlInfmAdr:支付回调的异步通知地址
  • tranType:选择“OK”
  • mrchId:商户号,在联调接口前,先在浦发后台申请好商户(注意:不是浦发开放平台,这也是我想不明白的地方:既然有开放平台,怎么不把商户后台相关功能一并开放给商户呢?这一点还是微信商户后台做得好,真的是让银行望尘莫及了)
  • mrchOrdrNo:平台支付流水号,这个字段命名也是醉了(好端端的订单编号OrderNo,被他给取成了OrdrNo,每次都生怕写错了)

响应报文

  • tranOrdrNo:浦发银行支付流水号,需要保存至支付订单
  • trandDate:交易日期,本来没什么用,查询支付结果接口中需要用到它,且必传参数。
  • qRCdLind:二维码链接,这就是我们本文的主要成果,目标就是为了得到它。
    在这里插入图片描述

示例报文

  • 请求报文
{"terminalNo": "98A00162","mrchOrdrNo": "052B40408140404004512","cmdtyDsc": "商品描述","tranType": "OK","mrchId": "310319982990001","IPAdress": "127.0.0.1","mrchTm": "20240408140404","mrchlInfmAdr": "http://122.xx.xx.xx:6008/pay/api/v1/xxx/xxx","tranAmt": "0.01"
}
  • 响应报文
{"statusCode": "0000","transNo": "04972404086861405202210686","isSbscrbFlg": "","isFlag": "","pyBnkInfo": "","totalAmt": "","clueDtl": "","byrOfAlipayAcctNO": "","actRcvAmt": "","byrPayAmt": "","usPntsPayAmt": "","toUsEstbInvAmt": "","inrChlCnlNo": "","aLPAYCdBal": "","mrchStrNm": "xxx公司","userId": "","addItInNal": "","fldData": "","clrgDate": "",# 支付中状态"ordrSt": "09","tranType": "OK","tranAmt": "0.01","thdPtySeq": "","tranOrdrNo": "1901040814042900150041165352","tranDate": "20240408","qRCdLink": "https://etest2.spdb.com.cn/msemk-cli-h5app/#/H5CompanyPay?H5Channel=400&qrCode=https%3A%2F%2Fqr.95516.com%2F03100001%2Fccas%2F129%2FOK%2F5CD652D479B73FE9BCF0BAD1241A4F65AE3E1B9E2F9E1F3CB3DADB91D27CBF52","praPayCmmFlg": "","mrchId": "310319982990001","mrchTm": "20240408140429","signature": "","sgnData": "","aLTrnCrc": "","pymtMd": "","busInfo": "","dscntAmnt": "","mdsctAmnt": "","byUserType": "","apndPyMd": "","pblcAcctId": "","trdMerMechNo": "","weChatSubMechNo": "","bussRetInfo": "","errCode": "","errInfo": "","trdChnl": "","bnkngbsnssSeqNo": "","rsrvFld1": "","rsrvFld2": "","rsrvFld3": "","rsrvFld4": "","rsrvFld5": "","rsrvFld6": "","remark": ""
}

得到了返回字段qRCdLink,在通过下文的在线生成qr二维码,即可测试支付。

三、在线生成二维码

这里介绍一款在线生成二维码的工具:qr-code-generator

在这里插入图片描述

扫描后,跳转到https://etest2.spdb.com.cn/msemk-cli-h5app

交易单号,即浦发银行支付流水号,它是以1901开头的一串数字。

在这里插入图片描述

四、遇到的问题

1、下单账号与支付账号不一致,请核实后再支付

在这里插入图片描述

解决办法:上文讲到了,扫码付虽然不要求openId,但是浦发银行的测试环境要求我们必须把微信用户openId加到白名单。

也就说,我们必须先找到微信公众号appId及其下的openId。

2、“errCode”:“CBAS004”,“errInfo”:“缺少必要字段spbill_create_ip(UP0802100)”

从这个报错信息,根本就无法直观地看出是缺少了哪个必要字段。这是因为下单支付接口请求和响应,找遍了也找不到字段spbill_create_ip。

其实就是请求入参缺少了字段iPAdress。想不明白,为什么接口的字段命名得如此随意。

3、当前页面的URL未注册

在这里插入图片描述

这个错误很常见,解决途径就是在微信商户后台,【产品中心】–》【开发配置】–》【支付授权目录设置】,添加浦发银行的h5页面。
在这里插入图片描述

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

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

相关文章

php 笔记 01

01 常见的一些交互概念 什么是交互: 就是前端页面从服务器后台请求数据来渲染 前端页面把获取到的数据发送给后台 服务器: 谁提供数据 谁就是服务器 后台程序(php) 客户端: 谁请求数据 谁就是客户端 前端页面(html页面) 一个网址的访问包括的内容: 协议: 规定了交互双方遵循的…

详细分析Java中的AuthRequest类(附Demo)

目录 前言1. 基本知识2. Demo3. 实战 前言 公共接口,定义了对第三方平台进行授权、登录、撤销授权和刷新 token 的操作 1. 基本知识 先看源码基本API接口: import me.zhyd.oauth.enums.AuthResponseStatus; import me.zhyd.oauth.exception.AuthExce…

SSDReporter for Mac:全面检测SSD健康,预防数据丢失,让您的Mac运行更稳定

SSDReporter for Mac是一款专为Mac用户设计的固态硬盘(SSD)健康状况检测工具,旨在帮助用户全面了解并监控其Mac设备中SSD的工作状态,从而确保数据的完整性和设备的稳定性。 这款软件具有多种强大的功能。首先,它能够定…

09-ARM开发板的HelloWorld

在ARM开发板上运行x86_64平台程序 前面在Ubuntu系统编译生成了X86_64平台的HelloWorld程序,通过NFS服务器,尝试在开发板上直接运行。 如图所示,程序无法正常运行,终端提示ARM开发板在执行x86架构(Intel或AMD&#xff…

笔记:Python猴子吃桃

文章目录 前言一、分析题目二、编写代码1.代码2.优化代码 总结 前言 笔记:猴子吃桃:猴子第一天摘下若干个桃子,当即吃了一半,不过瘾就多吃了一个, 第二天又将剩下的桃子吃了一半,不过瘾又多吃了一个,以后每…

c++使用googletest进行单元测试

googletest进行单元测试 使用Google test进行测试一、单元测试二、使用gmock测试 使用Google test进行测试 使用场景: 在平时写代码中,我们需要测试某个函数是否正确时可以使用Google test使用,当然,我们也可以自己写函数进行验证…

SpringMVC中,/和/*和/**分别表示什么

根路径 "/" 用途 / 是最基本的路径映射,在Spring MVC中它表示应用程序的根路径。当你在浏览器中访问 http://domain.com/ 时,就会匹配到根路径。 特点 这种映射方式主要用于默认的欢迎页或者一些针对根路径的特定处理。例如,你可能…

Docker 停止及删除容器和镜像(单个和所有)

Docker 停止及删除容器和镜像(单个和所有) 文章目录 Docker 停止及删除容器和镜像(单个和所有)1. docker其它相关命令2. 停止及删除容器和镜像(单个和所有)2.1. 停止及删除单个容器2.2. 停止及删除所有容器…

Python数字三角形

在数学中,数字三角形通常指的是由数字组成的三角形结构,其中每个数字是其正上方数字之和。一个经典的例子是帕斯卡三角形(Pascals Triangle),它与组合数学中的二项式系数紧密相关。 在Python中,我们可以通…

旅游陪同翻译难吗, 旅游翻译英译中哪家好?

近来,随着中国旅游业的蓬勃发展,旅游陪同翻译的需求也水涨船高,这些专业的翻译服务者为中外游客搭建起友谊的桥梁,引领他们共同探索中国这片古老而神秘的土地 。那么,旅游陪同翻译英译中难吗?我们如何在众多…

混合A*算法

混合A算法是一种路径规划算法,它结合了A搜索和采样优化技术。其原理可以简要概括如下: A*搜索:A*算法是一种启发式搜索算法,用于解决图或者网络中的路径规划问题。它通过维护两个列表(开放列表和封闭列表),根据启发式函数(估计函数)和已走过路径的成本来选择下一个状态…

mysql数据库连接工具(mysql数据库连接工具怎么备份数据不备份表结构)

MySQLWorkbench连接,导入和导出数据库? 1、导出:使用MySQL Workbench连接到MySQL服务器,选择要导出的数据库,右键单击数据库并选择“导出”。选择要导出的表和数据,将导出文件保存为.sql文件。 2、打开MySQL Workbench&#xf…

OpenHarmony 视图缩放组件—subsampling-scale-image-view

简介 深度缩放视图,图像显示,手势平移缩放双击等 效果图(旋转、缩放、平移) 下载安装 ohpm install ohos/subsampling-scale-image-view OpenHarmony ohpm 环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包 使…

20240419金融读报:加大绿色债券支持绿色金融货币政策仍有空间人民银行对金融服务实体理解摘抄

1、国家发文支持通过发行绿色债券、绿色资产支持正确等支持绿色金融。但2023年绿色债券发行规模占比1.17%。(是不是可以买一支,乘风起?) 2、4月18日,国新办举行新闻发布会,表明货币政策还有空间&#xff0c…

简单了解Vue3

1. Vue 3相对于Vue 2有哪些主要的改进? 答案: Vue 3相对于Vue 2的主要改进包括: Composition API:提供更灵活、可重用的代码组织方式。更好的TypeScript支持:减少类型错误,提高代码质量。性能优化&#x…

昂科烧录器支持Nuvoton新唐科技的低功耗微控制器M482SIDAE

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中Nuvoton新唐科技的低功耗微控制器M482SIDAE已经被昂科的通用烧录平台AP8000所支持。 M482SIDAE以Arm Cortex-M4F为核心,是带有DSP指令集的高效能低功耗微控制器。其…

基于Spingboot+vue协同过滤音乐推荐管理系统

项目演示视频效果: 基于Spingbootvue协同过滤音乐推荐管理系统 基于Spingbootvue协同过滤音乐推荐管理系统 1、项目介绍 基于Springboot的音乐播放管理系统总共两个角色,用户和管理员。用户使用前端前台界面,管理员使用前端后台界面。 有推荐…

【Win】怎么下载m3u8视频\怎么通过F12开发人员工具获取视频地址\怎么下载完整的.ts格式视频

怎么下载m3u8视频?首先通过浏览器本地的开发人员工具,获取m3u8的地址,然后再通过第三方下载工具下载,此处以N_m3u8DL-CLI_v3.0.2为例 如下图的步骤,即可获取到视频的m3u8地址 打开N_m3u8DL-CLI_v3.0.2,粘贴…

如何实现外网访问内网ip?公网端口映射或内网映射来解决

本地搭建服务器应用,在局域网内可以访问,但在外网不能访问。如何实现外网访问内网ip?主要有两种方案:路由器端口映射和快解析内网映射。根据自己本地网络环境,结合是否有公网IP,是否有路由权限,…

基于Springboot的社区疫情返乡管控系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的社区疫情返乡管控系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…