Django框架(十三)--支付

一、Django支付

微信

请求地址

https://pay.weixin.qq.com/static/applyment_guide/applyment_index.shtml
在这里插入图片描述

申请条件
在这里插入图片描述

支付宝

支付宝支付流程:

  • 卖家发出购买请求,服务生成订单
    在这里插入图片描述

  • 提交订单,卖家将支付请求发到支付宝

  • 支付宝返回支付页面

  • 买家在支付页面完成支付

  • 支付处理付款请求

  • 支付宝返回处理结果(支付完成,支付失败,支付进行中)

支付url

https://open.alipay.com/platform/home.htm
在这里插入图片描述
开发测试 使用沙箱环境
在这里插入图片描述
在这里插入图片描述

下载安卓端
在这里插入图片描述

账号信息
在这里插入图片描述

支付宝接口文档地址 https://docs.open.alipay.com/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置公钥 私钥
在这里插入图片描述
在这里插入图片描述
以卖家的身份进行收款,

支付宝已经写好的sdk,可以使用模块的方式使用,

使用需要安装

pip install pycryptodome    ## 阿里sdk的依赖包
pip install python-alipay-sdk --upgrade

使用python完成支付

创建文件,测试demo

from alipay import AliPay

# 公钥
alipay_public_key_string = '''-----BEGIN PUBLIC KEY-----
公钥
-----END PUBLIC KEY-----'''
# 私钥
alipay_private_key_string='''-----BEGIN PRIVATE KEY-----
私钥
-----END PRIVATE KEY-----'''
# 实例化支付对象
alipay = AliPay(
    appid='2016101300673951',
    app_notify_url=None,
    app_private_key_string=alipay_private_key_string,
    alipay_public_key_string=alipay_public_key_string,
    sign_type="RSA2",
)
# 实例化订单
order_string = alipay.api_alipay_trade_page_pay(
    subject = '牛羊生鲜',    # 交易主题
    out_trade_no = '10000000009',    # 订单号
    total_amount='400000',    # 交易总金额
    return_url=None,    # 请求支付之后及时回调的一个接口
    notify_url=None    # 通知地址
)
# 发送支付请求
# 请求地址:支付网关+实例化订单

result = 'https://openapi.alipaydev.com/gateway.do?'+order_string
print(result)

完成

  • 提交订单,卖家将支付请求发到支付宝
  • 支付宝返回支付页面
  • 买家在支付页面完成支付

settings.py

在这里插入图片描述

视图

from alipay import AliPay
from Qshop.settings import alipay_private_key_string,alipay_public_key_string
def AlipayView(request):
    order_id=request.GET.get('order_id')    # 订单ID
    payorder=PayOrder.objects.get(id=order_id)
    # 实例化支付对象
    alipay = AliPay(
        appid='2016101300673951',
        app_notify_url=None,
        app_private_key_string=alipay_private_key_string,
        alipay_public_key_string=alipay_public_key_string,
        sign_type="RSA2",
    )
    # 实例化订单
    order_string = alipay.api_alipay_trade_page_pay(
        subject='天天生鲜',  # 交易主题
        out_trade_no=payorder.order_number,  # 订单号
        total_amount=str(payorder.order_total),  # 交易总金额
        return_url=None,  # 请求支付之后及时回调的一个接口
        notify_url=None  # 通知地址
    )
    # 发送支付请求
    # 请求地址:支付网关+实例化订单
    result = 'https://openapi.alipaydev.com/gateway.do?' + order_string
    return HttpResponseRedirect(result)

路由

在这里插入图片描述

模板在这里插入图片描述

支付提交后,跳转到结果页面

返回处理结果

视图

在这里插入图片描述

def payresult(request):
    order_number = request.GET.get('out_trade_no')
    payorder = PayOrder.objects.get(order_number=order_number)
    payorder.order_status=1
    payorder.save()
    return render(request,'buyer/payresult.html',locals())

路由

在这里插入图片描述

模板

{% extends 'buyer/base.html' %}
{% block title %}
  支付结果
{% endblock %}
{% block content %}
  <div class="list_model">
    <h1>支付结果</h1>
    <table>
    {% for key,value in request.GET.items %}
      <tr>
        <th>{{ key }}:</th>
        <td>{{ value }}</td>
      </tr>
    {% endfor %}
    </table>
  </div>
{% endblock %}

其他支付方式

富有,连连,渤海银行,攀枝花银行,民生银行

请求方式

  • api接口
  • form表单(网关接口)

form表单支付流程
在这里插入图片描述
api支付流程
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章