Django实现支付宝支付
一 去支付宝申请
- 正式:营业执照
- 测试: 沙箱测试环境
APPID:2016092000554391
买家: esnrce2727@sandbox.com
登录和支付密码: 111111
b. 开发服务SDK
- SDK 官方
- github
pay.py
依赖: pip install pycryptodome
公钥私钥:
- 应用公钥
- 支付宝公钥
- 应用私钥
支付宝沙箱环境:https://openhome.alipay.com/platform/appDaily.htm?tab=info

二 获得SDK并生成RSA密钥
1 下载阿里官方SDK
pip install alipay-sdk-python
2 生成一对商户RSA密钥

3 将公钥上传到支付宝后生成一个支付宝公钥


三 Django代码的实现
支付流程图

from django.shortcuts import render, redirect
from django.http import HttpResponse
from rest_framework.views import APIView
from rest_framework.response import Response
from alipay.aop.api.DefaultAlipayClient import DefaultAlipayClient
from alipay.aop.api.AlipayClientConfig import AlipayClientConfig
from alipay.aop.api.domain.AlipayTradePrecreateModel import AlipayTradePrecreateModel
from alipay.aop.api.request. AlipayTradePrecreateRequest import AlipayTradePrecreateRequest
from alipay.aop.api.domain.AlipayTradePagePayModel import AlipayTradePagePayModel
from alipay.aop.api.request.AlipayTradePagePayRequest import AlipayTradePagePayRequest
import time # Create your views here.
# 沙箱环境地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info # "https://openapi.alipaydev.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2" def ali_pay():
# 为阿里支付实例化一个配置信息对象
alipay_config = AlipayClientConfig(sandbox_debug=True)
# 初始化各种配置信息
# 阿里提供服务的接口
alipay_config.server_url = "https://openapi.alipaydev.com/gateway.do"
# 申请的沙箱环境的app_id
alipay_config.app_id = ""
# 商户的私钥
with open("keys/app_private_key.txt") as f:
alipay_config.app_private_key = f.read()
# 阿里的公钥
with open("keys/alipay_public_key.txt") as f:
alipay_config.alipay_public_key = f.read()
# 实例化一个支付对象并返回
alipay_client = DefaultAlipayClient(alipay_client_config=alipay_config)
return alipay_client class AliPayView(APIView):
def get(self, request):
return render(request, "pay.html") # 生成支付宝自带页面的API
def post(self, request):
# 得到阿里支付的实例化对象
client = ali_pay()
# 为API生成一个模板对象 初始化参数用的
model = AlipayTradePagePayModel()
# 订单号
model.out_trade_no = "pay" + str(time.time())
# 金额
model.total_amount = 8888
# 商品标题
model.subject = "测试"
# 商品详细内容
model.body = "支付宝测试"
# 销售产品码,与支付宝签约的产品码名称
model.product_code = "FAST_INSTANT_TRADE_PAY"
# 实例化一个请求对象
request = AlipayTradePagePayRequest(biz_model=model)
# get请求 用户支付成功后返回的页面请求地址
request.return_url = "http://140.143.63.45:8888/alipay_handler"
# post请求 用户支付成功通知商户的请求地址
request.notify_url = "http://140.143.63.45:8888/alipay_handler"
# 利用阿里支付对象发一个获得页面的请求 参数是request
response = client.page_execute(request, http_method="GET")
return redirect(response) class PayHandlerView(APIView): def get(self, request):
# return_url的回调地址
print(request.data)
# 用户支付成功之后回到哪
return HttpResponse("return_url测试") def post(self, request):
print(request.data)
# 用户支付成功 在这里修改订单状态以及优惠券贝里等等情况
return HttpResponse("notify_url")
Django实现支付宝支付的更多相关文章
- Django 对接 支付宝支付, 回调
平台 点击这里进入 蚂蚁金服开放平台 沙箱 点击这里进入 沙箱环境 初始界面 设置公钥 下载创建秘钥工具 1. 进入文档中心 这里 2. 选中 电脑网站支付 3. 进入后选中 API 列表 中的 统 ...
- Django实现支付宝支付(沙箱)
1.安装SDK 点击右侧沙箱当面付接入指导,之后可以看到一个下载SDK的按钮,点击后,会有python的SDK下载链接,但还是属于公测中,也可以通过在cmd里输入以下代码来安装. pip instal ...
- $Django 支付宝支付,微信服务号推送消息 (测试需要把应用程序部署到服务器上)
一 支付宝支付 大概 支付宝支付 正式环境:需要用营业执照去申请商户号,appid 测试环境:沙箱环境:https://openhome.alipay.com/platform/appDaily.ht ...
- 在django中实现支付宝支付(支付宝接口调用)
支付宝支付 正式环境:用营业执照,申请商户号,appid 测试环境:沙箱环境:https://openhome.alipay.com/platform/appDaily.htm?tab=info 支付 ...
- Django实现支付宝付款和微信支付
支付宝支付和微信支付是当今互联网产品常用的功能,我使用Django Rest Framework实现了网页上支付宝支付和微信支付的一个通用服务,提供rpc接口给其他服务,包括获取支付宝支付页面url的 ...
- Django day35 redis连接池,redis-list操作,django中使用redis,支付宝支付
一:redis连接池, 二:redis-list操作, 三:django中使用redis, 四:支付宝支付
- python调用支付宝支付接口详细示例—附带Django demo代码
项目演示: 一.输入金额 二.跳转到支付宝付款 三.支付成功 四.跳转回自己网站 在使用支付宝接口的前期准备: 1.支付宝公钥 2.应用公钥 3.应用私钥 4.APPID 5.Django 1.11. ...
- django中使用事务以及接入支付宝支付功能
之前一直想记录一下在项目中使用到的事务以及支付宝支付功能,自己一直犯懒没有完,趁今天有点兴致,在这记录一下. 商城项目必备的就是支付订单的功能,所以就会涉及到订单的保存以及支付接口的引入.先来看看订单 ...
- django支付宝支付集成
概要 本文是关于django集成支付宝[电脑网站支付]功能的过程记录. 功能逻辑主要分为两块: 用户下单跳转至支付宝支付界面 支付成功的回调验证 本文用到的alipay-sdk是基于阿里开发文档htt ...
随机推荐
- Python 回调函数
什么是回调函数? 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数: 这是官方的解释,理解上有点费 ...
- Zookeeper 集群搭建--单机伪分布式集群
一. zk集群,主从节点,心跳机制(选举模式) 二.Zookeeper集群搭建注意点 1.配置数据文件 myid 1/2/3 对应 server.1/2/3 2.通过./zkCli.sh -serve ...
- 【python】numpy中的shape用法
转自 https://blog.csdn.net/u010758410/article/details/71554224# shape函数是numpy.core.fromnumeric中的函数,它的功 ...
- 右击菜单一键优化(增加新建office2003、新建reg和bat,删除新建公文包、新建wps、新建rar)
右击菜单一键优化(增加新建office2003.新建reg和bat,删除新建公文包.新建wps.新建rar) Windows Registry Editor Version 5.00 [HKEY_CL ...
- 前端-JavaScript1-6——JavaScript之变量类型的转换
6.1 string → number 先来学习一个语句,这个语句和alert差不多,也是弹窗,弹的是输入框: 1 prompt("请输入你的电话","139&qu ...
- python网页爬虫开发之五-反爬
1.头信息检查是否频繁相同 随机产生一个headers, #user_agent 集合 user_agent_list = [ 'Mozilla/5.0 (Windows NT 6.1; WOW64 ...
- jquery:获取checked复选框的问题
jquery:获取checked复选框的问题 功能描述:要完成一个全选的功能,但总是获取不到复选框的被选中的个数,究其原因,是Jquery中length和checked使用不当所造成的. // 获取所 ...
- Java内存泄漏的几种可能
Java内存泄漏引起的原因: 内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成内存空间的浪费称为内存泄漏. 长生命周期的对象持有短生命周期对象的引用就很可能发 ...
- Android 开发 知晓各种id信息 获取线程ID、activityID、内核ID
/** * Returns the identifier of this process's user. * 返回此进程的用户的标识符. */ Log.e(TAG, "Process.myU ...
- python学习笔记_week27
search import time import random def cal_time(func): def wrapper(*args, **kwargs): t1 = time.time() ...