支付宝支付
支付宝支付
使用支付宝的沙箱环境
'''
	https://openhome.alipay.com/platform/appDaily.htm?tab=info
'''
SDK
由于原来支付宝没有提供python的SDK,但是第三方有人基于api接口封装了一个SDK
现在支付宝提供了python的SDK
目前还是用第三方的sdk:https://github.com/fzlee/alipay
'''
  pip install python-alipay-sdk --upgrade
'''
接口加签---自定义密钥---->公钥模式
根据步骤点击,然后我们去下载支付宝密钥生成器,下载后安装即可。
生成密钥
然后我们复制公钥
简单使用
在项目中创建任意一个文件夹,存放刚刚生成的公钥和密钥
在支付宝上下载的公钥是一个字符串,你需要在文本的首尾添加标记位:
-----BEGIN PUBLIC KEY----- 和 -----END PUBLIC KEY-----
才能正常使用
'''
    -----BEGIN PUBLIC KEY-----
    支付宝公钥(放在这)ps:不是应用公钥
    -----END PUBLIC KEY-----
    
    -----BEGIN RSA PRIVATE KEY-----
    应用私钥
    -----END RSA PRIVATE KEY-----
必须严格格式
'''
'''
	在需要修改的后面加了 ******
'''
from alipay import AliPay
app_private_key_string = open("./pri").read() //对应的私钥地址        ******
alipay_public_key_string = open("./pub").read() //对应的公钥地址        ******
alipay = AliPay(
    appid="2021000121628487", // 在沙河应用中可以找到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=True,  # 默认 False
)
# 电脑网站支付,需要跳转到:https://openapi.alipay.com/gateway.do? + order_string
order_string=alipay.api_alipay_trade_page_pay(
    out_trade_no='2088621987702062',//订单编号(不能重复)     ******
    total_amount=float(999),  # 只有生成支付宝链接时,不能用Decimal,商品的总价要使用float转换
    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+order_string) //生成的支付跳转链接,访问即可付款
二次封装
包结构
ipay
|__ __init__.py
|__ key(存放公钥和私钥)(文件夹)
	|___ 支付宝公钥(文件)
	|___ 应用私钥(文件)
|__ pay.py #生成支付对象
|__ 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__)), 'key', '公钥文件名')).read()
# 支付宝公钥
ALIPAY_PUBLIC_KEY_STRING = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'key', '私钥文件名')).read()
# 应用ID APPID 在沙河应用中可以找到APPID
APP_ID = '2016092000554611'
# 加密方式
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 . 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
)
封装成函数
导入ipay包中的alipay对象和支付宝网关地址
from  ipay import alipay,GATEWAY
'''
	out_trade_no: 商户PID
	total_amount:总价
	subject:描述
'''
def get_pay_url(out_trade_no,total_amount,subject):
    order_string =alipay.api_alipay_trade_page_pay(
        out_trade_no=out_trade_no, # 订单号(不能重复)
        total_amount=float(total_amount),  # 只有生成支付宝链接时,不能用Decimal
        subject=subject,
        return_url=settings.RETURN_URL, # post 回调地址
        notify_url=settings.NOTIFY_URL, # get 回调地址
    )
    pay_url = GATEWAY + order_string
    return pay_url
'''
	可以将函数封装到包中,使用时只需要导出该方法即可,返回一个支付链接
'''
再次调整包结构
ipay
|__ __init__.py
|__ key(存放公钥和私钥)(文件夹)
	|___ 支付宝公钥(文件)
	|___ 应用私钥(文件)
|__ pay.py #生成支付对象
	|__ get_pay_url() # 获取支付地址函数
|__ settings.py #配置文件
'''
	如有报错,自行修改导入的模块路径
'''
使用
'''
	使用时只需要先修改配置文件,然后导入get_pay_url函数即可
'''
from ipay import get_pay_url
url = get_pay_url('20882','4000000','RS8') # url为生成的支付地址
print(url)
                    
                
                
            
        
浙公网安备 33010602011771号