支付宝支付介绍
# 项目中需要有在线支付功能
-支付宝支付
-微信支付:备案过域名
-云闪付
# 咱们项目以支付宝支付为例
-支付流程
-API,sdk
-sdk:第三方sdk,基于API封装的
-官方sdk:https://opendocs.alipay.com/open/02no41
# 支付宝支付介绍
-申请条件很严苛
-沙箱环境:Sandbox:程序的虚拟执行环境,不需要申请各种认证,直接写程序,后期只需要换成只是的秘钥即可
1.用支付宝扫码登录:https://openhome.alipay.com/develop/sandbox/app
2.下载https://opendocs.alipay.com/open/02np9g:生成公钥秘钥
自定义秘钥中配置公钥--生成支付宝支付公钥
二、支付宝支付基本使用
# 使用沙箱环境
# 第三方的sdk:https://github.com/fzlee/alipay
-基于支付宝的API接口封装的,开源软件,
-pip3 install python-alipay-sdk
# 官方sdk
# 生成公钥私钥:支付宝提供咱们一个生成的工具
-https://opendocs.alipay.com/open/02np9g
-生成公钥私钥,在本地(私钥好好保管)
-非对称加密:
-公钥,私钥
-加密使用公钥,解密使用私钥
-对称加密:加密和解密使用同一个秘钥 :AES,DES
-我能保证秘钥不丢失
-解密也要同样的秘钥,解密的人万一把秘钥丢失了
# 把公钥填在支付宝网站上(沙箱环境,正式环境)
-把咱么的公钥填进网站,会生成一个支付宝公钥,以后项目中咱们使用支付宝公钥来做
支付宝的二次封装
1.基本使用
from alipay import AliPay
from alipay.utils import AliPayConfig
# 初始化得到对象,传入一堆参数
alipay = AliPay(
appid="2016092000554611", # app的id号
app_notify_url=None, # 默认回调 url
app_private_key_string=open('./app_private_key.pem').read(),
# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
alipay_public_key_string=open('./alipay_public_key.pem').read(),
sign_type="RSA2", # RSA 或者 RSA2
debug=False, # 默认 False
verbose=False, # 输出调试数据
config=AliPayConfig(timeout=15) # 可选,请求超时时间
)
# 生成支付链接
order_string = alipay.api_alipay_trade_page_pay(
out_trade_no="asdfasdfasdfasdfasdfasdf",
total_amount=99999,
subject='精品内衣',
return_url="https://example.com", # get回调地址
notify_url="https://example.com/notify" # post回调地址
)
# print('https://openapi.alipay.com/gateway.do?'+order_string)
print('https://openapi.alipaydev.com/gateway.do?'+order_string)
2.二次封装
alipay_common # 包名
pem # 放公钥私钥
alipay_public_key.pem
app_private_key.pem
__init__.py
pay.py # 核心文件
settings.py #配置文件
2.1 settings.py #配置文件:
import os
APPID = '2021000121697117'
# 应用私钥
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()
# 加密方式
SIGN = 'RSA2'
# 是否是支付宝测试环境(沙箱环境),如果采用真是支付宝环境,配置False
DEBUG = True
# 支付网关
GATEWAY = 'https://openapi.alipaydev.com/gateway.do?' if DEBUG else 'https://openapi.alipay.com/gateway.do?'
2.2 alipay_public_key.pem---支付宝公钥
app_private_key.pem---私钥
2.3 pay.py # 核心文件
from alipay.utils import AliPayConfig
from . import settings
# 初始化得到对象,传入一堆参数
alipay = AliPay(
appid=settings.APPID, # 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) # 可选,请求超时时间
)
2.4 __init__.py ---使用路径直接导到包
from .pay import alipay
from .settings import GATEWAY
沙箱环境支付软件下载
扫沙箱环境二维码下载