# 2.通用API说明 商户服务器和 AllPay 网关对接的通用接口,每个渠道都具有的功能,包括:订购消费,订购预授权,订购预授权完成,预售期撤销,查询接口。 ## 2.1.验签说明 1.对于发送到 ALLPAY 系统的 POST 请求报文,其中所有传入参数(除 sign 参数外)按照字段名的 ASCII 码从小到大排序后(字典序),使用 URL 键值对的格式(即 key1=value1&key2=value2...)拼接成字符串 String1。 2.在 String1 最后直接拼接(不需要用“&”连接)双方约定的签名密钥 K1(接入时 ALLPAY 时分配),得到 stringSignTemp 字符串,并对 stringSignTemp 进行sha256 运算,得到 sign 的值。 3.示例签名串 ```js card_no=5200831111111113¤cy=CNY&expiry_date=1119&mch_id=000000000000015&order_amount=100&sign_type=SHA256&trade_no=370000197809218764&trade_time=20180829165052&trade_type=PURC2f2c77e3718c47cfb47a89a6fbc9d361 ``` ## 2.2.通用API 接入地址 开发调试地址|生产交易地址 -----------|------- | ## 2.3.订购消费接口 接口说明: 该接口可以进行订购消费,每次trade_no不能重复 1. 请求参数 | 参数名称 | 必填 | 使用说明 | | :----------- | :--- | ---------------------------------------------- | | mch_id | M | 商户ID,由AllPay分配 | | trade_type | M | 交易类型 消费填写"PURC" | | trade_no | M | 商户自行定义,需保证同一商户号下订单号不能重复 | | order_amount | M | 订单金额 如100元,表示为100或100.00 | | currency | M | 订单币种 人民币填写“CNY”,美元填写"USD" | | card_no | M | 卡号 | | expiry_date | M | 有效期 MMYY | | trade_time | M | 交易时间,格式:"yyyyMMddHHmmss" | | sign_type | M | SHA256 | | sign | M | 签名 | 举例如下: ```json { "mch_id": "000000000000015", "trade_type": "PURC", "trade_no": "370000197809218764", "order_amount": "100", "currency": "CNY", "card_no": "5200831111111113", "expiry_date": "1119", "trade_time": "20180829165052", "sign_type": "SHA256", "sign": "426907204360081d7c728a6695067bc84233e82d0e3a61703313d874aa741d76" } ``` 2. 响应报文 参数如下表: | 参数名称 | 必填 | 使用说明 | | ---------- | ---- | -------------------- | | resp_code | M | 应答码 00-成功 | | resp_msg | M | 应答信息 | | mch_id | M | 商户ID,由AllPay分配 | | trade_type | M | 交易类型 | | trade_time | M | 交易时间 | | trade_no | M | 交易订单号 | | sign_type | M | SHA256 | | sign | M | 签名 | 举例如下: ```json { "resp_code": "00", "resp_msg": "SUCCESS", "mch_id": "000000000000015", "trade_type": "PURC", "trade_time": "20180829165048", "trade_no": "520000197701311324", "sign_type": "SHA256", "sign": "7ca2442edac07b92ee9d086d2df1635b62c1d5d4ab33ffe8ceb2c195579a8698" } ``` ## 2.4.消费退款接口 接口说明: 该接口可以对订购消费进行退款,退款时origin_trade_no填写订购消费时的trade_no,可以进行分步退款,分步退款时每次的trade_no不能重复。 1. 请求参数 | 参数名称 | 必填 | 使用说明 | | :------------- | :--- | ---------------------------------------------- | | mch_id | M | 商户ID,由AllPay分配 | | trade_type | M | 交易类型 退款填写"REFD" | | trade_no | M | 商户自行定义,需保证同一商户号下订单号不能重复 | | origin_trade_no | M | 原订购消费订单号, 原交易类型必须为PURC | | refund_amount | M | 退款金额 如100元,表示为100或100.00 | | currency | M | 订单币种 人民币填写“CNY”,美元填写"USD" | | trade_time | M | 交易时间,格式:"yyyyMMddHHmmss" | | sign_type | M | SHA256 | | sign | M | 签名 | 举例如下: ```json { "mch_id": "000000000000015", "trade_type": "REFD", "trade_no": "990000198707011244", "origin_trade_no": "230000197106062088", "refund_amount": "1", "currency": "CNY", "trade_time": "20180829165313", "sign_type": "SHA256", "sign": "edc8e56be38190402ee537e3fc4e30766d47a0ca297c2de4be460a99a6139e14" } ``` 2. 响应报文 参数如下表: | 参数名称 | 必填 | 使用说明 | | ---------- | ---- | -------------------- | | resp_code | M | 应答码 00-成功 | | resp_msg | M | 应答信息 | | mch_id | M | 商户ID,由AllPay分配 | | trade_type | M | 交易类型 | | trade_time | M | 交易时间 | | trade_no | M | 交易订单号 | | sign_type | M | SHA256 | | sign | M | 签名 | 举例如下: ```json { "resp_code": "00", "resp_msg": "SUCCESS", "mch_id": "000000000000015", "trade_type": "REFD", "trade_time": "20180829165313", "trade_no": "990000198707011244", "sign_type": "SHA256", "sign": "3a370170181a5aa6b5f53cb3ae81890813c455df6ec9b1a894a49302fcc3d055" } ``` ## 2.5.订购预授权 接口说明: 该接口可以进行订购预授权,每次trade_no不能重复 1. 请求参数 | 参数名称 | 必填 | 使用说明 | | :----------- | :--- | ---------------------------------------------- | | mch_id | M | 商户ID,由AllPay分配 | | trade_type | M | 交易类型 预授权填写" PAUT " | | trade_no | M | 商户自行定义,需保证同一商户号下订单号不能重复 | | order_amount | M | 订单金额 如100元,表示为100或100.00 | | currency | M | 订单币种 人民币填写“CNY”,美元填写"USD" | | card_no | M | 卡号 | | expiry_date | M | 有效期 MMYY | | trade_time | M | 交易时间,格式:"yyyyMMddHHmmss" | | sign_type | M | SHA256 | | sign | M | 签名 | 举例如下: ```json { "mch_id": "000000000000015", "trade_type": "PAUT", "trade_no": "620000199911267889", "order_amount": "100", "currency": "CNY", "card_no": "5200831111111113", "expiry_date": "1119", "trade_time": "20180829165720", "sign_type": "SHA256", "sign": "ac7cf7d284cf72743e16c51b7a95d9a61b7dbb6f50e92f5699ecf4d9f8e65aee" } ``` 2. 响应报文 参数如下表: | 参数名称 | 必填 | 使用说明 | | ---------- | ---- | -------------------- | | resp_code | M | 应答码 00-成功 | | resp_msg | M | 应答信息 | | mch_id | M | 商户ID,由AllPay分配 | | trade_type | M | 交易类型 | | trade_time | M | 交易时间 | | trade_no | M | 交易订单号 | | sign_type | M | SHA256 | | sign | M | 签名 | 举例如下: ```json { "resp_code": "00", "resp_msg": "SUCCESS", "mch_id": "000000000000015", "trade_type": "PAUT", "trade_time": "20180829165720", "trade_no": "620000199911267889", "sign_type": "SHA256", "sign": "7421f9720d56b1d417edc26f89d2777b74d7745440bfc4957c853474f20ea4f7" } ``` ## 2.6.订购预授权完成 接口说明: 该接口可以对订购预授权完成,origin_trade_no填写订购预授权时的trade_no 1. 请求参数 | 参数名称 | 必填 | 使用说明 | | :-------------- | :--- | ---------------------------------------------- | | mch_id | M | 商户ID,由AllPay分配 | | trade_type | M | 交易类型 预授权完成填写" PAUC " | | trade_no | M | 商户自行定义,需保证同一商户号下订单号不能重复 | | origin_trade_no | M | 原预授权订单号, 原交易类型必须为PAUT | | order_amount | M | 订单金额 如100元,表示为100或100.00 | | currency | M | 订单币种 人民币填写“CNY”,美元填写"USD" | | trade_time | M | 交易时间,格式:"yyyyMMddHHmmss" | | sign_type | M | SHA256 | | sign | M | 签名 | 举例如下: ```json { "mch_id": "000000000000015", "trade_type": "PAUC", "origin_trade_no": "620000199911267889", "trade_no": "310000198512106263", "order_amount": "100", "currency": "CNY", "trade_time": "20180829170036", "sign_type": "SHA256", "sign": "0a532fdc7488bdbc6cdc87d24635fdd7294d6d3fc8cf0eb387d4b74b5fc3dcb7" } ``` 2. 响应报文 参数如下表: | 参数名称 | 必填 | 使用说明 | | ---------- | ---- | -------------------- | | resp_code | M | 应答码 00-成功 | | resp_msg | M | 应答信息 | | mch_id | M | 商户ID,由AllPay分配 | | trade_type | M | 交易类型 | | trade_time | M | 交易时间 | | trade_no | M | 交易订单号 | | sign_type | M | SHA256 | | sign | M | 签名 | 举例如下: ```json { "resp_code": "00", "resp_msg": "SUCCESS", "mch_id": "000000000000015", "trade_type": "PAUC", "trade_time": "20180829170036", "trade_no": "310000198512106263", "sign_type": "SHA256", "sign": "5769c35d68d8263ace180e224eea6ebb8907cc1a1042a9f955cd9c32fd0602cf" } ``` ## 2.7.撤销接口 接口说明: 该接口可以对 订购消费,订购预授权,订购预授权完成进行撤销,origin_trade_no填写对应交易的trade_no。 1. 请求参数 | 参数名称 | 必填 | 使用说明 | | :-------------- | :--- | ---------------------------------------------- | | mch_id | M | 商户ID,由AllPay分配 | | trade_type | M | 交易类型 撤销填写"VOID " | | trade_no | M | 商户自行定义,需保证同一商户号下订单号不能重复 | | origin_trade_no | M | 需要撤销的订单号 | | trade_time | M | 交易时间,格式:"yyyyMMddHHmmss" | | sign_type | M | SHA256 | | sign | M | 签名 | 举例如下: ```json { "mch_id": "000000000000015", "trade_type": "VOID", "trade_no": "370000197912155378", "origin_trade_no": "460000201604155983", "trade_time": "20180829170913", "sign_type": "SHA256", "sign": "6c0815cd8f364dacc965e6bc2ce144fe56b7743912f0520db33c9c3393e75d26" } ``` 2. 响应报文 参数如下表: | 参数名称 | 必填 | 使用说明 | | ---------- | ---- | -------------------- | | resp_code | M | 应答码 00-成功 | | resp_msg | M | 应答信息 | | mch_id | M | 商户ID,由AllPay分配 | | trade_type | M | 交易类型 | | trade_time | M | 交易时间 | | trade_no | M | 交易订单号 | | sign_type | M | SHA256 | | sign | M | 签名 | 举例如下: ```json { "resp_code": "00", "resp_msg": "SUCCESS", "mch_id": "000000000000015", "trade_type": "VOID", "trade_time": "20180829170913", "trade_no": "370000197912155378", "sign_type": "SHA256", "sign": "d48e6a23b87f7f3b47598aed52fe60aaccb053979de588170f943f9a3426ced4" } ``` ## 2.8.交易查询 接口说明: 该接口可以对订购消费,订购预授权,订购预授权完成,退款,撤销,进行查询,trade_no填写要查询的订单的 1. 请求参数 | 参数名称 | 必填 | 使用说明 | | :--------- | :--- | ------------------------------ | | mch_id | M | 商户ID,由AllPay分配 | | trade_type | M | 交易类型 查询填写"INQY" | | trade_no | M | 需要查询状态的订单号 | | trade_time | M | 交易时间,格式:"yyyyMMddHHmmss" | | sign_type | M | SHA256 | | sign | M | 签名 | 举例如下: ```json { "mch_id": "000000000000015", "trade_type": "INQY", "trade_no": "990000198707011244", "trade_time": "20180829171422", "sign_type": "SHA256", "sign": "2bdfe50dc7c207891e132485eedf978c3f355f3a8e3ad25d6b4260c388a584c5" } ``` 2. 响应报文 参数如下表: | 参数名称 | 必填 | 使用说明 | | ------------- | ---- | -------------------------------------- | | resp_code | M | 应答码 00-成功 | | resp_msg | M | 应答信息 | | mch_id | M | 商户ID,由AllPay分配 | | trade_type | M | 交易类型 | | trade_time | M | 交易时间 | | trade_no | M | 交易订单号 | | order_amount | C | trade_type 为PURC,PAUT,PAUC时返回 | | refund_amount | C | trade_type 为REFD时返回 | | currency | C | trade_type 为PURC,PAUT,PAUC,REFD时返回 | | sign_type | M | SHA256 | | sign | M | 签名 | 举例如下: ```json { "mch_id": "000000000000015", "trade_type": "REFD", "trade_time": "20180829165313", "trade_no": "990000198707011244", "refund_amount": "1", "currency": "CNY", "sign_type": "SHA256", "sign": "4ab0c48ac6aac058f7f5d6473679dcebc91d6c57cf3f690ab8984248b5b960f9" } ```