闲暇想对接个支付宝玩玩,没想到各种运行不起来,浪费半天功夫,记录下,方便后续遇到同样的坑来处理
?开发者平台建应用、开账号、公私钥这些不写了,官网网上一大堆,只写问题处理。
1. 使用开放文档中的sdk,以及demo,pip install alipay-sdk-python,安装完后,直接复制下来示例,改了appid、公私钥,运行一直报INVALID_PARAMETER(无效参数),无奈,各种搜、发帖提问题,都没法处理,只能放弃
2. 使用了网上大多数用的三方包,pip install python-alipay-sdk,安装前先卸载掉上面1中安装的包pip uninstall alipay-sdk-python,下载缓慢可换pip源
# 代码使用
from alipay import AliPay
app_private_key_string = """-----BEGIN RSA PRIVATE KEY-----
你的应用私钥
-----END RSA PRIVATE KEY-----
"""
alipay_public_key_string = """-----BEGIN PUBLIC KEY-----
支付宝公钥
-----END PUBLIC KEY-----
"""
alipay = AliPay(
appid="你的沙箱应用id",
app_notify_url=None, # 默认回调 url
app_private_key_string=app_private_key_string,
# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
alipay_public_key_string=alipay_public_key_string,
# sign_type="RSA2", # RSA 或者 RSA2,不写默认是RSA2
debug=True, # 默认 False
)
# 电脑网站支付,需要跳转到:https://openapi.alipay.com/gateway.do? + order_string
res=alipay.api_alipay_trade_page_pay(
out_trade_no='1000102',
total_amount=float(999), # 只有生成支付宝链接时,不能用Decimal
subject='充气球',
return_url='http://127.0.0.1:8000',
notify_url='http://127.0.0.1:8000',
)
gataway = 'https://openapi.alipaydev.com/gateway.do?'
print(gataway+res) # 即支付链接地址
3. 注意点
(1)RSA key format is not supported
解决:私钥、公钥开头结尾如上加,一定不要有换行、空格
(2)module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'
解决:两者其一就行,看哪个能解决问题,或者都执行
? ? ? ? ? 1)将cryptography降到2.8版本或以下,小于38 ? ? ? ? ? ?2)将pyOpenSSL从19.0.0升级到22.0.0
(3)生成地方访问,页面提示,支付存在钓鱼风险
解决:把沙箱环境页面关了,在其他浏览器打开,都可以
|