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支付流程
在這裏插入圖片描述

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