news 2026/6/10 13:07:28

中国工商银行支付对接

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
中国工商银行支付对接

一:参考资料

工行支付SDK:https://open.icbc.com.cn/icbc/apip/docs_sdk&demo.html

工行支付资料:https://download.csdn.net/download/huaweichenai/92636164

PHP对接工行支付组件:https://download.csdn.net/download/huaweichenai/92636166

二:支付详解

1.支付地址

https://gw.open.icbc.com.cn/api/cardbusiness/qrcode/qrgenerate/V1

2.支付参数

app_id:APP的编号,应用在API开放平台注册时生成

msg_id:消息通讯唯一编号,每次调用独立生成,APP级唯一

format:请求参数格式,仅支持json

charset:字符集 ,缺省为UTF-8

sign_type:签名类型,本接口为RSA2-RSAWithSha256认证方式,为RSA2

sign:报文签名

timestamp:交易发生时间戳,yyyy-MM-dd HH:mm:ss格式

biz_content:请求参数的集合

请求参数

mer_id:商户线下档案编号

out_trade_no:商户系统订单号

order_amt:订单总金额 单位:分

trade_date:商户订单生成日期 yyyyMMdd

trade_time:商户订单生成时间 HHmmss

pay_expire:二维码有效期 单位:秒,必须小于24小时

notify_url:商户接收支付成功通知消息URL

tporder_create_ip:商户订单生成的机器IP

sp_flag:扫码后是否需要跳转分行 0:否,1:是,默认值0

notify_flag:商户是否开启通知接口 0-否;1-是,默认值0

3.签名生成逻辑

(1)签名原文构造

  • 获取所有请求参数,不包括字节型参数,如文件、字节流,剔除sign字段。
  • 将筛选的参数按照第一个字符的键值ASCII码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值ASCII码递增排序,以此类推。
  • 将排序后的参数与其对.值,组合成“参数=参数值”的格式,并且把这些参数用&字符连接来,此时生成的字符串为待签名字符串。

签名原文示例:

/api/cardbusiness/qrcode/qrgenerate/V1?app_id=XXX&biz_content={"mer_id":"XXX","out_trade_no":"XXX","order_amt":"1","trade_date":"20260206","trade_time":"095241","pay_expire":"3600","notify_url":"XXX","tporder_create_ip":"127.0.0.1","notify_flag":"1"}&charset=UTF-8&format=json&msg_id=XXX&sign_type=RSA2&timestamp=2026-02-06 09:52:41

(2)签名生成

将待签名字符串进行RSA2签名,这里以PHP为例如下:

$privateKey = '提供的签名私钥'; $data = '待签名字符串'; $privateKey = str_replace(["\r", "\n", " "], '', $privateKey); $privateKey "-----BEGIN PRIVATE KEY-----\n".$privateKey."\n-----END PRIVATE KEY-----"; $success = openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256); if (!$success) { echo '签名失败'; exit(); } $signature = base64_encode($signature);

4:接口调用demo示例

$bizContent = [ 'mer_id' => 'xxx',//商户线下档案编号 'out_trade_no' => 'xxx',//商户系统订单号 'order_amt' => '1,//金额 单位:分 'trade_date' => '20260206',//商户订单生成日期 'trade_time' => '100101',//商户订单生成时间 'pay_expire' => '3600',//二维码有效期 'notify_url' => 'http://www.test.com',//商户接收支付成功通知消息URL 'tporder_create_ip' => '127.0.0.1',//商户订单生成的机器IP 'sp_flag' => '0',//扫码后是否需要跳转分行 'notify_flag' => '1',//商户是否开启通知接口 ]; $requestData = [ 'app_id' => 'xxx',//APPID 'msg_id' => 'xxx',//消息通讯唯一编号 'format' => 'json',//请求参数格式 'charset' => 'UTF-8',//字符集 'sign_type' => 'RSA2',//签名类型 'timestamp' => '2026-02-06 10:01:01', 'biz_content' => json_encode($bizContent, JSON_UNESCAPED_UNICODE), ]; //签名 $requestData['sign'] = 'xxx';//签名 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, '接口地址'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($requestData)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 生产环境开启SSL验证 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', ]); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (curl_errno($ch)) { throw new \Exception("HTTP请求失败:" . curl_error($ch)); } curl_close($ch); return $response;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 2:40:02

你可能需要的算法思想——哈希表

在很多算法问题中,我们需要知道某个元素是否出现过、出现了几次,第一次出现的位置在哪里。如果用数组或列表,查找通常需要线性扫描,时间复杂度是 O(n)。即使通过排序配合二分查找,将查找复杂度降为 O(log n)&#xff0…

作者头像 李华
网站建设 2026/6/10 2:03:12

如何高效维护单机版本app和联网版本app

如何高效管理“两个App”的挑战?虽然维护两个版本会增加工作量,但通过合理的架构设计和技术管理,可以大幅降低维护成本。以下是具体方案:方案一:模块化架构 条件编译(最推荐的技术方案) 这是解…

作者头像 李华
网站建设 2026/6/10 9:53:01

算力服务:驱动数字经济发展的核心动力与多元模式解析

在人工智能、大数据分析以及科学计算等领域迅猛发展的当下,算力已然成为推动数字经济发展的核心生产力当中的一个。算力服务,也就是借助云端或者边缘节点来提供能够弹性伸缩的计算资源,正逐步改变企业获取以及使用计算能力的方式。对比于传统…

作者头像 李华
网站建设 2026/6/9 19:38:04

ue 动态换衣服

在关卡蓝图中修改:

作者头像 李华
网站建设 2026/6/10 8:28:43

19v,3.42A的笔记本电脑可以用pd诱骗器接充电宝充电吗?

在快节奏的生活中,时间成为了最宝贵的资源。Type-C PD芯片以其高达100W甚至更高功率传输的能力,彻底颠覆了传统充电方式的局限。它能够在短时间内为笔记本、手机、平板乃至高端游戏机等设备迅速补充电量,极大地缩短了充电等待时间&#xff0c…

作者头像 李华
网站建设 2026/6/10 8:29:32

【Unity】【Photon】Fusion2中的延迟补偿机制(Lag Compensation)学习笔记

介绍 只有服务器模式和主机模式提供延迟补偿机制。 在共享模式中,每个客户端都有权限并决定其击中的目标。这种方式精准,但容易被作弊所利用。 对于客户端服务器游戏而言,延迟补偿解决了快节奏多人游戏中的一个根本问题:即便无法完全信任客户端,也能让其获得所见即所得(…

作者头像 李华