from rest_framework.views import APIView
from alipay import AliPay, DCAliPay, ISVAliPay
from django.http import JsonResponse
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
import time class Alipay(APIView):
authentication_classes = [] # 跳转支付
def get(self,request): # 初始化配置
app_private_key_string = open(BASE_DIR + "/payAPI/应用私钥2048.txt").read()
alipay_public_key_string = open(BASE_DIR + "/payAPI/支付宝公钥.txt").read() alipay = AliPay(
appid="你自己的ID",
app_notify_url=None, # 默认回调url
app_private_key_string=app_private_key_string,
# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
alipay_public_key_string=alipay_public_key_string,
sign_type="RSA2", # RSA 或者 RSA2
debug = True # 默认False
) # 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
order_string = alipay.api_alipay_trade_page_pay(
out_trade_no="订单号",
total_amount=str("总价"), 坑:要转换成字符串类型 否则会报错
subject="商品标题",
return_url=None,
notify_url=None # 可选, 不填则使用默认notify url
) message={}
message['pay_url'] = 'https://openapi.alipaydev.com/gateway.do?' + order_string return JsonResponse(message) # 查询订单支付情况
def post(self,request): # 初始化配置
app_private_key_string = open(BASE_DIR + "/payAPI/应用私钥2048.txt").read()
alipay_public_key_string = open(BASE_DIR + "/payAPI/支付宝公钥.txt").read() alipay = AliPay(
appid="你的APPID",
app_notify_url=None, # 默认回调url
app_private_key_string=app_private_key_string,
# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
alipay_public_key_string=alipay_public_key_string,
sign_type="RSA2", # RSA 或者 RSA2
debug = True # 默认False
)
message = {} while True:
result = alipay.api_alipay_trade_query("")
print(result)
print("trade_status",result.get("trade_status")) # 获取返回结果
code = result.get("code") if code == "" and result.get("trade_status") == "TRADE_SUCCESS":
# 支付成功
# 获取支付宝交易号
trade_no = result.get('trade_no')
print("支付宝交易号",trade_no)
# 更新订单状态
# 返回结果
message['code'] = 200
message['message'] = "支付成功"
return JsonResponse(message) elif code == "" or (code == "" and result.get("trade_status") == "WAIT_BUYER_PAY"):
# 等待买家付款
time.sleep(5)
continue
else:
# 支付出错
message['code'] = 444
message['message'] = "支付失败"
return JsonResponse(message)
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap 实例</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body> <div class="container"> <button type="button" class="btn btn-primary" id="pay">立即付款</button> </div> </body>
<script>
$("#pay").click(function () {
$.ajax({
url:"alipay",
type:"GET",
success:function (data) {
window.open(data.pay_url)
// 查询结果
$.ajax({
url:"alipay/result",
type:"POST",
success:function (data) {
if (data.code == 200){
alert("支付成功")
}else {
alert("支付失败")
}
}
}) }
})
})
</script>
</html>
# 支付宝付款测试
url(r'^$', href_index.Index.as_view()),
url(r'alipay$',alipay.Alipay.as_view()), # 查询
url(r'alipay/result$',alipay.Alipay.as_view()), # 查询结果

【支付宝SDK】沙箱调试,以及遇到的坑的更多相关文章

  1. 集成支付宝SDK遇到的坑

    一.首先我先把集成过程说一下.小编想说的话:支付宝是我做支付中觉得坑最多的一个,各种编译不过,各种出问题. 废话不多说,进入主题:1.首先当前是下载官方SDK啦,当前你也可以通过cocopods进行导 ...

  2. 嵌入支付宝SDK,出现“LaunchServices: ERROR: There is no registered handler for URL scheme alipay”错误

    应用项目中嵌入支付宝SDK,在模拟器运行app后,会出现“LaunchServices: ERROR: There is no registered handler for URL scheme al ...

  3. iOS开发——高级篇——如何集成支付宝SDK

    一.什么是支付宝 第三方支付平台 和内购非常相似内购是用户将钱付款给苹果,之后苹果分成给商户支付宝是用户将钱付款给支付宝,之后支付宝将钱转入我们的账户 使用支付宝前提购买的物品必须是和应用程序无关的. ...

  4. cocos2dx工程中接入支付宝sdk

    1. 首先去支付宝官网下载开发者文档 2. 然后按着开发者文档将支付宝的sdk导入到你的工程中,并关联到工程中,步骤入下图: (1)将从支付宝官方网站获得的支付宝的sdk的jar包拷贝到工程中的lib ...

  5. python 支付宝SDK

    python 支付宝SDK代码如下 from datetime import datetime from Crypto.PublicKey import RSA from Crypto.Signatu ...

  6. cocos2d-x android工程接入第三方支付宝SDK

    1. 首先去支付宝官网下载开发者文档 2. 然后按着开发者文档将支付宝的sdk导入到你的工程中,并关联到工程中,步骤入下图: (1)将从支付宝官方网站获得的支付宝的sdk的jar包拷贝到工程中的lib ...

  7. 支付宝sdk 支付订单查询失败

    最近遇到了一些问题,厂商给我们反馈了一个问题,就是支付宝支付成功之后,旋转屏幕,订单查询失败.后来我怀疑是支付宝的问题,想都不用想是支付宝的问题. 但是自己根本你无法复现,因为我发现支付宝支付完成之后 ...

  8. IOS --支付宝SDK 分解讲解

    开发在手机端的时候(客户端),我们主要负责客户端(手机端)的开发,所以那些繁琐的到支付宝官网填写商户信息可以留给后台去弄,后台只要把: 1回调地址, 2app的ID, 3商户的私钥(privateKe ...

  9. 基于IOS下的支付宝SDK的学习与使用——实现产品支付(二)

    首先本篇为作者原创,仅供学习使用,以后会不断完善,精炼.阅读之前请参考  上一篇 上一篇 中详细说明了结合官方支付宝SDK,对工程环境进行的一些配置,实现了支付,本篇重点说明一下,注意事项和原理,主要 ...

  10. 支付宝SDK

    由于支付宝SDK对于整个支付流程已经介绍的十分详细了,在这里我就简单说一些注意点. 由于存在支付宝可能没有安装的情况,所以我们在调用支付宝支付时,需要对其进行判断,做出不同的处理方式,即是使用客户端支 ...

随机推荐

  1. springboot手动事务回滚

    亲测在使用@Transactional.@Transactional(rollbackFor = Exception.class)及catch异常之后 throw new RuntimeExcepti ...

  2. WeChat 小程序开发

    第一步 去微信公众号平台注册> 一个账号https://mp.weixin.qq.com/ 填写完后 会获得一个APPID 2. 点击工具下载微信开发者工具安装即可, 1 2 3 微信开发者工具 ...

  3. 玩LOL间歇性卡顿(FPS突然降低又马上恢复)?Windows10间歇性卡顿?

    一..问题描述: LOL时:画面突然死掉,不能操作:FPS突然降低,从三位数降到两位数(150 -> 6).我最开始就是从LOL这里观测到的,因为游戏是卡顿最直观.最明显的表现.之后才发现不玩游 ...

  4. vue 修改路由

    直接放代码: this.$router.push({ path: "/login" });

  5. 前端 /deep/ 深入样式(很深入的那种哦) 简单收藏

    简单介绍:使用vue脚手架和elemen-ui开发的前端项目  遇到这样的场景: 对div下的el-select下拉组件 设置样式,直接在标签上用style属性是完全可以的,但我们的开发规范是前端样式 ...

  6. socket网络(二)

    作用域 python/js语言中,无块级作用域 if 1 == 1: name = 'alex' print(name) python中以函数为作用域 def func(): name = 'alex ...

  7. Python访问、修改、删除字典中的值

    Python访问字典中的值: # 使用字典 ['键'] 获取字典中的元素 dic = {'a':123,'b':456,'c':789} print(dic['a']) # print(dic['c' ...

  8. 定义 WSGI 接口

    # WSGI服务器调用 def application(environ,start_response): start_response('200 OK',[('Content-Type','text/ ...

  9. css浮动属性

    1.为什么需要浮动 HTML中的标签元素大致分为三类:块状元素.内联元素.内联块元素. 每种元素都有其各自的特点,其中块状元素会独占一行,而内联元素和内联块元素则会在一行内显示.如果我们想让两个甚至多 ...

  10. Hadoop学习问题记录之基础篇

    目的 记录学习hadoop过程中遇到的基础问题,无关大小.无关困扰时间长短. 问题一 全分布式环境中运行mapred程序,报异常:java.net.NoRouteToHostException: 没有 ...