接口协议约定
1.1 接口功能
1.2 接口协议说明
请求报文以 HTTP POST发送,格式JSON,utf-8编码;响应报文以JSON方式返回,utf-8编码。
请求报文Sample
1.原始报文
{"requestHead":{"charset":"utf-8","merchantNumber":5,"requestNo":"20240925161218308093","requestTime":"20240925161218","version":"1.0.0"},"requestBody":{"amount":"11.11","billAddress":"海珠区","billCity":"广州市","billCountry":"United","billState":"广东省","billZip":"441234","cardCsc":"1234567","cardExpMonth":"12","cardExpYear":"2024","cardIssuingBank":"工商银行","cardNum":"12346578978","currency":"RMB","ext1":"00","ext2":"","firstName":"张","lastName":"三","orderNum":"20240925161218001654","productDesc":"apple","productName":"苹果","productNum":"9","remark":"","returnUrl":"https://www.baidu.com","shipAddress":"硅谷1234号","shipCity":"旧金山","shipCountry":"美国","shipFirstname":"四","shipState":"加利福利亚","shipZip":"123456","transUrl":"https://epaylinks.cn","transactionType":"SALE","userEmail":"3534108287@qq.com","userIpAddress":"192.168.1.1","userPhone":"18035142506"}}
2.报文排序
先是requestBody和requestHead中的json数据按ascll码升序排序,然后这两个键再按ascll码升序排序,得到新JSON。
{"requestBody":{"amount":"11.11","billAddress":"海珠区","billCity":"广州市","billCountry":"United","billState":"广东省","billZip":"441234","cardCsc":"1234567","cardExpMonth":"12","cardExpYear":"2024","cardIssuingBank":"工商银行","cardNum":"12346578978","currency":"RMB","ext1":"00","ext2":"","firstName":"张","lastName":"三","orderNum":"20240925161218001654","productDesc":"apple","productName":"苹果","productNum":"9","remark":"","returnUrl":"https://www.baidu.com","shipAddress":"硅谷1234号","shipCity":"旧金山","shipCountry":"美国","shipFirstname":"四","shipState":"加利福利亚","shipZip":"123456","transUrl":"https://epaylinks.cn","transactionType":"SALE","userEmail":"3534108287@qq.com","userIpAddress":"192.168.1.1","userPhone":"18035142506"},"requestHead":{"charset":"utf-8","merchantNumber":5,"requestNo":"20240925161218308093","requestTime":"20240925161218","version":"1.0.0"}}
3.排序后的json签名(商户的私钥签名)
J+5TbLNfSTXkmwjCCi9LbRii6PCJlSCH8vSMPYxkfKhqsZC99n0b74KtVysZ3gSm9nL06u0MNZJg1eOy5hZEpmpkXBtptEkxSqpK9nlBLjkSySH35uuEmM/sQycihXKuIhT8PxNYNiclHf2/supA+J4LLDBuOYXVO+8dkUZjU0A=
4.拼成请求的json
{"requestBody":{"amount":"11.11","billAddress":"海珠区","billCity":"广州市","billCountry":"United","billState":"广东省","billZip":"441234","cardCsc":"1234567","cardExpMonth":"12","cardExpYear":"2024","cardIssuingBank":"工商银行","cardNum":"12346578978","currency":"RMB","ext1":"00","ext2":"","firstName":"张","lastName":"三","orderNum":"20240925161218001654","productDesc":"apple","productName":"苹果","productNum":"9","remark":"","returnUrl":"https://www.baidu.com","shipAddress":"硅谷1234号","shipCity":"旧金山","shipCountry":"美国","shipFirstname":"四","shipState":"加利福利亚","shipZip":"123456","transUrl":"https://epaylinks.cn","transactionType":"SALE","userEmail":"3534108287@qq.com","userIpAddress":"192.168.1.1","userPhone":"18035142506"},"requestHead":{"charset":"utf-8","merchantNumber":5,"requestNo":"20240925161218308093","requestTime":"20240925161218","sign":"J+5TbLNfSTXkmwjCCi9LbRii6PCJlSCH8vSMPYxkfKhqsZC99n0b74KtVysZ3gSm9nL06u0MNZJg1eOy5hZEpmpkXBtptEkxSqpK9nlBLjkSySH35uuEmM/sQycihXKuIhT8PxNYNiclHf2/supA+J4LLDBuOYXVO+8dkUZjU0A=","version":"1.0.0"}}
5.通过http post 请求接口,返回json数据:
{"responseHead":{"charset":"utf-8","merchantNumber":"5","responseTime":"20240806085408","sign":"GSeSC0sAQr87Gp6yEVaRYbflR+9NFWSi4TN3Ce4g3ZmZhRj0mwNmTDUFe4OfQ+F6tXf1BTly7+rCoZFjnJLs6arxiamt3a34H01wuUBJLA0rvquDcIN/kIjCBaRsxxlEDbly9VhNXL8b9M3C/QG7gahmWepFmE/hGrOlxYF2gP0=","requestNo":"20240806085408517639","version":"1.0.0","responseCode":1000,"responseMsg":"成功"},"responseBody":{"payUrl":"http://icp.dvchain.com.cn/interface/admins/alipay/pay?outBizNo=20240806085408753158"}}
回调报文Sample
1.返回的JSON:
{"responseHead":{"charset":"utf-8","version":"1.0.0","merchantNumber":"5","responseTime":"20240925161219","requestNo":"20240925161218308093","responseCode":200,"responseMsg":"成功","sign":"hl/f8BhIJ7fCHxBWlcbivnDkrA+tuLhW3aL6hXDp7qpavkSFhnqCo1WdOlvfnjxL4ZBM1nFO8BV2beDUMTXdYf405eC+T5WmquAs1BY5We9LA5fjZwl4Wlv6A8h3DKqP0teF0hU+91EzkF145LnQFZ45x9DOTi0BgKI/PrUeLDw="},"responseBody":{"htmlCode":null,"paccountNum":"90006001","pext1":"00","pext2":"","pmid":"90006","pamount":"11.11","pcurrency":"RMB","ppayInfo":"Order currency is incorrect","ptransNum":"2024092516101386629616","ppayResult":"0","premark":"","psignmsg":"4263052E8D7E85EAAC3CBA2D763A10D6C65D505660DB2F795450BE8806F8CFE8","porderNum":"20240925161218001654"}}
2.去掉sign,得到新的JSON
{"responseHead":{"charset":"utf-8","version":"1.0.0","merchantNumber":"5","responseTime":"20240925161219","requestNo":"20240925161218308093","responseCode":200,"responseMsg":"成功"},"responseBody":{"htmlCode":null,"paccountNum":"90006001","pext1":"00","pext2":"","pmid":"90006","pamount":"11.11","pcurrency":"RMB","ppayInfo":"Order currency is incorrect","ptransNum":"2024092516101386629616","ppayResult":"0","premark":"","psignmsg":"4263052E8D7E85EAAC3CBA2D763A10D6C65D505660DB2F795450BE8806F8CFE8","porderNum":"20240925161218001654"}}
3.排序处理
{"responseBody":{"pAccountNum":"90006001","pAmount":"11.11","pCurrency":"RMB","pExt1":"00","pExt2":"","pMid":"90006","pOrderNum":"20240925161218001654","pPayInfo":"Order currency is incorrect","pPayResult":"0","pRemark":"","pSignmsg":"4263052E8D7E85EAAC3CBA2D763A10D6C65D505660DB2F795450BE8806F8CFE8","pTransNum":"2024092516101386629616"},"responseHead":{"charset":"utf-8","merchantNumber":"5","requestNo":"20240925161218308093","responseCode":200,"responseMsg":"成功","responseTime":"20240925161219","version":"1.0.0"}}
4.数据验签(接口提供方的公钥进行验签)
验签成功,说明数据没有被篡改并且是应该接收的数据,如果失败,数据安全性就有问题。
1.3 输入说明约定
M 表示 字段必须有,内容在未做特别说明时不可为空;
O 表示 字段可无。
请求报文头约定
requestHead
应答报文头约定
responseHead
数据类型说明
N表示仅数字
AN为半角字符
ANS表示全半角字符
新的商户先通过商务的创建商户,设置相应的手续费,以及接口权限设置,最后拿到开发者相关资料。
修改于 2024-10-01 09:23:35