django实现支付宝支付实例讲解
2019-10-18 07:04
1586 查看
安装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实现用支付宝支付
- 分享一个django实现支付宝网站支付的链接
- Android接入支付宝实现支付功能实例
- 微信h5支付统一下单接口,实现用户在h5页面使用微信支付——微信h5支付开发实例7
- js实现继承的几种方式实例讲解
- 微信和支付宝支付模式详解及实现(.Net标准库)- OSS开源系列
- Java Web应用程序实现基础的文件下载功能的实例讲解
- 实例讲解Exchange代表发送和代理发送的具体实现和关键区别
- Android 不集成支付宝sdk实现收款功能 通过Intent调起支付宝支付
- Django中实现一个高性能计数器(Counter)实例
- 支付宝即时到帐接口的python实现,演示样例採用django框架
- iOS、Android支付宝支付 PHP端实现逻辑
- 微信小程序 支付后台java实现实例
- 实例讲解ASP实现抓取网上房产信息
- [转]hive实例讲解实现in和not in子句
- Android 微信 支付宝支付,2行代码实现支付
- DEDECMS使用支付宝支付成功后发邮件给站长的实现方法
- ajax实现用户名校验的传统和jquery的$.post方式(实例讲解)
- 支付宝统一收单接口实现支付宝支付
- 用一个实例讲解数据增量抽取的模拟实现