【世界报资讯】Python中使用支付宝支付
来源:博客园    时间:2023-07-04 22:19:28


(资料图片仅供参考)

准备
# 支付宝文档    https://opendocs.alipay.com/open/270/105898?pathHash=b3b2b667# 在沙箱环境下实名认证    https://openhome.alipay.com/platform/appDaily.htm?tab=info# 完成RSA密钥生成# 1 下载密钥工具# 2 生成密钥    https://opendocs.alipay.com/common/02kipk?pathHash=0d20b438# 在沙箱应用中的开发信息中自定义密钥# Python支付宝开源框架:https://github.com/fzlee/alipay    pip install python-alipay-sdk --upgrade# 如果抛ssl相关错误,代表缺失该包    pip install pyopenssl# 7、公钥私钥设置"""# alipay_public_key.pem-----BEGIN PUBLIC KEY-----支付宝公钥-----END PUBLIC KEY-----# app_private_key.pem-----BEGIN RSA PRIVATE KEY-----用户私钥-----END RSA PRIVATE KEY-----"""
初始化
from alipay import AliPay, DCAliPay, ISVAliPayfrom alipay.utils import AliPayConfig# 支付宝网页下载的证书不能直接被使用,需要加上头尾# 你可以在此处找到例子: tests/certs/ali/ali_private_key.pemapp_private_key_string = open("私钥文件的路径").read()alipay_public_key_string = open("公钥文件的路径").read()alipay = AliPay(    appid="",  # 支付宝页面上复制,沙箱环境    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    debug=False,  # 默认 False    verbose=False,  # 输出调试数据    config=AliPayConfig(timeout=15)  # 可选,请求超时时间)# 如果你是 Python2 用户(考虑考虑升级到 Python3 吧),请确保非 ascii 的字符串为 utf8 编码:# subject = u"测试订单".encode("utf8")# 如果你是 Python3 的用户,使用默认的字符串即可subject = "旺仔牛奶"# 电脑网站支付,需要跳转到:https://openapi.alipay.com/gateway.do? + order_stringorder_string = alipay.api_alipay_trade_page_pay(    out_trade_no="20230704171400",    total_amount=888,    subject=subject,    return_url="https://example.com",    notify_url="https://example.com/notify" # 可选,不填则使用默认 notify url)print("https//openapi.alipay.com/gateway.do?" + order_string)app_private_key_string = open("yourPrivateKey.key").read()app_public_key_cert_string = open("yourPrivateCert.crt").read()alipay_public_key_cert_string = open("alipayPublicCert.crt").read()alipay_root_cert_string = open("alipayRootCert.crt").read()dc_alipay = DCAliPay(    appid="appid",    app_notify_url="http://example.com/app_notify_url",    app_private_key_string=app_private_key_string,    app_public_key_cert_string=app_public_key_cert_string,    alipay_public_key_cert_string=alipay_public_key_cert_string,    alipay_root_cert_string=alipay_root_cert_string)# 如果您没有听说过 ISV, 那么以下部分不用看了# app_auth_code 或 app_auth_token 二者需要填入一个isv_alipay = ISVAliPay(    appid="",    app_notify_url=None,  # 默认回调 url    app_private_key_srting="",    # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,    alipay_public_key_string="",    sign_type="RSA",  # RSA or RSA2    debug=False,  # False by default    app_auth_code=None,    app_auth_token=None)
alipay二次封装
# 新建一个包alipay_common    pem                      # 公钥私钥文件夹    alipay_public_key.pem    # 支付宝公钥文件    app_private_key.pem      # 应用私钥文件    __init__.py    pay.py                   # 支付文件    settings.py              # 应用配置# alipay_public_key.pem    -----BEGIN PUBLIC KEY-----    支付宝公钥    -----END PUBLIC KEY-----# app_private_key.pem    -----BEGIN RSA PRIVATE KEY-----    用户私钥    -----END RSA PRIVATE KEY-----# __init__.py    from .pay import gateway, alipay# settings.py    import os    # 应用私钥    APP_PRIVATE_KEY_STRING = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "pem",         "app_private_key.pem")).read()    # 支付宝公钥    ALIPAY_PUBLIC_KEY_STRING = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "pem", "alipay_public_key.pem")).read()    # 应用ID    APP_ID = "9021000122699958"    # 加密方式    SIGN = "RSA2"    # 是否是支付宝测试环境(沙箱环境),如果采用真是支付宝环境,配置False    DEBUG = True    # 支付网关    GATEWAY = "https://openapi-sandbox.dl.alipaydev.com/gateway.do?" if DEBUG else "https://openapi.alipay.com/gateway.do?"# pay.py    from alipay import AliPay    from alipay.utils import AliPayConfig    from . import settings    alipay = AliPay(        appid=settings.APP_ID,   # 支付宝页面上复制,沙箱环境---》公司有人会给你        app_notify_url=None,  # 默认回调 url        app_private_key_string=settings.APP_PRIVATE_KEY_STRING,        # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,        alipay_public_key_string=settings.ALIPAY_PUBLIC_KEY_STRING,        sign_type=settings.SIGN,  # RSA 或者 RSA2        debug=settings.DEBUG,  # 默认 False        verbose=False,  # 输出调试数据        config=AliPayConfig(timeout=15)  # 可选,请求超时时间    )    # 支付网关    gateway = settings.GATEWAY

X 关闭

Copyright   2015-2022 大众公益网版权所有   备案号:豫ICP备20014643号-14   联系邮箱: 905 14 41 07@qq.com