支付回调及验证登录状态 更新时间:2018-02-06
- 支付回调及验证登录状态接口中使用了RSA加密进行数据传输
- 系统中共涉及四个RSA的密钥:MG公钥、MG私钥、开发者公钥、开发者私钥。
- MG的公钥会公开给开发者,开发者的公钥会通过开发者后台上传给MG。MG的私钥和开发者的私钥各自保留。
- MG会使用MG的私钥和开发者的公钥进行数据的加解密。
- 开发者会使用MG的公钥和开发者的私钥加解密。
开发者生成RSA密钥对
通过网站生成:http://web.chacuo.net/netrsakeypair(或网站https://rsatool.org/)
若开发者服务器端使用C#语言,则需要把私钥转换为xml格式,可以通过以下工具在线转换。
http://superdry.apphb.com/tools/online-rsa-key-converter
开发者验证密钥对是对称的
登录网站:http://tool.chacuo.net/cryptrsakeyvalid
将密钥对中的公钥上传到MG后台
- 上传时去掉公钥的注释
- 去掉公钥中间的换行
- 检查一下,文本框中的公钥最后一个字符不是换行
如何获得MG公钥
登录MG后台,如上图获得得MG公钥。若开发者服务器端使用C#语言,则需要把MG的公钥转换为xml格式,示例代码中为已经转换过的公钥。
支付回调
- 支付回调有两个参数param_data和sign
- param_data参数是由MG的私钥加密成后数据,开发者需要用MG的公钥解密
- sign参数是由开发者的公钥加密后的数据,开发者需要用开发者的私钥解密
- 解密时先拿到param_data和sign参数,先进行urldecode(有些服务器接收后会自动进行urldecode,若已处理,则此步可省略),再进行base64decode,然后再rsa解密。Rsa解密时请用128字节分段解密(即把参数值按128字节长度分解开来进行rsa解密,然后再把解密后的字符串拼接起来)。MG后台有示例代码可以参考。
- 示例代码下载:
C#、
Java、
Php、
Nodejs、
Python
示例代码说明


signin接口验证签名
- 验证签名时会用到开发者私钥和MG的公钥
- 通过MG的公钥对数据字符串加密得到参数verify_data。
- 通过开发者的私钥对数据字符串加密得到参数verify_sign。
- 加密时先进行rsa加密,然后进行base64encode,然后再进行urlencode。MG后台有示例代码可以参考。
- 示例代码下载:
C#、
Java、
Php、
Nodejs、
Python
示例代码说明

