Python中使用支付宝支付

准备

# 支付宝文档
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-----
"""
# 支付宝文档
    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-----
"""
# 支付宝文档 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----- """

image

初始化

from alipay import AliPay, DCAliPay, ISVAliPay
from alipay.utils import AliPayConfig
# 支付宝网页下载的证书不能直接被使用,需要加上头尾
# 你可以在此处找到例子: tests/certs/ali/ali_private_key.pem
app_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_string
order_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
)
from alipay import AliPay, DCAliPay, ISVAliPay
from alipay.utils import AliPayConfig

# 支付宝网页下载的证书不能直接被使用,需要加上头尾
# 你可以在此处找到例子: tests/certs/ali/ali_private_key.pem
app_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_string
order_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
)
from alipay import AliPay, DCAliPay, ISVAliPay from alipay.utils import AliPayConfig # 支付宝网页下载的证书不能直接被使用,需要加上头尾 # 你可以在此处找到例子: tests/certs/ali/ali_private_key.pem app_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_string order_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
# 新建一个包
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
# 新建一个包 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

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYzO5pam' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片