首頁 > Python教程 > Python應用 > Python開發:在django中實現支付寶支付的代碼分享

Python開發:在django中實現支付寶支付的代碼分享

時間:2019-10-17    作者:BZ易風   來源:互聯網

安裝python-alipay-sdk

pip install python-alipay-sdk --upgrade

 

配置

視圖函數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')
    # 校驗訂單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':'訂單錯誤'})

    # 業務處理 使用python sdk調用支付寶的支付接口
    # 支付寶信息  不能放在settings里 會報錯
    alipay = AliPay(
      appid="2016101200665304",
      app_notify_url=None, # 默認回調url 如果為空的話不能用'' 要用None
      # 個人私鑰
      app_private_key_string=os.path.join(settings.BASE_DIR, 'apps/orders/app_private_key.pem'),
      # 支付寶的公鑰,驗證支付寶回傳消息使用,不是你自己的公鑰,
      alipay_public_key_string=os.path.join(settings.BASE_DIR, 'apps/orders/alipay_public_key.pem'),
      # 加密方式
      sign_type="RSA2", # RSA 或者 RSA2
      # 沙箱是True 正式環境是False
      debug=True # 默認False
    )
    # 調用支付接口
    # 電腦網站支付,需要跳轉到https://openapi.alipay.com/gateway.do? + order_string 實際地址
    # 沙箱地址 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), # 支付總金額 因為Decimal格式不能序列化 所以先轉成字符串
      subject='天天生鮮%s'%order_id,
      return_url=None,
      notify_url=None # 可選, 不填則使用默認notify url
    )
    # 返回應答
    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'), # 訂單支付

]

以上就是本次介紹的相關知識點以及實例代碼,更多內容可以參考相關欄目。

相關推薦
分享:Django Admin中增加導出CSV功能過程詳解
Python開發:Django中間件攔截未登錄url實例詳解
Django框架教程:Pagination分頁實現代碼實例
python開發:矢量數據轉柵格數據代碼分享
python開發:多進程間通信代碼實現例子
用Python爬取B站5000 條視頻,揭秘為何千萬人為它流淚!
Python教程:如何用xlrd和xlwt庫讀和寫Excel表格?
Python安裝MySQL-python:EnvironmentError的解決辦法
分享:Python2和Python3有那些差異?
Python 的內置對象都藏了哪些小秘密?
實戰干貨!用案例讓你一文搞懂python網絡爬蟲
Python教程:圖像處理模塊ndimage用法實例分析
Python教程:代理IP爬蟲的使用方法
Python教程:如何使用scipy模塊實現一維卷積運算示例?
Python:關于內存分配時的那些小秘密分享
python技巧:global關鍵字的用法詳解
Python教程:深入了解python在HDA中的應用
python技巧:SSLerror的requests證書問題解決方法
PyCharm教程:搭建Spark開發環境的幾個步驟
Python開發技巧:openpyxl讀取單元格字體顏色過程解析
Python教程:面向對象之Web靜態服務器
Python教程:如何為終端提供持久性歷史記錄
Python技巧分享:自動登錄淘寶并保存登錄信息的方法
Python數據分析:利用Flask動態展示 Pyecharts 圖表數據方法
python3教程:如何搭建微型的web服務器?
python技巧:xlwt如何設置單元格的自定義背景顏色
如何解決Python字符串和正則表達式中的反斜杠('\')問題?
Python開發技巧:編寫一個簡單登錄功能過程解析
Python編程:postman傳遞當前時間戳實例詳解
Python爬蟲教程:使用beautifulSoup4爬取名言網案例代碼分享
python開發:動態遷移solr數據過程分享
python數據分析:用線性回歸預測股票價格的代碼分析
Python教程:數據分析模塊pandas用法詳解
Python3教程:pandas.merge用法詳解
Python爬蟲案例:如何爬取豆瓣電影信息?附代碼實例

精彩推薦

熱門教程

重庆时时开奖直播app 王者里面怎么赚钱吗 醉逍遥40级怎么赚钱 二八杠提现棋牌游戏 赚钱和多巴胺 金牛棋牌游戏大厅下载 体彩p5走势图 百家高频彩 体彩江苏7位数开奖结果 美女猜拳真人游戏 新时时彩宝典下载 北京十一选五手机版走势图 跑滴滴怎样赚钱多 业余打羽毛球怎么赚钱 斗鱼一起看主播赚钱吗 视赚能赚钱吗 爱丽丝是什么意思