django實(shí)現(xiàn)支付寶支付實(shí)例講解
更新時(shí)間:2019年10月17日 15:58:12 作者:BZ易風(fēng)
在本篇文章里小編給大家整理的是一篇關(guān)于django支付寶支付的代碼實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
安裝python-alipay-sdk
pip install python-alipay-sdk --upgrade
配置

視圖函數(shù)orders/views.py
# 訂單支付
# /order/pay
from alipay import AliPay, ISVAliPay
import os
from django.conf import settings
class OrderPayView(View):
def post(self, request):
'''支付頁面'''
# 判斷用戶是否登錄
user = request.user
if not user.is_authenticated():
return JsonResponse({'res':0, 'errmsg':'用戶尚未登錄'})
# 接收訂單id
order_id = request.POST.get('order_id')
# 校驗(yàn)訂單id
if not order_id:
return JsonResponse({'res':1, 'errmsg':'無效的訂單id'})
# 查詢訂單信息
try:
order = OrderInfo.objects.get(order_id=order_id, user=user, pay_method=3, order_status=1)
except OrderInfo.DoesNotExist:
return JsonResponse({'res':2, 'errmsg':'訂單錯(cuò)誤'})
# 業(yè)務(wù)處理 使用python sdk調(diào)用支付寶的支付接口
# 支付寶信息 不能放在settings里 會(huì)報(bào)錯(cuò)
alipay = AliPay(
appid="2016101200665304",
app_notify_url=None, # 默認(rèn)回調(diào)url 如果為空的話不能用'' 要用None
# 個(gè)人私鑰
app_private_key_string=os.path.join(settings.BASE_DIR, 'apps/orders/app_private_key.pem'),
# 支付寶的公鑰,驗(yàn)證支付寶回傳消息使用,不是你自己的公鑰,
alipay_public_key_string=os.path.join(settings.BASE_DIR, 'apps/orders/alipay_public_key.pem'),
# 加密方式
sign_type="RSA2", # RSA 或者 RSA2
# 沙箱是True 正式環(huán)境是False
debug=True # 默認(rèn)False
)
# 調(diào)用支付接口
# 電腦網(wǎng)站支付,需要跳轉(zhuǎn)到https://openapi.alipay.com/gateway.do? + order_string 實(shí)際地址
# 沙箱地址 https://openapi.alipaydev.com/gateway.do? + order_string 沙箱地址在alipay后面加上dev
total_price = order.total_price + order.transit_price # Decimal
order_string = alipay.api_alipay_trade_page_pay(
out_trade_no=order_id, # 訂單id
total_amount=str(total_price), # 支付總金額 因?yàn)镈ecimal格式不能序列化 所以先轉(zhuǎn)成字符串
subject='天天生鮮%s'%order_id,
return_url=None,
notify_url=None # 可選, 不填則使用默認(rèn)notify url
)
# 返回應(yīng)答
pay_url = 'https://openapi.alipaydev.com/gateway.do?' + order_string
return JsonResponse({'res':3, 'pay_url':pay_url})
配置路由urls.py
from django.conf.urls import url from orders.views import OrderPlaceView, OrderCommitView, OrderPayView urlpatterns = [ url(r'^place$', OrderPlaceView.as_view(), name='place'), # 提交訂單頁面 url(r'^commit$', OrderCommitView.as_view(), name='commit'), # 提交訂單處理 url(r'^pay$', OrderPayView.as_view(), name='pay'), # 訂單支付 ]
以上就是本次介紹的相關(guān)知識(shí)點(diǎn)以及實(shí)例代碼,更多內(nèi)容可以參考腳本之家相關(guān)欄目。
相關(guān)文章
Python 高級(jí)庫15 個(gè)讓新手愛不釋手(推薦)
對(duì)于初學(xué)者來說,這是一種簡(jiǎn)單易學(xué)的編程語言;另一個(gè)原因:大量開箱即用的第三方庫,正是 23 萬個(gè)由用戶提供的軟件包使得 Python 真正強(qiáng)大和流行,本文給大家分享15 個(gè)讓新手愛不釋手Python 高級(jí)庫的相關(guān)知識(shí),感興趣的朋友一起看看吧2021-05-05
如何使用PyCharm將代碼上傳到GitHub上(圖文詳解)
這篇文章主要介紹了如何使用PyCharm將代碼上傳到GitHub上(圖文詳解),文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
解決numpy矩陣相減出現(xiàn)的負(fù)值自動(dòng)轉(zhuǎn)正值的問題
這篇文章主要介紹了解決numpy矩陣相減出現(xiàn)的負(fù)值自動(dòng)轉(zhuǎn)正值的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06
在Python中處理時(shí)間之clock()方法的使用
這篇文章主要介紹了在Python中處理時(shí)間之clock()方法的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
Python網(wǎng)絡(luò)爬蟲與信息提取(實(shí)例講解)
下面小編就為大家?guī)硪黄狿ython網(wǎng)絡(luò)爬蟲與信息提取(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08
10個(gè)Python中python_docx庫的實(shí)用案例分享
在日常辦公和文檔處理中,Word文檔是我們最常用的格式之一,Python通過python?-?docx庫能夠?qū)崿F(xiàn)對(duì)Word文檔的各種自動(dòng)化操作,本文為大家準(zhǔn)備了10個(gè)常用的案例,希望對(duì)大家有所幫助2025-02-02

