调用支付宝授权接口,公钥模式,请求结果报1
2
3
4
5
6
7
8
9
10
11
12
13[ef2a59c2-4b73-11ec-ab9c-00163e131b46]requst sign failed. int() argument must be a string, a bytes-like object or a number, not 'Sequence'
Traceback (most recent call last):
File "/www/miniconda3/envs/ipark/lib/python3.9/site-packages/alipay/aop/api/DefaultAlipayClient.py", line 125, in __prepare_request_params
sign = sign_with_rsa2(self.__config.app_private_key, sign_content, self.__config.charset)
File "/www/miniconda3/envs/ipark/lib/python3.9/site-packages/alipay/aop/api/util/SignatureUtils.py", line 49, in sign_with_rsa2
signature = rsa.sign(sign_content, rsa.PrivateKey.load_pkcs1(private_key, format='PEM'), 'SHA-256')
File "/www/miniconda3/envs/ipark/lib/python3.9/site-packages/rsa/key.py", line 124, in load_pkcs1
return method(keyfile)
File "/www/miniconda3/envs/ipark/lib/python3.9/site-packages/rsa/key.py", line 592, in _load_pkcs1_pem
return cls._load_pkcs1_der(der)
File "/www/miniconda3/envs/ipark/lib/python3.9/site-packages/rsa/key.py", line 527, in _load_pkcs1_der
key = cls(*as_ints)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'Sequence'
问题原因是生成的支付宝私钥是pkcs8格式,python不支持,需要转换为pkcs1格式
使用 《支付宝开发平台开发助手》的格式转换,将私钥格式转换,调用转换后的私钥即可
这个也适用于支付宝公钥证书模式。