python实现支付宝支付功能


目录

支付宝支付基本使用

第一步:测试用支付宝的沙箱环境:支付宝开放平台 (alipay.com)

第二步:生成公钥私钥:生成密钥 – 支付宝文档中心 (alipay.com)

第三步:配置公钥私钥

image

image

image

第三步:安装模块

pip install python-alipay-sdk

第四步:基本使用

from alipay import AliPay
from alipay.utils import AliPayConfig

app_private_key_string = open("./应用私钥2048.txt").read()
alipay_public_key_string = open("./支付宝公钥.txt").read()

# 应用私钥格式
"""
-----BEGIN RSA PRIVATE KEY-----
base64 encoded content
-----END RSA PRIVATE KEY-----
"""
# 支付宝公钥格式
"""
-----BEGIN PUBLIC KEY-----
base64 encoded content
-----END PUBLIC KEY-----
"""

alipay = AliPay(
    appid="2021000121627616",
    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)  # 可选,请求超时时间
)

res = alipay.api_alipay_trade_page_pay(
    out_trade_no='1000101',  # 订单号
    total_amount=float(999),  # 价格
    subject='气球',  # 名称
    return_url='http://127.0.0.1:8000',
    notify_url='http://127.0.0.1:8000',
)

gataway = 'https://openapi.alipaydev.com/gateway.do?'
# 支付链接
pay_url = gataway + res
print(pay_url)

二次封装

二次封装方便项目使用

包目录结构:

包名
├── __init__.py
├── pem -- 存放公钥私钥文件夹
├    ├── alipay_public_key.pem -- 支付宝公钥
├    └── app_private_key.pem -- 应用私钥
├── pay.py -- 生成一个alipay对象
└── settings.py -- 配置文件

__init.py__

from .pay import alipay
from .settings import GATEWAY

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 = '100'

# 加密方式
SIGN = 'RSA2'

# 是否是支付宝测试环境(沙箱环境),如果采用真是支付宝环境,配置False
DEBUG = True

# 支付网关
GATEWAY = 'https://openapi.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="2021000121627616",
    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)  # 可选,请求超时时间
)

项目中使用:

# 导入包中的alipay对象和GATEWAY网关接口
res = alipay.api_alipay_trade_page_pay(
    out_trade_no='1000101',  # 订单号
    total_amount=float(999),  # 价格
    subject='气球',  # 名称
    return_url='http://127.0.0.1:8000',
    notify_url='http://127.0.0.1:8000',
)

pay_url = GATEWAY + res
print(pay_url)

原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/tech/python/275434.html

(0)
上一篇 2022年7月19日 19:28
下一篇 2022年7月19日 19:38

相关推荐

发表回复

登录后才能评论