支付宝支付

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': '创建失败'})
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值