zmop接口的坑(芝麻信用认证)
- 最近项目里要用到实名认证,因为便宜用到了芝麻信用的实名认证。
1. 环境(zmop依赖于M2Crypto)
ubuntu 环境下使用最新版的M2Crypto(0.27.0)有问题,一直报不支持 ssl v3 加密,需要把M2Crypto安装成0.26.4版本的才行
2. rsa 公钥私钥(逻辑理清)
zmop中rsa的用法是:
- 使用之前先把生成公私钥,把我的公钥放到芝麻信用平台上,把zmop的公钥拿下来保存。
- 公钥加密,私钥解密
- 私钥签名,公钥解签
- 从商户–>zmop的请求:用‘zmop的公钥’加密,用的‘我的私钥’签名,到zmop那边,他用‘zmop的私钥’解密,用我的公钥验签。
- 从zmop–>商户的返回:用‘我的公钥’加密,用‘zmop的私钥’签名,到我这边,我用‘我的私钥’解密,用‘zmop的公钥验签’。
我们要做的是:
- 生成公私钥,自己只用保存私钥,把公钥交给zmop的app
- 把公钥交给zmop后,获取到zmop的公钥,并保存(这里有个坑:点击芝麻信用页面‘复制’按钮不管用,直接右击‘检查元素’,从html标签中寻找公钥即可)
- 最后的结果是:
- 我保存的:我的私钥+zmop的公钥
- zmop保存的:我的公钥+zmop的私钥
3. 传参格式str
rsa加密参数的话使用的是unicode格式的话会报错:
RSAError at /zmop/biz-no/
data too large for key size
所以需要把参数转化成str格式,如:str(transaction_id)