1.找到支付宝研发中心
2.生成支付宝公私钥网址:https://opendocs.alipay.com/open/291/106097/
3.将生成工具生成的应用公钥复制到应用公钥 把支付宝公钥保存到本地
python对接支付宝SDK安装:
pip install python-alipay-sdk --upgrade
python对接支付宝SDK文档:
https://github.com/fzlee/alipay/blob/master/README.zh-hans.md
MYBaseView封装
# 支付宝
from rest_framework_jwt.settings import api_settings
from 实验楼项目 import settings
import os
#导入阿里
from alipay import AliPay
#导入公私钥
app_private_key_path = os.path.join(settings.BASE_DIR, 'apps/goodsapp/keys/appkey.txt')
alipay_public_key_path = os.path.join(settings.BASE_DIR, 'apps/goodsapp/keys/alikey.txt')
def read_alikey():
# 读取文件信息
with open(app_private_key_path) as f:
app_private_key_string = f.read()
with open(alipay_public_key_path) as f:
alipay_private_key_string = f.read()
# 返回appkey和alikey
return app_private_key_string, alipay_private_key_string
def creat_zfb_url(out_trade_no, total_amount, subject):
appkey, alikey = read_alikey()
alipay = AliPay(
#支付宝APPID
appid=APP_KEY,
app_notify_url=None, # 默认回调url
app_private_key_string= app_private_key_path,
# # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
alipay_public_key_string=alipay_public_key_path,
sign_type='RSA',
debug = False, # 默认False
)
# 手机网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
order_string = alipay.api_alipay_trade_wap_pay(
out_trade_no=out_trade_no,
total_amount=total_amount,
subject=subject,
return_url =SHA_RETURN_URL
)
#回调地址在stting里配好 + 拼接地址
return SHA_URL+order_string
View
# 支付宝沙箱
# 导入封装好的代码
from utls.MYBaseView import creat_zfb_url
class ZFView(APIView):
def post(self, request):
# 获取数据
id = request.data.get('id')
use_id = request.user.id
# 验证数据
if not all([id, use_id]):
return Response({'code': 4005, 'mag': '参数不全'})
# 逻辑处理+入库
try:
order_obj = Orders.objects.get(id=id)
user_obj = User.objects.get(id=use_id)
# 生成支付宝订单号
string = '%s的订单号%s' % (user_obj.username, order_obj.order_id)
# 生成url
url = creat_zfb_url(order_obj.order_id, int(order_obj.total_amount), string)
return Response({'code': 200, 'msg': 'success', 'data': {'pay_url': url}})
except Exception as e:
return Response({'code': 999, 'msg': '创建失败'})