前言

因为好多银行的支付SDK实例都是java的比较多,所以银行的支付用PHP比较难做,尤其是工商银行的支付更加是步步是坑。头一次对接工商银行,弄了好久,终于成功。这篇博客只是我做工行的聚合支付时,遇到的一些问题以及解决方法。

商户接入聚合支付前准备工作

1、熟悉支付的操作流程,详细阅读相关的文档。

2、准备相关的参数,工行聚合支付主要有两个接口,一个是支付接口,另一个是异步商户通知接口。支付接口除了文档上的要传的必要参数,主要的参数有银行提供的appid和商户id mer_id。自行下载java SDK生成app私钥和app公钥以及加密参数的AES密钥AES_KEY,文档中自行下载网关公钥。

3、工行的接口地址:https://open.icbc.com.cn/icbc/apip/api_list.html

找到收单服务中的聚合支付。

4、确保银行提供的参数正确,以及开通了相关接口。

应用场景

公众号或者生活号上选择商品支付完成(微信支付或者支付宝支付)后,款额流入银行开通好的工行卡。完成收单。

开发流程

调用sdk中的类,传递参数生成form,银行sdk内部实现调用银行接口判断参数是否正确,正确的话跳转微信支付页,弹出支付密码框。

开发实例

include_once ('icbc.UiIcbcClient');
date_default_timezone_set(\IcbcConstants::$DATE_TIMEZONE);
$msg_id = 'aa' . rand(10000000, 999999999);
$content = array("interface_version" => "1.0.0.1","mer_id" => config::get('sdkparam.icbc')['mer_id'],"tp_app_id" => 'gh_594087ba8d2b',"tp_open_id" => session('openId'),"out_trade_no" => $out_trade_no,"tran_type" => "OfflinePay","order_date" => date("YmdHis", $_SERVER['REQUEST_TIME']),"end_time" => date("YmdHis", $_SERVER['REQUEST_TIME'] + 300),  // order_date之后5分钟"goods_body" => $goods_body,"goods_detail" => "{'good_name':$goods_name,'good_id':$good_id,'good_num':'1'}","order_amount" => bcmul($recharge_amount, 100), //总金额(单位分)"spbill_create_ip" => $_SERVER['REMOTE_ADDR'],"install_times" => "1","return_url" => "http://jdhc.linkunst.com/index/pay/successful", // 支付回显"notify_url" => "http://jdhc.linkunst.com/index/pay/notify", // 支付结果通知"notify_type" => "HS","result_type" => "0","type_meter" => $recharge_type,
);
$json_content = json_encode($content);
$request = array("serviceUrl" => 'https://gw.open.icbc.com.cn/ui/aggregate/payment/request/V2',"method" => 'POST',"isNeedEncrypt" => true,"extraParams" => null,"biz_content" => $json_content,
);$client = new \UiIcbcClient(Config::get('sdkparam.icbc')['app_id'],Config::get('sdkparam.icbc')['private_key'],\IcbcConstants::$SIGN_TYPE_RSA2,'UTF-8','json','',Config::get('sdkparam.icbc')['encrypt_key'],'AES','','');
$resp = $client->buildPostForm($request, $msg_id, '');
echo $resp;

避坑指南

1、sdk中DefaultIcbcClient.php参数补全,根据提示自行补全。(缺少CA密码$this->password)

2、常量配置类中时区改成Asia/Shanghai,不然后续支付的时候会提示参数错误。

3、UI界面调用UI接口,即https://gw.open.icbc.com.cn/ui/aggregate/payment/request/V2,如果调用https://gw.open.icbc.com.cn/api/aggregate/payment/request/V2会报http 307

4、确保配置的参数完全正确,详细阅读接口文档。

5、弹出支付框后,在公众号内部支付,点击支付没有反应,而在微信聊天框中访问支付地址却可以支付。需要在微信公众号开通微信支付。

php 工商银行开放平台聚合支付(微信公众号,支付宝生活号)对接避坑指南相关推荐

  1. php微信开放平台获取openid,微信公众平台获取openid

    微信公众平台可以通过接口获取用户的openid,但是获取用户信息的时候需要做一次跳转. 我在后台有一张用户表,用户如果关注了公众平台就将他的信息录入到数据库,包括openid.现在要做一个简单的系统, ...

  2. 微信公众开放平台开发02---微信公众平台PHP接口和java接口对比

    微信公众开放平台开发02---微信公众平台PHP接口和java接口对比 技术qq交流群:JavaDream:251572072 ----------------------------------- ...

  3. 微信公众开放平台开发01---微信公众平台介绍,以及开发准备

    微信公众开放平台开发01---微信公众平台介绍,以及开发准备 技术qq交流群:JavaDream:251572072 部分内容收集于网络: 1.先分享一份源码: 微信公众开放平台开发 -智能机器人ja ...

  4. 平台化思维——微信公众号研究

    前言 很多年前读过一本书<重构-改善既有的代码>,里面有一个能快速提升编程水平的方式就是,代码中需要尽量减少重复的部分,1000行代码可以优化为800行,800行可以优化到500行,方法就 ...

  5. python微信库有哪些_GitHub - zwczou/weixin-python: 微信SDK - 包括微信支付,微信公众号,微信登陆,微信消息处理等...

    微信SDK 提供微信登陆,公众号管理,微信支付,微信消息的全套功能 文档目录 如果需要单独使用其中的某些模块,可以见文档目录的具体模块 如果需要组合在一起可以参考快速开始 目录 安装 使用pip su ...

  6. 公众号自动回复不生效php,php,微信公众平台开发者_微信公众号开发者自动回复设置没反应,php,微信公众平台开发者 - phpStudy...

    微信公众号开发者自动回复设置没反应 在新浪sea平台设置了微信公众号应用,设置关注自动回复功能,接口设置成功,,代码写好,url也修改代码的页面,但是测试后没反应. //define your tok ...

  7. UNI-APP/VUE 项目集成 微信SDK /微信开放标签 教程和避坑指南(下)——微信开放标签篇

    UNI-APP/VUE 项目集成 微信开放标签 教程和避坑指南 文章同步发布于

  8. UNI-APP/VUE 项目集成 微信SDK /微信开放标签 教程和避坑指南

    UNI-APP/VUE 项目集成微信SDK教程和避坑指南 文章同步发布于

  9. @程序员,区块链开发平台避坑指南!

    来源 | Michiel Mulders 译者 | 火火酱 责编 | Carol 出品 | 区块链大本营(blockchain_camp) 市面上有很多不同的区块链网络,就可扩展性和功能而言,每个区块 ...

最新文章

  1. C++11之基于范围的for循环
  2. Javascript调用OCX控件
  3. 10.Spark之RDD及编程接口
  4. Intellij IDEA 自动生成 serialVersionUID
  5. 【CodeForces - 1082B】Vova and Trophies (贪心模拟,暴力)
  6. 图像处理之基础---大话小波和卷积
  7. 如何充分利用好大数据的价值
  8. 从一个PHP数据生成 CSV 文件
  9. 基于linux的贪吃蛇游戏设计_基于Unreal4的战棋类游戏《棋行傀儡》的设计与实现...
  10. Windows XP 默认蓝色桌面的 RGB
  11. otn与stn网络_光通信网络
  12. 花生壳域名穿透 网站无法访问
  13. 小A与小姐姐给气球涂色[dp + 快速幂]
  14. 小米十周年,雷军卖情怀
  15. VR测试视频源,双目立体视觉测试视频,大分辨率2880x1440-25fps
  16. 企业如何做好数据防泄漏需求分析
  17. 创建create-react-app myapp项目报错
  18. 如何入门python爬虫?
  19. 敲击键盘后字符怎么出现在显示器
  20. 交互方式的系统总结:如何让App拥有一个有趣的“灵魂”?

热门文章

  1. 处理软件宗教争论和建筑狂热
  2. ARTS001 - 翻译 (About Log4j)
  3. 监控进程的内存占用,CPU消耗,并将结果写入csv文件中
  4. Ubuntu——外接显示器(显示屏)无法正常使用的一种解决办法
  5. smartart组织架构图
  6. xp怎么卸载java环境_怎么卸载原来的XP系统?
  7. 腾讯云CentOS7.0使用yum安装mysql及使用遇到的问题
  8. 将EXCEL表格数据导入hive中
  9. Leangoo看板协作工具企业实践
  10. Python自动操作GUI神器PyAutoGUI