一、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支付流程