工行聚合支付二维码全流程开发指南:从生成到退款实战解析

工行聚合支付对接流程及测试 之前已经对接了支付宝微信银联之类的,这次说一下对接工行的聚合支付,首先是工行的接口文档详见工行开放平台地址,实现的主要是线下支付,所以对接的是二维码支付的相关内容,这是工行提供的二维码相关接口 在使用工行的聚合支付之前,需要先申请账号,一般需要商户号,APPID,二维码支付还需要一个e生活档案编号,签名采用的是rsa2,工行的公钥是在他们平台下载的,商户的公私钥可以自己生成然后配置在商户后... 阅读详情

1. 工行聚合支付二维码,到底是个啥?

如果你正在开发一个需要收款的线上商城、线下门店小程序,或者是一个活动报名缴费系统,那么“支付”这个环节你一定绕不过去。自己做一套支付系统?那太不现实了,安全、合规、资金清算,每一个都是大坑。所以,我们通常选择接入像工商银行这样的金融机构提供的聚合支付服务。

工行聚合支付二维码,简单来说,就是工商银行提供的一套“收款工具包”。它把微信支付、支付宝、银联云闪付等多种支付渠道,打包成了一个统一的接口。对于你(开发者)和你的商户来说,好处是显而易见的:你只需要对接工行一家,用户却可以用几乎所有主流的支付方式来完成付款。你不用再分别去申请微信支付、支付宝的商户号,也不用写好几套不同的支付逻辑,省时省力。

这个“工具包”的核心,就是二维码。它主要支持两种支付场景:

  1. 主扫支付(用户扫你):你在收银台、网页或者App里生成一个支付二维码,用户打开手机上的微信或支付宝,扫这个码完成支付。这适合线上商城、自助售货机等场景。
  2. 被扫支付(你扫用户):用户出示他的微信/支付宝付款码,你用扫码枪或者手机摄像头去扫这个码,完成扣款。这适合超市、便利店、餐厅等线下面对面收银的场景。

这篇文章,我就以一个过来人的身份,手把手带你走通工行聚合支付二维码的全流程开发。从最开始的申请接入、生成二维码,到处理支付结果、处理退款,甚至是一些调试中容易踩的坑,我都会结合真实的代码示例,掰开揉碎了讲给你听。目标就是让你看完之后,能真正把功能跑起来,而不是只停留在“知道有这么回事”的层面。

2. 动手之前:环境与材料准备

在开始敲代码之前,有几件“硬装”工作必须完成。这就像装修房子,水电没通,再好的设计也白搭。

2.1 申请与配置:拿到你的“开发钥匙”

首先,你需要去工商银行的开放平台(open.icbc.com.cn)注册成为开发者,并申请开通“聚合支付”产品。这个过程需要提交企业相关资料,有一定的审核周期,建议提前准备。

审核通过后,你会拿到几样至关重要的“钥匙”:

  • AppId:你的应用在工行平台的唯一标识。
  • 商户号(Mer_ID):你在工行体系内的商户身份编号。
  • 公私钥对:这是安全通信的基石。你需要在工行平台生成一对RSA密钥,将公钥上传到平台,而私钥则必须妥善保存在你的服务器上,绝不能泄露。后续所有的请求签名验证都靠它。
  • API网关地址:所有接口调用的统一入口,通常是 https://gw.open.icbc.com.cn/api/。

我建议你在项目里专门建一个配置类来管理这些信息,比如叫 ICBCPayConstants。别把这些敏感信息硬编码在业务逻辑里,最好放在配置文件(如 application.yml)中,方便不同环境(开发、测试、生产)切换。

// 示例:一个简单的配置类
public class ICBCPayConstants {
    // 从配置文件中注入,这里用静态变量示例
    public static String AppId = "你的AppId";
    public static String Mer_ID = "你的12位或15位商户号";
    public static String Store_Code = "你的e生活档案编号"; // 如有
    public static String SIGN_TYPE_RSA2 = "RSA2";
    public static String private_key = "-----BEGIN PRIVATE KEY-----\n你的私钥内容\n-----END PRIVATE KEY-----";
    public static String public_key = "-----BEGIN PUBLIC KEY-----\n你的公钥内容\n-----END PUBLIC KEY-----";

    // API地址
    public static String generateQrcodeURL = "https://gw.open.icbc.com.cn/api/qrcode/V2/generate";
    public static String scanPayURL = "https://gw.open.icbc.com.cn/api/qrcode/pay/V4";
    public static String queryPayResultURL = "https://gw.open.icbc.com.cn/api/qrcode/query/V5";
    public static String payRejectURL = "https://gw.open.icbc.com.cn/api/qrcode/V2/reject";
    public static String queryRejectResultURL = "https://gw.open.icbc.com.cn/api/qrcode/reject/query/V3";
    // 注意:冲正接口地址请以最新文档为准
}

2.2 工行SDK:你的“瑞士军刀”

工行提供了官方的Java SDK,这能极大简化我们的工作。你不需要自己去组装复杂的请求报文、计算签名、处理加密解密。SDK把这些脏活累活都封装好了。

你需要去工行开放平台的文档中心,找到聚合支付二维码的SDK下载链接。下载后,将其引入到你的项目中。如果你使用Maven,可以将SDK的Jar包安装到本地仓库,或者上传到公司私服,然后在 pom.xml 中依赖它。

<!-- 示例:假设SDK的groupId和artifactId,具体以你下载的SDK为准 -->
<dependency>
    <groupId>com.icbc.openapi</groupId>
    <artifactId>icbc-api-sdk</artifactId>
    <version>最新版本</version>
</dependency>

引入SDK后,核心的“工具”就是 DefaultIcbcClient 这个类。我们后续所有接口调用,都会通过它来完成。初始化它需要上面准备好的AppId、签名类型、私钥和工行公钥。

3. 核心实战一:生成收款二维码(主扫支付)

这是最常用的场景。用户在你这儿选好商品,点击支付,你的后台生成一个二维码图片展示给用户,用户扫码付钱。

3.1 接口调用与参数详解

生成二维码的接口地址是:/api/qrcode/V2/generate。调用这个接口,核心是构造两个对象:请求客户端(DefaultIcbcClient)和请求内容(QrcodeGenerateRequestV2Biz)。

我结合代码,把几个关键参数给你讲透:

@Service
public class IcbcPayServiceImpl implements IcbcPayService {
    private static final Logger logger = LoggerFactory.getLogger(IcbcPayServiceImpl.class);

    @Override
    public Map<String, Object> generateQrcode(Map<String, Object> orderData) {
        // 1. 初始化客户端(建议复用,不要每次创建)
        DefaultIcbcClient
工行聚合支付避坑指南:二维码支付对接常见的5大错误及解决方案 本文深入剖析了工行聚合支付在生产环境中对接二维码支付时常见的五大核心问题,包括支付请求超时重试、签名校验陷阱、异步通知可靠性、状态管理及对账文件解析。针对每个问题,提供了从网络分析到代码实现的实战解决方案,旨在帮助开发者构建高可用、高可靠的支付系统,有效规避资金风险与运维难题。 阅读详情

相关推荐

工行icbc 在线支付jar包下载及maven导入本地库

1.需要导入jar包 工行icbc jar包下载地址:icbc jar包资源 2.maven命令

排长性感的小屁屁 2798

聚合支付系统如何开发?

聚合支付的未来不可限量 二维码支付被监管层放开后,移动支付行业增速更加迅猛,行业的发展带动海量线下中小商户对移动支付服务的需求。而如果没有聚合支付工具做中小商户与支付宝、微信、百度钱包等支付方式之间的桥梁,移动支付将变得很繁琐。另一方面,持牌的第三方支付企业无法做到对市场的全覆盖,也需要类似聚合支付的机构帮助开拓外部渠道。因此,聚合支付变得举足轻重。 未来,聚合支付将在以下几个方面发力。 1...

q744803399的博客 4456

工行java sdk及实例

工行的sdk跟实例,很全面的demo。只有java语言.用的是dubbo框架

icbc-api-sdk-cop_v2_20210224.zip

工行api!包含所有需要的jar包 和所有的工具类

icbc-api-sdk-cop_v2_20190806.zip

工商银行第三方支付JAVA demo 1.获取工行API在线文档地址:https://open.icbc.com.cn/icbc/apip/api_list.html       2.拿到相应的业务参数,包括publicKey,privateKey,appId,merId,storeCode等参数       3.获取相应Demo开发包:https://open.icbc.com.cn/icbc/apip/docs_sdk&demo;.html       4.根据自己的相应业务场景需要,打开相应的demo文件(开发包中有几百个业务场景,并且根据不同版本有不同的demo示例,需要我们找到自身的版本及业务场景获得正确的代码)

icbc工行B2C在线支付完整sdk

这个是icbc下b2c最大的开发包,所有的语言都在里面,版本比较低但是够用,这个很难找

ICBC工商银行在线支付各种SDK(仅供参考).rar

这个是icbc工商银行下b2c最大的开发包,所有的语言都在里面,版本比较低但是够用,仅供参考不喜勿喷!

工行聚合支付API文档.doc

工商银行聚合支付

STM32C8T6HAL库实战:MAX30102心率血氧检测与OLED多级菜单一体化方案

本文详细介绍了基于STM32C8T6和HAL库的MAX30102心率血氧检测与OLED多级菜单一体化方案。内容涵盖硬件连接、CubeMX工程配置、传感器驱动移植、数据滤波算法、OLED显示驱动以及高效的多级菜单系统设计,旨在提供一个稳定、实用且易于移植的嵌入式健康监测项目参考。

weixin_29256771的博客 397

从零构建安全通信:mbedtls与ECDSA在嵌入式系统中的实战指南

本文详细介绍了如何在嵌入式系统中使用mbedtls和ECDSA实现安全通信,重点探讨了ECDSA相比RSA的优势、mbedtls的模块化裁剪策略、密钥安全存储方案以及完整的签名验签流程。通过实战案例和优化技巧,帮助开发者在资源受限环境下构建高效可靠的安全通信系统。

weixin_28338005的博客 685

从AMBA到USB:手把手教你评估和选择Synopsys DesignWare里的免费商用IP

本文详细介绍了如何评估和选择Synopsys DesignWare中的免费商用IP,从AMBA到USB等关键模块。通过技术参数核对、验证环境评估和集成注意事项,帮助工程师高效利用这些经过硅验证的商业级IP,提升SoC设计效率。文章还探讨了免费IP与付费IP的边界策略,避免常见陷阱。

weixin_42683394的博客 297

为什么需要知识图谱?什么是知识图谱?——KG的前世今生

我的知乎专栏,对知识图谱感兴趣的朋友可以关注。标题的命名顺序可能让有的读者不太习惯。通常在介绍一个陌生事物的应用前,我们先给出其定义。之所以换个顺序,是为了不让读者一开始就接触比较冰冷生硬的概念刻板描述(后面我尽量用更具体、准确的例子来表达),另一方面也是为了通过现实生活中的例子自然的引入知识图谱的概念。希望通过这种方式加深读者的印象和理解。为了减轻读者理解的负担,我尽可能地避免引入过多的概念和技术

SimmerChan的专栏 8万+

AutoSAR系列讲解(深入篇)14.7-Mcal Adc配置(上)

详细讲解了ADC的各个配置项的作用

雪云飞星的博客 1万+

损失函数大汇总(三十八)(AUCPR Loss附公式推导与代码)

本文系统介绍了AUCPR Loss的原理与应用。针对不平衡分类任务中AUC指标不够敏感的问题,提出通过优化PR曲线面积(AUCPR)来提升模型性能。文章详细推导了AUCPR的可微近似实现:首先用sigmoid函数软化阈值判断,构造可微的TP/FP/FN计数;然后基于软Precision和Recall计算近似PR曲线面积;最后通过数值积分得到可优化的损失函数。特别讨论了温度参数τ对训练稳定性的影响,并比较了AUCPR与AUC、AP等指标的异同。该方法适用于医学筛查、欺诈检测等极端不平衡场景,能更准确反映模型对

悦学共鸣,温柔以待,汇聚光芒,共同成长 441

基于Python实现身份证信息识别

身份证是一种重要的证件,包含了个人的基本信息,如姓名、性别、出生日期、住址等。在实际应用中,有时需要对身份证进行自动化的识别,以提高工作效率和准确性。本文将介绍如何使用Python实现身份证信息的识别,通过图像预处理、OCR技术和解析算法,实现对身份证号码和其他信息的提取和解析。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

上一篇: VCS覆盖率报告生成全攻略:从code coverage到function coverage的实战配置
下一篇: 5分钟搞定易班优课YOOC自动答题:JavaScript绕过答案隐藏脚本实战
work3
博客等级 码龄1天 0粉丝 1266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值