工行支付

payintegrated-development

# 一、支付系统

# 1.1 支付方式

  • 支付宝
  • 微信支付
  • 数字人民币
  • 中国银联

# 1.2 支付计费对比

# 计费模式

支付工具 服务名称 费率 结算周期
支付宝支付 单笔费率 0.6% T+1
微信支付 单笔费率 0.6% T+1

# 1.3 支付安全

# 机密性

  • 明文:加密前的消息叫“明文”(plain text)

  • 密文:加密后的文本叫“密文”(cipher text)

  • 密钥:只有掌握特殊“钥匙”的人,才能对加密的文本进行解密,这里的“钥匙”就叫做“密钥”(key)

    “密钥”就是一个字符串,度量单位是“位”(bit),比如,密钥长度是 128,就是 16 字节的二进制串。

  • 加密:实现机密性最常用的手段是“加密”(encrypt);

    按照密钥的使用方式,加密可以分为两大类:不可逆加密可逆加密

    可逆加密又包含对称加密非对称加密

  • 解密:使用密钥还原明文的过程叫“解密”(decrypt)

  • 加密算法:加密解密的操作过程就是“加密算法”

    所有的加密算法都是公开的,而算法使用的“密钥”则必须保密。

# 不可逆加密

采用Hash算法 +随机盐+密钥进行加密。

常用场景是用户密码加密。有MD5、SHA1、SHA2、SHA256、SHA-512 。

匹配时再使用相同的算法把用户输入的密码进行Hash处理,得到密码的Hash值,然后将其与从数据库中查询到的密钥进行比较(同一种Hash算法,对同一个值进行Hash计算,得到的结果唯一)。

SHA系列是Hash算法,不是加密算法。因为密码经过Hash处理,是不可逆的。

Spring Security中的BCryptPasswordEncoder方法采用SHA-256 HASH算法。

# 摘要算法(Digest Algorithm)

摘要算法就是我们常说的散列函数、哈希函数(Hash Function)。

它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”。

作用

保证信息的完整性.

特性

  • 不可逆:只有算法,没有秘钥,只能加密,不能解密 ;
  • 难题友好性:想要破解,只能暴力枚举 ;
  • 发散性:只要对原文进行一点点改动,摘要就会发生剧烈变化 ;
  • 抗碰撞性:原文不同,计算后的摘要也要不同 ;

常见摘要算法

  • MD5

  • SHA1

  • SHA2(SHA224、SHA256、SHA384)

# 对称加密和非对称加密

  • 对称加密

    特点:只使用一个密钥,密钥必须保密。常用的有DES、 AES等。

    优点:运算速度快。

    缺点:秘钥需要信息交换的双方共享,一旦被窃取,消息会被破解,无法做到安全的密钥交换。

  • 非对称加密

    特点:

    • 使用两个密钥:公钥私钥,公钥可以任意分发而私钥保密。常用的有 RSA、SM2等。

    • 只有使用相匹配的一对公钥和私钥,才能进行加密解密。

      1. 公钥加密,私钥解密的作用是加密信息;
      2. 私钥加密,公钥解密的作用是身份认证。

    优点:黑客获取公钥无法破解密文,解决了密钥交换的问题。

    缺点:运算速度非常慢。

  • 混合加密

    实际场景中把对称加密和非对称加密结合起来使用。

# 数字签名

数字签名是使用私钥对摘要加密生成签名,需要由公钥将签名解密后进行验证,实现身份认证和不可否认。

# 数字证书

数字证书解决“公钥的信任”问题,可以防止黑客伪造公钥。

不能直接分发公钥,公钥的分发必须使用数字证书,数字证书由CA颁发。

https协议中的数字证书:

# 二、工行-聚合支付

工行API开发平台 (opens new window)

# 2.1 支付类型

  • 无感支付(车牌付、智慧停车)
  • 工银e缴费(缴费平台)
  • 二维码扫码支付
  • APP移动在线支付(App支付——通用支付、聚合支付、SDK支付)
  • 微信公众号/支付宝生活号聚合支付(微信/支付宝App)
  • 生物识别支付(人脸识别、虹膜识别、声纹识别)
  • ...

# 2.2 聚合支付介绍

微信/支付宝聚合支付说明文档 (opens new window)

# 应用场景

(1)客户在商户的微信公众号或支付宝服务号中发起支付;

# 功能介绍

(1)微信app内发起支付,实现微信支付功能;

# 2.3 接入准备

工行API开发平台申请流程文档 (opens new window)

# 接入必读

公众号/生活号聚合支付流程包括:

商户提交支付请求→银行接收支付请求→银行引导客户支付→银行反馈结果→商户处理结果通知。

其中,商户提交支付请求商户处理结果通知这两个环节为商户侧需要开发完成的。

目前,公众号/生活号聚合支付涉及的接口包括:

支付接口、支付查询接口、退款接口、退款查询接口

商户必须开发完成支付流程与我行接口的对接。

商户技术人员在开始开发工作前需要做好如下准备:

(1)获取接口文档:根据业务上确认使用的接口版本,从分行获取对应的接口文档链接地址,仔细阅读。

(2)获取APP编号:API平台会给每个已注册的应用自动分配一个APP编号。

(3)获取网关公钥:从分行获取网关公钥,用此对收到的银行支付结果通知进行解密验签。

(4)获取商户密钥:商户使用SDK工具自行生成.pri格式的商户私钥文件和.pub格式的商户公钥文件(开发测试使用),将应用公钥登记到API开放平台,发起调用时传入应用私钥即可。

# 接入步骤

① 注册认证

② 创建应用

③ 申请使用API

④ 开发测试

# 准入条件

① 商户需在工行系统内创建线下POS特约商户档案。档案创建完成后商户需要从工行获取商户代码、商户账户等关键要素。

② 档案中开通微信/支付宝支付开关,并设置相关费率。

③ 获取各接口相关文档。

# 2.4 集成配置SDK

SDK介绍说明文档 (opens new window)

SDK是为调用方(合作方)简化API开放平台调用专门提供的开发工具包,包括密钥生成、服务调用、返回结果解析等功能。

# SDK使用

  • SDK下载
  • SDK开发
  • 生成加密密钥
  • 生成签名密钥

# 2.5 支付API接口

# 聚合支付

生产环境(正式环境)API列表 (opens new window)

API名称 API地址 版本号
公众号聚合支付接口 (opens new window) https://gw.open.icbc.com.cn/ui/aggregate/payment/request/V2 V2
二维码查询 (opens new window) https://gw.open.icbc.com.cn/api/qrcode/V2/query V2
二维码退款 (opens new window) https://gw.open.icbc.com.cn/api/qrcode/V2/reject V2
二维码退款查询 (opens new window) https://gw.open.icbc.com.cn/api/qrcode/reject/query/V3 V3
二维码冲正 (opens new window) https://gw.open.icbc.com.cn/api/qrcode/V2/reverse V2

注意

  1. 使用指定版本下的API接口。
  2. 接口可使用沙箱环境进行测试。

# 2.6 测试

目前工行API开放平台提供沙箱测试环境和联调测试环境2套测试环境供合作方用户进行联调测试。

2套环境所使用的网关地址和测试数据相互独立,在测试开始前需要联系支持人员协助分别提供。

对于目前支持沙箱测试环境的接口建议合作方在测试时先使用沙箱环境进行接口开发规范的测试后再安排联调测试环境的验证。

联调测试环境的数据准备等工作可以和沙箱测试同步进行。

为了保证上线后业务的顺利运行,建议所有合作方上线前都要经过联调测试验证。

# 沙箱测试

沙箱测试说明文档 (opens new window)

沙箱测试环境可以使用沙箱测试数据进行针对接口开发过程中的报文合规性进行检查并提供标准的测试案例库供合作方使用,针对报文不符合规范的请求报文会通过错误提示合作方对报文和接口进行修改。

# 联调测试环境

联调测试环境使用联调测试数据模拟合作方实际上线后的业务场景,后台对接实际工行测试系统,可以对各类测试案例和异常场景进行验证。

联调测试环境需要根据工行的测试时间计划进行测试。

具体计划可通过分行支持人员获取。

1、合作方通过线下方式联系本地分行的支持人员,提供测试接口的清单。

2、支持人员会根据测试接口清单,核实接口是否支持沙箱环境测试,对于支持沙箱环境的接口,支持人员在收到测试接口清单后需要为合作方提供沙箱环境的网关地址和沙箱测试数据,合作方可以根据自身开发进度随时开展测试工作。

3、对于暂不支持沙箱环境的接口和已经完成沙箱测试的合作方,支持人员协助提供联调测试环境的网关地址、测试计划和联调测试数据给合作方,合作方根据工行的测试时间计划开展联调测试验证。

4、对于沙箱测试和联调测试中遇到的问题,分行的支持人员将作为合作方统一对接人员进行问题的跟踪处理和反馈。

# 三、其他

# 二维码支付

二维码支付API接口说明文档 (opens new window)

  • 二维码被扫支付
  • 二维码支付状态查询
  • 二维码退货状态查询
  • 二维码退货