### 工商银行接口说明
#### 业务说明
工商银行B2C支付接口为商家提供了与银行系统的集成方式,使得商家可以方便地实现线上支付功能。该接口文档详细介绍了如何使用工商银行提供的API完成支付过程。
**处理流程:**
1. **客户浏览商品并下单**:客户在商户网站上挑选商品并提交订单。
2. **商户生成支付表单**:商户根据工商银行B2C支付接口v1.0.0.11版的要求生成支付表单。表单包括订单信息和支付信息,并使用工商银行提供的API和商户证书对这些数据进行签名。
3. **客户提交表单至银行**:客户确认支付后,提交表单至工商银行的系统。表单中的`action`属性指向工商银行接收订单信息的servlet。
4. **银行验证订单信息**:工商银行接收表单后,验证订单信息和商户信息。
5. **客户输入交易信息**:验证通过后,显示支付页面,客户输入交易卡号等信息。
6. **银行处理支付请求**:银行处理支付请求,并可能实时通知商户支付结果。
#### 商户接口
- **支付接口**:商户向客户展示的支付表单,包括表单定义、数据定义等。
- **通知接口**:工商银行在支付完成后向商户发送的通知消息,以便商户更新订单状态。
### 支付接口详情
#### 表单定义
表单定义规定了支付过程中商户需要提交给工商银行的数据结构。
- **接口名称(interfaceName)**:标识此次调用的接口,必须为“ICBC_PERBANK_B2C”。
- **接口版本号(interfaceVersion)**:表示使用的接口版本,必须为“1.0.0.11”。
- **交易数据(tranData)**:包含了所有交易数据的XML明文串,使用BASE64编码。此字段必须包含XML头属性,并且整个字段使用BASE64编码。
- **订单签名数据(merSignMsg)**:商户使用工商银行提供的签名API和商户证书对订单数据进行签名后的结果。
#### 交易数据定义
**tranData**字段中的数据遵循特定的格式定义:
- **XML格式**:交易数据必须符合XML标准格式,并使用BASE64编码。
- **XML头属性**:XML文件必须包含标准的XML头信息。
- **明文串**:在BASE64编码前,数据应为XML格式的明文字符串。
- **无多余空白字符**:XML明文中不应包含回车换行符或多余的空格。
### 通知接口详情
#### 表单定义
工商银行完成支付处理后,会使用HTTP协议POST方式向商户提供的地址发送通知消息数据。
- **接口名称(interfaceName)**:必须为“ICBC_PERBANK_B2C”。
- **接口版本号(interfaceVersion)**:必须为“1.0.0.11”。
- **通知数据(notifyData)**:包含了支付结果和其他相关信息的XML明文串,使用BASE64编码。
- **订单签名数据(merSignMsg)**:商户使用工商银行提供的签名API和商户证书对订单数据进行签名后的结果。
#### 通知数据定义
**notifyData**字段中的数据同样遵循特定的格式定义:
- **XML格式**:通知数据必须符合XML标准格式,并使用BASE64编码。
- **XML头属性**:XML文件必须包含标准的XML头信息。
- **明文串**:在BASE64编码前,数据应为XML格式的明文字符串。
- **无多余空白字符**:XML明文中不应包含回车换行符或多余的空格。
### 安全API说明
工商银行为确保交易的安全性,提供了安全API供商户使用。这包括但不限于商户证书管理、签名验证等功能。
### 开发步骤
1. **环境准备**:获取工商银行提供的开发指南、测试环境和必要的API。
2. **接口集成**:根据文档要求集成支付接口和通知接口。
3. **安全设置**:使用工商银行提供的安全API进行数据加密和解密。
4. **测试验证**:在测试环境中模拟支付流程,验证接口的正确性和安全性。
5. **上线部署**:完成测试后,正式部署到生产环境。
### 版本说明
工商银行B2C支付接口的版本迭代记录了接口的发展历程和技术改进:
- **1.0.0.0**:基本支付功能。
- **1.0.0.1**:支持中英文界面。
- **1.0.0.3**:优化通知方式。
- **1.0.0.8**:根据商户上送的是否允许透支标志控制信用卡支付。
- **1.0.0.11**:增加了透支标志控制,增加了商户上送数据,丰富及扩展用户体验,增加了校验商户域名等功能。
工商银行B2C支付接口为商家提供了丰富的支付功能和安全保障措施。商家可以根据自身需求选择合适的接口版本进行集成,并确保遵循工商银行的安全规范。