必玩支付开发指引

2024-11-29 17:22:23 bone

1、更新版本

版本日期修订内容修订人
1.012023/1/1初始版本ym

2、重点事项

2.1、数据格式

(1)为保证交易安全性,建议采用HTTPS传输
(2)采用POST方法提交
(3)提交数据格式:application/x-www-form-urlencoded
(4)返回数据格式:JSON
(5)字符编码:统一采用UTF-8字符编码
(6)签名算法:RSA2

2.2、请求数据

请求地址?mchid=880882963168548&method=pay.order%2Fcreate&charset=utf-8&sign_type=RSA2×tamp=1672602962&version=1.0&biz_content=%7B%22trade_type%22%3A%22alipayQr%22%2C%22out_trade_no%22%3A%2220230102034534132%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%22%5Cu6d4b%5Cu8bd5%5Cu5546%5Cu54c1%22%2C%22attach%22%3A%22%5Cu6d4b%5Cu8bd5%5Cu5546%5Cu54c1%22%2C%22notify_url%22%3A%22http%3A%5C%2F%5C%2F127.0.0.1%5C%2FSDK%5C%2Fnotify_url.php%22%2C%22return_url%22%3A%22http%3A%5C%2F%5C%2F127.0.0.1%5C%2FSDK%5C%2Freturn_url.php%22%2C%22client_ip%22%3A%22110.80.173.6%22%2C%22methodType%22%3A1%7D&sign=cLZ0QBDR9gJIn27TFIBdqxiuGJcxZCjqWjKsmlMpAGg%2B3dVbAg1XzyQGqMoFwX0t0lnIZBTLzhsyPe%2BJabSDf6XdSDx9oS16a1DjKOOWXCQz%2FAd5ncMiaXbwxdvpHyiKMJRE0V8u9QeK0MSrVeyiTeI3l3Zr7FpSaJVp7LBpqPUOR1NoMZbzMhneMnr7Kjt8OFEDJE9p4nG27o3O3EAB0HJ3u2g4W5kSzEVcSWnvy0cqtGqym4MLMdmRp4GL4H4Z57et4tb1qEXhtjfdtSO1pZleAiIgx8CxzuonX560nlMbXlXnj6tRoX6Sr2lo0ty6RGYyVtfR67YF44D5iw65TA%3D%3D

2.3、加签原理

  • 获取所有 post请求 内容,不包括字节类型参数,如文件、字节流,剔除 sign 字段,剔除值为空的参数;
  • 按照第一个字符的键值 ASCII 码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值 ASCII 码递增排序,以此类推;
  • 将排序后的参数与其对应值,组合成 参数=参数值 的格式,并且把这些参数用 & 字符连接起来,此时生成的字符串为待签名字符串。

2.4、签名样例

(1)需要传递的参数如下:
{"mchid":"880882963168548","method":"pay.order\/create","charset":"utf-8","sign_type":"RSA2","timestamp":1672603325,"version":"1.0","biz_content":"{\"trade_type\":\"alipayQr\",\"out_trade_no\":\"20230102034534132\",\"total_amount\":\"0.01\",\"subject\":\"\\u6d4b\\u8bd5\\u5546\\u54c1\",\"attach\":\"\\u6d4b\\u8bd5\\u5546\\u54c1\",\"notify_url\":\"http:\\\/\\\/127.0.0.1\\\/SDK\\\/notify_url.php\",\"return_url\":\"http:\\\/\\\/127.0.0.1\\\/SDK\\\/return_url.php\",\"client_ip\":\"110.80.173.6\",\"methodType\":1}"}
(2)对参数按照key=value的格式,并按照参数名ASCII字典序排序如下(需要过滤空值)
biz_content={"trade_type":"alipayQr","out_trade_no":"20230102034534132","total_amount":"0.01","subject":"\u6d4b\u8bd5\u5546\u54c1","attach":"\u6d4b\u8bd5\u5546\u54c1","notify_url":"http:\/\/127.0.0.1\/SDK\/notify_url.php","return_url":"http:\/\/127.0.0.1\/SDK\/return_url.php","client_ip":"110.80.173.6","methodType":1}&charset=utf-8&mchid=880882963168548&method=pay.order/create&sign_type=RSA2×tamp=1672603405&version=1.0
(4)使用 RSA2签名方式对待签名字符串进行签名 签名后使用base64进行转码
(5)异步回调通知请按照签名方法进行解析

3、生成密钥

您可以通过本文了解如何使用支付宝开放平台密钥工具生成密钥:
  • 密钥方式:生成 RSA 密钥对(应用公钥、应用私钥)

3.1、注意事项

  • 应用私钥(private key)需填写到代码中供签名时使用。生成的私钥需妥善保管,避免遗失,不要泄露。
  • 应用公钥(public key)需上传到商户后台。
  • 密钥和应用(APPID)一一对应,即开发者需要为名下的每个应用分别设置密钥,且不同应用的密钥不能混用。
  • RSA2 加密算法默认生成格式为 PKCS8,如需 PKCS1 格式,可使用 格式转换

3.2、工具下载

  • Windows(请不要安装在含有空格的目录路径下,否则会导致公私钥乱码的问题)
注意:MAC 系统安装密钥工具时可能会提示 无法打开“支付宝开放平台密钥工具”,因为Apple无法检查其是否包含恶意软件。解决方案见下文。
  • 方案一:系统偏好设置 > 安全性与隐私 > 通用中启用该应用。
  • 方案二:按住 Control 键点击应用, 然后打开,这样会把应用增加到白名单中许可执行。

4、商户密钥配置教程

使用前必须配置商户开发设置,配置路径为:商户后台--系统设置--开发设置--密钥设置--一键生成--【保存】