zoukankan      html  css  js  c++  java
  • Django——支付宝支付功能

    前期准备

    首先我们需要获得支付宝提供的权限与接口,在蚂蚁开放平台进行相关申请:https://openhome.alipay.com/platform/appDaily.htm?tab=info

    申请支付宝账户权限

    iHMqr4.png

    创建应用

    iHMIP0.png

    沙箱测试环境

    iHM45q.png

    appID:我的身份

    支付宝网关:测试环境

    获得相关的测试账号

    iHQise.png

    商户账号、客户账号后面可以通过这两个账号来进行测试

    沙箱钱包(也可以不下载,直接在网页上登陆测试账号进行支付测试)

    iHMoGV.png

    在安卓手机上进行安装

    获得SDK(pay.py)

    就是加密算法

    SDK(加密算法,阿里没有提供python版本,从github山获得)

    官方

    GIHUB(请注意浏览源码)——pay.py(依赖:pip install pycryptodome)

    公钥私钥

    iHM7xU.png

    在这里下载
    iHMXZ9.png

    运行
    iHMbMF.png

    iHMLqJ.png

    生成公钥私钥
    iHMjaR.png

    完成上传

    iHMzPx.png

    应用公钥上传后自动生成支付宝公钥

    在django文件中进行替换成自己的key

    1541664121222

    django程序

    演示

    1.运行

    2.访问去支付

    iHMhan.png

    3.支付页面

    iHMT2T.png

    4.登陆测试用户,完成支付

    iHQpRK.png

    iHMvI1.png

    最终跳转到

    iHQSG6.png

    说明功能正常

    Django实现

    代码结构

    iHQ9xO.png

    views.py

    from django.shortcuts import render,redirect,HttpResponse
    from django.views.decorators.csrf import csrf_exempt
    from utils.pay import AliPay
    import time
    from django.conf import settings
    
    def aliPay():
        obj = AliPay(
            appid=settings.APPID,
            app_notify_url=settings.NOTIFY_URL,  # 如果支付成功,支付宝会向这个地址发送POST请求(校验是否支付已经完成)
            return_url=settings.RETURN_URL,  # 如果支付成功,重定向回到你的网站的地址。
            alipay_public_key_path=settings.PUB_KEY_PATH,  # 支付宝公钥
            app_private_key_path=settings.PRI_KEY_PATH,  # 应用私钥
            debug=True,  # 默认False,
        )
        return obj
    
    def index(request):
        if request.method == 'GET':
            return render(request,'index.html')
    
    
    
        alipay = aliPay()
    
        # 对购买的数据进行加密
        money = float(request.POST.get('price'))
        out_trade_no = "x2" + str(time.time())
        # 1. 在数据库创建一条数据:状态(待支付)
    
        query_params = alipay.direct_pay(
            subject="充气式韩红",  # 商品简单描述
            out_trade_no= out_trade_no,  # 商户订单号
            total_amount=money,  # 交易金额(单位: 元 保留俩位小数)
        )
    
        pay_url = "https://openapi.alipaydev.com/gateway.do?{}".format(query_params)
    
        return redirect(pay_url)
    
    
    def pay_result(request):
        """
        支付完成后,跳转回的地址
        :param request:
        :return:
        """
        params = request.GET.dict()
        sign = params.pop('sign', None)
    
        alipay = aliPay()
    
        status = alipay.verify(params, sign)
    
        if status:
            return HttpResponse('支付成功')
        return HttpResponse('支付失败')
    
    
    
    @csrf_exempt
    def update_order(request):
        """
        支付成功后,支付宝向该地址发送的POST请求(用于修改订单状态)
        :param request:
        :return:
        """
        if request.method == 'POST':
            from urllib.parse import parse_qs
    
            body_str = request.body.decode('utf-8')
            post_data = parse_qs(body_str)
    
            post_dict = {}
            for k, v in post_data.items():
                post_dict[k] = v[0]
    
            alipay = aliPay()
    
            sign = post_dict.pop('sign', None)
            status = alipay.verify(post_dict, sign)
            if status:
                # 修改订单状态
                out_trade_no = post_dict.get('out_trade_no')
                print(out_trade_no)
                # 2. 根据订单号将数据库中的数据进行更新
                return HttpResponse('支付成功')
            else:
                return HttpResponse('支付失败')
        return HttpResponse('')
    

    settings.py

    # 支付相关配置
    APPID = "2016082500309412"
    NOTIFY_URL = "http://47.106.237.76:80/update_order/"
    RETURN_URL = "http://47.106.237.76:80/pay_result/"
    PRI_KEY_PATH = "keys/app_private_2048.txt"
    PUB_KEY_PATH = "keys/alipay_public_2048.txt"
    
  • 相关阅读:
    微软首届Power Platform开发黑客松大赛
    PowerApps 简介
    PowerBI KPI 演示
    什么是Power Platform低代码
    利用Microsoft PowerApps模板,一分钟创建Service Desk服务程序
    Power Platform
    Microsoft Power Platform 低代码开发平台
    登录监听Enter键
    代理配置
    Enjoy the pain about Moloch
  • 原文地址:https://www.cnblogs.com/huang-yc/p/9930645.html
Copyright © 2011-2022 走看看