hb-20260724155322/README.md

152 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 文档概述1111111
- 接口总数1个
- 文档版本2.0.0
## 认证与安全
### 安全控制
接口采用 **HTTPS + 数据签名** 的方式来保证商户与手机支付平台间的身份验证、中间信息传递的完整性,实现交易身份辨识、不可抵赖、防止篡改。
### 签名机制
签名算法分为 **MD5****RSA** 两种。
1. **MD5签名**
- 在待签名数据之后加上商户密钥signKey64位密码串生成MD5摘要用于签名。
- 商户密钥由手机支付平台提供给商户。
2. **RSA签名**
- 配合SHA-1数字签名算法实现数字签名功能。
- 商户系统发送请求时:使用**商户的私钥**对签名值进行RSA加密手机支付系统使用**商户的公钥**进行校验。
- 手机支付系统返回数据时:使用**手机支付的私钥**对签名值进行RSA加密商户使用**手机支付的公钥**进行校验。
- 无需使用双方约定的商户密钥,减少密钥泄漏风险。
### 签名方法
1. **签名源**:请求参数按文档顺序(表格中从上到下顺序)拼接,其中 `hmac`、`merchantCert`、`serverCert` 字段不参与签名。
2. 手机支付平台返回的中文字段先进行签名,再做 UTF-8 转码。
### 密钥来源
- **商户号merchantId**手机支付平台提供给商户的唯一标识ID号。
- **商户密钥signKey**手机支付平台提供给商户用于接口调用的MD5数字签名算法的64位密码串。
- 获取方式:登录手机支付平台 https://cmpay.10086.cn/merchant/index.jsp → "安全中心" → "密钥管理中心"。
## 接口列表
### 接口 1退款接口
- **路径**`/ips/cmpayService`
- **方法**POST基于HTTPS
- **描述**:通过中国移动手机支付渠道,商家可以将已成功交易的款项退还给用户。
- **提交地址**
- 生产环境:`https://ipos.10086.cn/ips/cmpayService`
- 测试环境:`https://uatipos.10086.cn/ips/cmpayService`
-测试环境有网络限制需提供服务器出访公网固定IP生产环境无网络限制。
#### 请求参数
| 参数名 | 参数命名 | 最大长度 | 类型 | 说明 | 可否为空 |
|--------|---------|---------|------|------|---------|
| 商户编号 | merchantId | Max(50) | String | 手机支付平台给商户分配的唯一标识 | 否 |
| 商户请求号 | requestId | Max(50) | String | 商户请求的交易流水号,需要唯一,只代表当次退款接口的请求流水号,与下单接口中商户请求号无关联 | 否 |
| 签名方式 | signType | Max(3) | String | 只能是 MD5 或 RSA | 否 |
| 接口类型 | type | Max(20) | String | OrderRefund | 否 |
| 版本号 | version | Max(10) | String | 2.0.0 | 否 |
| 商户订单号 | orderId | Max(50) | String | 需要退款的商户订单号 | 否 |
| 退款金额 | amount | Max(10) | Number | 退款金额,以分为单位 | 否 |
| 商户证书公钥 | merchantCert | - | - | 不参与签名;如果 signType=RSA此项也不需要传值 | 是 |
| 签名数据 | hmac | - | - | 获得 hmac 的方法见签名算法,参数顺序按照表格中从上到下的顺序,但不包括本参数 | 否 |
**签名参数顺序用于生成hmac**merchantId, requestId, signType, type, version, orderId, amount按表格从上到下顺序不包括merchantCert和hmac
#### 响应参数
| 参数名 | 参数命名 | 最大长度 | 类型 | 说明 | 可否为空 |
|--------|---------|---------|------|------|---------|
| 商户编号 | merchantId | Max(50) | String | 手机支付平台给商户分配的唯一标识 | 否 |
| 流水号 | payNo | Max(50) | String | 手机支付平台返回的退款交易流水号退款接口请求参数中商户请求号requestId在和包侧对应的和包退款流水号 | 否 |
| 返回码 | returnCode | Max(10) | String | 提示各类相关信息000000和MCG00000表示当次退款请求成功其余判断为退款请求失败。该字段不代表退款最终结果退款最终结果请以返回参数中status字段的值做判断 | 否 |
| 返回码描述信息 | message | Max(256) | String | 返回码信息提示 | 是 |
| 签名方式 | signType | Max(3) | String | 只能是 MD5 或者 RSA | 否 |
| 接口类型 | type | Max(20) | String | OrderRefund | 否 |
| 版本号 | version | Max(10) | String | 2.0.0 | 否 |
| 退款金额 | amount | Max(10) | Number | 退款的金额,单位为分 | 否 |
| 商户订单号 | orderId | Max(50) | String | 需要退款的商户订单号 | 否 |
| 退款结果 | status | Max(10) | String | 退款结果。成功SUCCESS失败FAILED | 否 |
| 服务器证书公钥 | serverCert | Max(3000) | String | 若signType=RSA该字段值为返回报文的验签使用的密钥 | 是 |
| 签名数据 | hmac | - | - | 以上请求参数生成的签名串获得hmac的方法见签名算法参数顺序按照表格中从上到下的顺序但不包括证书公钥和本参数 | 否 |
**响应签名参数顺序用于验证hmac**merchantId, payNo, returnCode, message, signType, type, version, amount, orderId, status按表格从上到下顺序不包括serverCert和hmac
#### 请求示例
```
hmac=441C1E65A2254E167EBF39E86BC1F0B7A82400B365D21BB072C6F960F304061BEA3204A72F0B45700DF1DFFE55DD622B91B973C6E4EC6665777E16E3D63E2FB07F8D041EAB8B1ECDBC726BEC2F8DC8856D315FAFA27E89191133D304ED8E356B999F86669A784CB2458E425D54A64126FC198D82DEB6B338F1943CBD9344506E1B7283EFB013D18101FD63D8103F5D57A0729E150CCE8AA7E07DD6B641176A2210EAA36C38214273BB1B9F5096FBDD9A292D7A724F0BCA3FFD630DC419FB7C2093063EA144041E28CF2A294F3A708544418046E43DF93E53E6DD935FC2BA4105F29ACDD4D240B8A9E2C58496673C9DD6C1270EE72E0E6E2F73F475B67367CC9D&&merchantId=888009941110054&requestId=20211105053044&signType=RSA&type=OrderRefund&version=2.0.0&orderId=20211105045315&amount=1
```
#### 响应示例
```
merchantId=888009941110054&payNo=205206151912517707&returnCode=000000&message=SUCCESS&signType=RSA&type=OrderRefund&version=2.0.0&amount=1&orderId=20211105045315&status=SUCCESS&serverCert=3082042030820308A003020102020420B82E72300D06092A864886F70D0101050500302F310B300906035504061302434E3120301E06035504030C17434D434120456E74657270726973652043415F32303438301E170D3230303830363031343834395A170D3232303830363031343834395A3076310B300906035504061302434E310F300D06035504080C06E6B996E58D97310F300D06035504070C06E995BFE6B2993145304306035504030C3CE4B8ADE59BBDE7A7BBE58AA8E9809AE4BFA1E99B86E59BA2E6B996E58D97E69C89E99990E585ACE58FB8E794B5E5AD90E59586E58AA1E4B8ADE5BF8330820122300D06092A864886F70D01010105000382010F003082010A028201010092FCBC26F1107D35B966C0C098B1F31F8313103A29DC5C78A8056D1AFAC1E5BAA89F5AEE6D3E737D3554AE815040AD5A5D9BAF5BB5B4B45AA5622335E3B9F48D9C05DF29248DF944544D414513F37DFE7F618D0C62B24E1E90CFD1790791861E20FDEFC4288EA4BF906EE1A6B576D9FDE6108CF5A1ED01D1931F2C72AED5393AE9CB668BBF629B25A239E09C54D45B565FBA040963B011C7B80F7C93D4695F4568F6358D591FBCB1073C2583630EC858B7C21F5B7CBB8CC05431D93F4AC358F78A06D6E40D1C033083F403697C12A0A99FF6363D792F624B66FCA655E7057686BA5093A8F68597DB8F40865081A3EB43C1C52E91D35F83F9FF3BF40C9901D08B0203010001A381FC3081F930370603551D250101FF042D302B06082B0601050507030206082B0601050507030106096086480186F8420401060A2B0601040182370A0303301F0603551D23041830168014972A89BEE6A2AA3FA666133AE36A3FBA5D86697130710603551D1F046A30683066A02FA02D862B687474703A2F2F7777772E636D63612E6E65742F646F776E6C6F61642F63726C2F43524C3134322E63726CA233A431302F3120301E06035504030C17434D434120456E74657270726973652043415F32303438310B300906035504061302434E300B0603551D0F0404030200B1301D0603551D0E04160414F713DA66CF8A1F30440D83455C2AFC6560B040B6300D06092A864886F70D010105050003820101002AD8B85ABEEAE53C6002381120F7D6B23620464197FBBDB093D4BB98AF256E335F55A67E32BFDF165BB1E2DDA997A0727086D26F8427FE6B77F6F00C6168CE715E8D298D5EB47B7227CDB8094CB1047CBDEA3D911903DCAA57131DEE1CD0069BBF8C7940A3E68438CCCA1949FF045F7349AA865F7FAC7170B7D7339DEBC46930FF9B241200440EAFD280F868C13364D13ECEB04EA702D0479862F9590813AB94BE38DC84E366B884174731464111A1AFEB199E1D7D518651BB5F430926286CA2B5619CD54689F5851A231C1605146D4ACD6CCC54DB79CC49F992083D5DEACAFDDC2B8777B13B7D63FF7E35D1098BEFD6B550EC3328ECE0224F5AAD6C2B83FB85&PUB_CERT=3082042030820308A003020102020420B82E72300D06092A864886F70D0101050500302F310B300906035504061302434E3120301E06035504030C17434D434120456E74657270726973652043415F32303438301E170D3230303830363031343834395A170D3232303830363031343834395A3076310B300906035504061302434E310F300D06035504080C06E6B996E58D97310F300D06035504070C06E995BFE6B2993145304306035504030C3CE4B8ADE59BBDE7A7BBE58AA8E9809AE4BFA1E99B86E59BA2E6B996E58D97E69C89E99990E585ACE58FB8E794B5E5AD90E59586E58AA1E4B8ADE5BF8330820122300D06092A864886F70D01010105000382010F003082010A028201010092FCBC26F1107D35B966C0C098B1F31F8313103A29DC5C78A8056D1AFAC1E5BAA89F5AEE6D3E737D3554AE815040AD5A5D9BAF5BB5B4B45AA5622335E3B9F48D9C05DF29248DF944544D414513F37DFE7F618D0C62B24E1E90CFD1790791861E20FDEFC4288EA4BF906EE1A6B576D9FDE6108CF5A1ED01D1931F2C72AED5393AE9CB668BBF629B25A239E09C54D45B565FBA040963B011C7B80F7C93D4695F4568F6358D591FBCB1073C2583630EC858B7C21F5B7CBB8CC05431D93F4AC358F78A06D6E40D1C033083F403697C12A0A99FF6363D792F624B66FCA655E7057686BA5093A8F68597DB8F40865081A3EB43C1C52E91D35F83F9FF3BF40C9901D08B0203010001A381FC3081F930370603551D250101FF042D302B06082B0601050507030206082B0601050507030106096086480186F8420401060A2B0601040182370A0303301F0603551D23041830168014972A89BEE6A2AA3FA666133AE36A3FBA5D86697130710603551D1F046A30683066A02FA02D862B687474703A2F2F7777772E636D63612E6E65742F646F776E6C6F61642F63726C2F43524C3134322E63726CA233A431302F3120301E06035504030C17434D434120456E74657270726973652043415F32303438310B300906035504061302434E300B0603551D0F0404030200B1301D0603551D0E04160414F713DA66CF8A1F30440D83455C2AFC6560B040B6300D06092A864886F70D010105050003820101002AD8B85ABEEAE53C6002381120F7D6B23620464197FBBDB093D4BB98AF256E335F55A67E32BFDF165BB1E2DDA997A0727086D26F8427FE6B77F6F00C6168CE715E8D298D5EB47B7227CDB8094CB1047CBDEA3D911903DCAA57131DEE1CD0069BBF8C7940A3E68438CCCA1949FF045F7349AA865F7FAC7170B7D7339DEBC46930FF9B241200440EAFD280F868C13364D13ECEB04EA702D0479862F9590813AB94BE38DC84E366B884174731464111A1AFEB199E1D7D518651BB5F430926286CA2B5619CD54689F5851A231C1605146D4ACD6CCC54DB79CC49F992083D5DEACAFDDC2B8777B13B7D63FF7E35D1098BEFD6B550EC3328ECE0224F5AAD6C2B83FB85&hmac=00AAA308D1AA66B2E534D9177B408B55A0CC14F8B27ACE59F08150E66E51858F18070A0DD629FCBD47BB1A98A632DB3F492213A92F14885043EC68BD8180E58ED742D748B708B281693226A7D3BF326B812BA45E7E7D13B4D52498B3C6C83380827CD741A9EF0D99B1C96588C2BE56C79BDFC3813CA4E627142BA7717FFFB43BE53F9B3F2A6D3112D83A90C3D3859A8456BC892E6E960FE56F36F829FAFA7CAEF19D01D10C0BD2F2538827CFF4C642BBAA6423AED0CB8E0D980D7D0BDEB4B1A04B9DAC8867B724527423038D953603A07018BEC1980AD31EDD3E88977F72795DCFB0B3B674FA91A6443F9F0DB67B485B3F3AD5E48AA26F3641E44B64FC7B0920
```
## 错误码
| 错误码 | 说明 | 处理建议 |
|--------|------|----------|
| 000000 | 退款请求成功不代表退款最终结果需以status字段为准 | - |
| MCG00000 | 退款请求成功不代表退款最终结果需以status字段为准 | - |
| C01088 | 退货金额域非法 | 检查退款金额参数 |
| C01081 | 产品名称域越界 | 检查产品名称参数 |
| C01033 | 产品名称域为空 | 检查产品名称参数 |
| C01030 | 有效期单位域不合法 | 检查有效期单位参数 |
| C01028 | 有效期数量域为0 | 检查有效期数量参数 |
| C01027 | 有效期数量域为空 | 检查有效期数量参数 |
| C01025 | 订单日期域不合法 | 检查订单日期参数 |
| C01024 | 订单日期域为空 | 检查订单日期参数 |
| C01019 | 币种域取值不合法 | 检查币种参数 |
| C01018 | 币种域为空 | 检查币种参数 |
| C01014 | 订单金额域为空 | 检查订单金额参数 |
| D99981 | 订单已过期 | 确认订单是否在有效期内 |
| D23190 | 退款日期超过最大有效期 | 确认退款日期是否超期 |
| D22407 | 退款金额大于可退款金额 | 检查退款金额是否超过可退金额 |
| D22401 | 退货金额大于可退货金额 | 检查退货金额 |
| D22208 | 订单状态异常 | 详询cmpay网站除了订单号重复外requestID也不能重复 |
| D22201 | 订单不存在 | 确认订单号是否正确 |
| D22224 | 账户支付方式不正确 | 联系CMPAY网站检查type值及bankAbbr |
| D77040 | 商户没有开通此类交易的权限 | 联系平台确认权限 |
| IPS0008 | 签名不符,一般都是由于中文编码引起 | 检查签名算法和编码UTF-8 |
| IPS0001 | 一般都是因为商户编号或者密钥不对引起 | 检查商户编号和密钥 |
## 回调通知
文档中提及了两种通知机制(在业务术语中定义),但退款接口本身未提供具体的回调通知参数和地址配置说明:
- **页面通知**:页面跳转同步通知,手机支付系统处理完后,当前页面自动跳转回商户网站,携带处理结果信息。
- **后台通知**:服务器异步通知,手机支付平台主动发起通知给商户网站,携带处理结果信息。
## 附录:银行代码对照表
(保留完整对照表供参考)
| 银行代码 | 银行名称 | 银行代码 | 银行名称 |
|---------|---------|---------|---------|
| ICBC | 工商银行 | HSB | 徽商银行 |
| CMB | 招商银行 | HUNRCU | 湖南农村信用社 |
| CCB | 建设银行 | JJB | 九江银行 |
| ABC | 农业银行 | JSB | 江苏银行 |
| BOC | 中国银行 | NBB | 宁波银行 |
| SPDB | 上海浦东发展银行 | NXB | 宁夏银行 |
| BCOM | 交通银行 | QLB | 齐鲁银行 |
| CMBC | 民生银行 | QSB | 齐商银行 |
| CEBB | 光大银行 | RZB | 日照银行 |
| GDB | 广东发展银行 | SCB | 渣打银行 |
| ECITIC | 中信银行 | SDRCB | 顺德农村商业银行 |
| HXB | 华夏银行 | SHRCB | 上海农村商业银行 |
| CIB | 兴业银行 | SJB | 盛京银行 |
| PSBC | 邮政储蓄银行 | SPABANK | 平安银行 |
| SDB | 深圳发展银行 | SRB | 上饶银行 |
| BBGB | 广西北部湾银行 | SZB | 苏州银行 |
| BEA | 东亚银行 | SZRCB | 深圳农村商业银行 |
| CBHB | 渤海银行 | TACCB | 泰安市商业银行 |
| CDRCB | 成都农村商业银行 | WHCCB | 威海市商业银行 |
| CQRCB | 重庆农村商业银行 | WLMQCCB | 乌鲁木齐市商业银行 |
| DGB | 东莞银行 | WZB | 温州银行 |
| DLB | 大连银行 | XMB | 厦门银行 |
| DYCCB | 东营市商业银行 | YCCCB | 宜昌市商业银行 |
| FDB | 富滇银行 | ZHRCU | 珠海市农村信用合作社 |
| GZB | 广州银行 | ZJCCB | 浙商银行 |
| HBB | 河北银行 | ZJGRCB | 张家港农商银行 |
| HKB | 汉口银行 | NCB | 南洋商业银行 |
| HZB | 杭州银行 | SHRCB | 上海农村商业银行 |
| LTCCB | 浙江泰隆商业银行 | CBHB | 渤海银行 |
| HSB | 徽商银行 | NJCB | 南京银行 |
| BJRCB | 北京农商银行 | BOB | 北京银行 |