ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python实现支付宝支付功能

2022-07-19 19:05:50  阅读:187  来源: 互联网

标签:alipay 支付宝 公钥 python pay url key 支付


目录

支付宝支付基本使用

第一步:测试用支付宝的沙箱环境:支付宝开放平台 (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)

标签:alipay,支付宝,公钥,python,pay,url,key,支付
来源: https://www.cnblogs.com/yume-zbh/p/16495265.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有