1. 支付宝设置
支付宝开发平台登录
沙箱环境
-
是支付宝提供给开发者的模拟支付的环境
-
跟真实环境是分开的
-
沙箱应用:沙箱环境 | 网页&移动应用
-
沙箱账号:登录 - 支付宝
支付宝开发者文档
-
文档主页:支付宝开放平台文档中心
-
产品介绍:电脑网站支付 | 网页&移动应用
-
SDK
:
-
python对接支付宝SDK:https://github.com/fzlee/alipay/blob/master/README.zh-hans.md
-
python对接支付宝SDK安装:
pip install python-alipay-sdk --upgrade
-
-
API列表:网页&移动应用学习路径 | 网页&移动应用
2.生成签名
主目录下新建一个key文件夹,把生成的签名放到文件夹中
public加头尾
-----BEGIN PUBLIC KEY----- -----END PUBLIC KEY-----
private加头尾
-----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----
3.支付宝公钥配制
点击设置把生成的公钥复制进去,点击确定。点击查看复制生成的公钥,把key文件下的public中更新
4.sdk
在utils中新建一个pay.py,如果安装不了Crypto模块,换成Cryptodome
from datetime import datetime
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA256
from urllib.parse import quote_plus
from urllib.parse import urlparse, parse_qs
from base64 import decodebytes, encodebytes
import json
class AliPay(object):
"""
支付宝支付接口(PC端支付接口)
"""
def __init__(self, appid, app_notify_url, app_private_key_path,
alipay_public_key_path, return_url, debug=False):
self.appid = appid
self.app_notify_url = app_notify_url
self.app_private_key_path = app_private_key_path
self.app_private_key = None
self.return_url = return_url
with open(self.app_private_key_path) as fp:
self.app_private_key = RSA.importKey(fp.read())
self.alipay_public_key_path = alipay_public_key_path
with open(self.alipay_public_key_path) as fp:
self.alipay_public_key = RSA.importKey(fp.read())
if debug is True:
self.__gateway = "https://openapi.alipaydev.com/gateway.do"
else:
self.__gateway = "https://openapi.alipay.com/gateway.do"
def direct_pay(self, subject, out_trade_no, total_amount, return_url=None, **kwargs):
biz_content = {
"subject": subject,
"out_trade_no": out_trade_no,
"total_amount": total_amount,
"product_code": "FAST_INSTANT_TRADE_PAY",
# "qr_pay_mode":4
}
biz_content.update(kwargs)
data = self.build_body("alipay.trade.page.pay", biz_content, self.return_url)
return self.sign_data(data)
def build_body(self, method, biz_content, return_url=None):
data = {
"app_id": self.appid,
"method": method,
"charset": "utf-8",
"sign_type": "RSA2",
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"version": "1.0",
"biz_content": biz_content
}
if return_url is not None:
data["notify_url"] = self.app_notify_url
data["return_url"] = self.return_url
return data
def sig

这篇博客详细介绍了如何在Flask项目中集成支付宝支付功能,从支付宝开发平台的登录和沙箱环境的设置,到SDK的安装和签名的生成,再到公钥配置和支付接口的调用,最后讲解了回调接口的实现。通过实例代码,帮助开发者理解并实现在自己的项目中添加支付宝支付。
最低0.47元/天 解锁文章
3011

被折叠的 条评论
为什么被折叠?



