首页 > 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'), # 订单支付

]

以上就是本次介绍的相关知识点以及实例代码,更多内容可以参考相关栏目。

相关推荐
幸运大转盘游戏规则直营网
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爬虫案例:如何爬取豆瓣电影信息?附代码实例

精彩推荐

热门教程

网站地图 万家游戏官网直营网 幸运彩票网会员注册直营网 幸运彩票网真的吗直营网
2016申博sunbet线上 皇家赌场登入 126suncity.com 申博亚洲138
澳门网上投注 优发娱乐游戏登入 皇冠彩票登入 633易博河北快三
至尊彩票纸直营网 67彩注册直营网 至尊彩票纸直营网 568专业彩票官网直营网
彩票专业彩吧助手直营网 67彩网直营网 幸运之门彩票网推荐直营网 众彩平台直营网
XSB238.COM 587sunbet.com XSB9999.COM 989sunbet.com 1112932.COM
637xx.com 8ZJS.COM S618U.COM 9888DZ.COM 882XTD.COM
255PT.COM 5555ib.com XSB438.COM 9927w.com 508XTD.COM
508XTD.COM 777sbmsc.com 66sbmsc.com 999sbsg.com 1112978.COM