有个项目需要基于建行的聚合支付,实现微信、支付宝及龙支付的扫码支付功能。

建行的业务人员扔过来一个包,打开一看,里面的材料貌似还挺全,但随着进入真正到开发调试阶段,才发现自己把事情想的太简单了。

经过反复的“黑盒”调试,终于将N个坑填平,趁热乎赶紧把一些关键信息写下来备忘。

1、生成二维码部分

1)RETURNTYPE:返回类型(聚合支付可选值:2-建行通用的扫码页面,3-返回二维码串,可自定义扫码页面)

2)生成MAC签名摘要时,需要商户的柜台公钥后30位

3)REMARK1和REMARK2可以传递两个备注,但长度不能超过30位,并且要求对中文使用js的escape函数进行编码,what?一个后端接口你告诉我用js进行编码?

4)最害人的坑:在根据参数拼接MAC签名串时,要注意别把Null拼进去,就是说,要提前将Null => 空值

5)如果RETURNTYPE==2,那么只需要与建行服务器进行一次POST请求即可;否则还需要进行一次GET请求。

2、接收支付完成回调

1)回调方式:POST,在实际支付完成后就会立即收到回调请求,如果在短时间内没有响应,会重复请求。

2)验签的大坑:根据天书一般的文档,无数次黑盒调试,得出来的硬道理:文档中对于参数有返回值的意思是:包括空值,但不包括Null。再翻译一下:就算返回值是个空值,也算有返回值,但如果是Null就不算有返回值,就不参与验签。

3)另外一个大坑:在验签时还需要商户柜台公钥,如果还像上面那样只截取后面的30位,就会顺利入坑。因为这次是全部,惊不惊喜意不意外

4)建行很贴心的为验签提供了一个jar包,但使用maven的我表示很无耐

3、其他方面

1)其实在整个开发过程中,业务是很简单的,之所以会有这么多问题,主要就是文档太含糊,很多关键点都没有明确,比如上面提到的空值判断规则、验签规则等等

2)再有就是接口的友好性,调试发生问题时,得不到任何技术上的明确反馈,只有一个错误代码,但很可惜我实在猜不出这个代码的含义。尤其是验签失败时,一脸懵逼

3)建行聚合支付的API应该是16年上线的,时间并不长,但JAVA版本的验签包竟然是基于远古时代的1.4,无法理解,更无法理解的是签名摘要非要用&拼接的方式,效率奇低不说,代码也丑的没眼看。

不管如何,总算还是实现了,末了再多说几句:

从实际需求角度,聚合支付的定位非常好,尤其对于我们软件服务商来说,不必再挨个实现各种支付渠道了,一个聚合支付全搞定

但很显然建行的技术同行们并没有非常认真的对待这件事,也可能是我没有得到正确的文档,但满网找了很久也没找到更标准的官方文档,这方面工行做的要好很多。

最后在技术路线方面更是难以相信这些API是出自堂堂的国有银行,吐槽点无数

邂逅了建行的API之后,才发现,原来腾讯的API是那么的美。

转载于:https://www.cnblogs.com/netWild/p/10865479.html

集成建行聚合支付踩过的坑,有些槽不吐不快相关推荐

  1. SpringBoot 集成第三方聚合支付 微信、支付宝

    SpringBoot 集成第三方聚合支付 1. 创建Spring Boot项目 2. 添加依赖 3. 配置支付宝.微信 4. 实现支付接口 5. 实现支付服务 6. 实现支付回调接口 7. 测试支付 ...

  2. 建行聚合支付及支付宝二维码开发经验(C语言2)

    这篇文章本来是存在有道云中的,修改了部分代码在这里也发表一次吧. 本文章共分为两个部分:第一部分为linux的libcurl库的介绍和使用.第二部分为decode后链接生成二维码的方式. 1.linu ...

  3. 建行聚合支付及支付宝二维码开发经验(C语言)

    由于笔者之前专业只是学习电子电路相关知识,参加工作后接手了一个对接建行的聚合支付二维码项目.之前我更改过设备中支付宝二维码的bug,而不是完整的开发工作.所以这是我第一次真正的对接一个API的项目,让 ...

  4. 记录支付宝手机网站(WAP)支付踩过的坑

    由于苹果审核机制变化,除了JSPatch等热修复的应用受到影响外,另个影响较大的就是非法集成第三方支付SDK(尤其支付宝)而审核被拒.但是由于你懂的的原因,不想走IAP(In App Pay),所以当 ...

  5. php微信支付mch_id参数格式错误,再说一下微信支付踩到的坑 mch_id 参数格式错误...

    微信小程序支付在好久之前写过一次,后来再写的话也是用别人的 SDK 了,之前写的文章好像留了一点坑 博客有发过一篇关于微信小程序支付的文章,见PHP完成微信小程序在线支付功能 贴了代码没有检查,也给 ...

  6. 微信支付踩坑血泪史(JAVA -V3版本)

    背景介绍 最近第一次接触到微信支付,踩了很多坑,赶紧写下来,全是心酸和眼泪.话不多说.开始展示. 项目中使用的接入方式是JSAPI(参考 产品中心 - 微信支付商户平台),当然也可以使用其他接入方式, ...

  7. H5实现聚合支付及踩坑

    最近有个新的需求,H5实现聚合支付功能.页面在微信.支付宝以及云闪付App内实现扫码支付,大体步骤如下. 根据userAgent区分浏览器,决定走哪个回调. 一.获取code 1.云闪付 let re ...

  8. 加入域时出现以下错误 登陆失败 该目标账户名称不正确_微信支付踩坑合集:微信小程序支付失败是什么原因?持续更新...

    微信小程序开发的过程一定会遇到各种问题,最让人棘手的就是支付问题,因为没有支付做商城类似的小程序就没有办法完成最关键的一步.那么支付失败到底什么原因呢?一下子收集了几个错误类似,希望对你有帮助: No ...

  9. Android集成极光推送踩坑(二)升级篇

    转载请标明出处 http://blog.csdn.net/mohan6/article/details/74133186 本文作者:[默寒的博客] 前言 前段时间针对集成极光推送写了篇文章( Andr ...

  10. Android集成极光推送和踩过的坑(一)

    转载请标明出处 http://blog.csdn.net/mohan6/article/details/72960346 本文作者:[默寒的博客] 集成步骤以及集成过程遇到的坑: 这部分主要阐述了集成 ...

最新文章

  1. 数据备份_天津数据备份工具多少钱
  2. 从Proxy到Vue3数据绑定
  3. MQTT--物联网(IoT)消息推送协议
  4. 链表 - 约瑟夫问题
  5. 微软100题第20题
  6. vijos P1740 聪明的质检员
  7. 【干货】快速部署微软开源GPU管理利器: OpenPAI
  8. union c语言大小,Union declaration(联合体声明)
  9. php下的ssm模式,编码风格:Mvc模式下SSM环境,代码分层管理
  10. 最简单的基于FFmpeg的移动端例子:IOS 视频转码器
  11. 软件测试——开发模型、测试模型介绍
  12. Jmeter 调用python3脚本
  13. autojs微博_auto.js的使用以及薅羊毛插件示例
  14. IDEA 使用SequenceDiagram插件绘制时序图
  15. 解读 intriguing properties of neural networks
  16. 从头认识Spring-1.14 SpEl表达式(3)-SpEl表达式的两个坑:Bean的顺序与Bean的toString方法
  17. Error(1.0.5 1107071739): D:\SAE_SDK_Windows_1.0.5\apps\/divjs/1/config.yaml is not existed解决方法...
  18. mpirun mpd mpiexec
  19. 脉冲消融(PFA)中使用心电门控的作用
  20. bootstrap栅栏系统

热门文章

  1. 论游戏电脑CPU和GPU之搭配
  2. Win11键盘锁住怎么恢复?
  3. css ico图标不显示,网站后台ico图标不显示的解决方法
  4. JS事件 内容选中事件(onselect)选中事件,当文本框或者文本域中的文字被选中时,触发onselect事件,同时调用的程序就会被执行。...
  5. 一天破万:二十一个微信公众号推广技巧
  6. java代码取出EXCEL表数据并画折线图
  7. Linux中存放用户密码信息的文件,存放密码过期修改等信息
  8. ABAQUS内核及GUI方法的代理接口
  9. MATLAB命令行窗口常见命令与功能
  10. Markdown文档常用字体及颜色设置