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

前言

因为好多银行的支付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、弹出支付框后,在公众号内部支付,点击支付没有反应,而在微信聊天框中访问支付地址却可以支付。需要在微信公众号开通微信支付。

 

支付宝和微信是中国最知名的移动支付平台,它们在用户量和影响力上都具有很大的优势。支付宝主要由蚂蚁金服运营,而微信支付则是腾讯公司旗下的支付平台。这两个平台通过技术和市场的整合,逐渐形成了移动支付市场的垄断局面。 支付宝和微信支付都具备了快捷、安全、便利的特点,用户可以通过手机APP进行线上和线下的支付。无论是购买商品、转账还是缴纳各类费用,支付宝和微信支付都能提供便捷的支付方式。用户只需扫描二维码或输入相关信息即可完成支付,节省了线下排队等待的时间。 而CSDN是中国领先的专业技术社区,提供了软件开发、IT技术、互联网等领域的最新资讯和技术交流平台。CSDN提供了丰富的学习资源、技术分享和在线交流社区,为广大的软件开发人员、技术爱好者和IT从业人员提供了良好的学习和交流环境。 将支付宝和微信支付与CSDN聚合在一起,可以为用户提供更便捷的支付和技术交流方式。比如,在CSDN平台上购买技术书籍或参加技术培训,用户可以直接通过支付宝或微信支付完成交易;同时,在技术论坛上,用户也可以使用支付宝或微信支付打赏优秀的技术分享者,激励他们分享更多有价值的技术内容。 总之,支付宝和微信支付作为中国领先的移动支付平台,与CSDN的聚合,将为用户提供更加便捷和全面的支付和技术交流服务,促进移动支付和技术发展的融合。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值