1、接口的请求和响应的报文:采用JSON作为具体业务报文的载体
2、请求方式为:POST方式
3、报文中中文字符编码需要设置为:UTF-8
4、sign计算规则为:
(1) 筛选参数并排序

获取所有请求参数,不包含有子节点的参数,不包括字节类型参数,如文件、字节流,剔除sign字段,剔除值为空的参数(NULL或全空格都视为空),并按照第一个字符的键值ASCII码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值ASCII码递增排序,以此类推。

(2) 拼接参数

将排序后的参数与其对应值,组合成“参数参数值”的格式,并且把这些参数全部拼接起来,此时生成的字符串为待签名字符串。

(3) 计算签名

将待签名字符串首尾拼接密钥后,进行md5运算,并转为大写

5.报文及sign计算示例

  • 如以下请求报文
  1. {
  2. "request_type": "scanpay_request",
  3. "isspid": "39493002",
  4. "pos_id": "1511300001",
  5. "store_id": "1511300001",
  6. "pos_seq": "1812100000002",
  7. "user_id": "imageco",
  8. "system_id": "8888",
  9. "scanpay_request": {
  10. "pay_type": "502",
  11. "tx_amt": "1",
  12. "goods_detail": [
  13. {
  14. "goods_id": "apple-01啊",
  15. "payment_goods_id": "20010001",
  16. "goods_name": "ipad",
  17. "quantity": 1,
  18. "price": 200000,
  19. "goods_category": "34543238",
  20. "body": "特价手机",
  21. "show_url": "http://www.alipay.com/xxx.jpg"
  22. },
  23. {
  24. "goods_id": "apple-02额",
  25. "payment_goods_id": "20010002",
  26. "goods_name": "ipad2",
  27. "quantity": 1,
  28. "price": 200000,
  29. "goods_category": "34543239",
  30. "body": "特价手机2",
  31. "show_url": "http://www.alipay.com/xxx2.jpg"
  32. }
  33. ]
  34. }
  35. }
  • 接入密钥为 test

(1) 筛选参数并排序

  1. "isspid":"39493002"
  2. "pos_id":"1511300001"
  3. "pos_seq":"1812100000002"
  4. "request_type":"scanpay_request"
  5. "store_id":"1511300001"
  6. "system_id":"8888"
  7. "user_id":"imageco"

(2) 拼接参数生成待签名字符串

  1. isspid39493002pos_id1511300001pos_seq1812100000002request_typescanpay_requeststore_id1511300001system_id8888user_idimageco

(3) 计算sign值

  1. md5(testisspid39493002pos_id1511300001pos_seq1812100000002request_typescanpay_requeststore_id1511300001system_id8888user_idimagecotest)
  2. =b7eee879c312adb820f44588d32c8222

(4) 将计算出的sign值转为大写放入请求报文形成最终请求JSON

  1. {
  2. "request_type": "scanpay_request",
  3. "isspid": "39493002",
  4. "pos_id": "1511300001",
  5. "store_id": "1511300001",
  6. "pos_seq": "1812100000002",
  7. "user_id": "imageco",
  8. "system_id": "8888",
  9. "scanpay_request": {
  10. "pay_type": "502",
  11. "tx_amt": "1",
  12. "goods_detail": [
  13. {
  14. "goods_id": "apple-01啊",
  15. "payment_goods_id": "20010001",
  16. "goods_name": "ipad",
  17. "quantity": 1,
  18. "price": 200000,
  19. "goods_category": "34543238",
  20. "body": "特价手机",
  21. "show_url": "http://www.alipay.com/xxx.jpg"
  22. },
  23. {
  24. "goods_id": "apple-02额",
  25. "payment_goods_id": "20010002",
  26. "goods_name": "ipad2",
  27. "quantity": 1,
  28. "price": 200000,
  29. "goods_category": "34543239",
  30. "body": "特价手机2",
  31. "show_url": "http://www.alipay.com/xxx2.jpg"
  32. }
  33. ]
  34. },
  35. "sign": "B7EEE879C312ADB820F44588D32C8222"
  36. }