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 跨域设置

    /** * Configuration cors */ @Configuration public class MyConfiguration { @Bean public FilterRegistr ...

  2. 一文入门DNS?从访问GitHub开始

    前言 大家都是做开发的,都有GitHub的账号,在日常使用中肯定会遇到这种情况,在不修改任何配置的情况下,有时可以正常访问GitHub,有时又直接未响应,来一起捋捋到底是为啥. GitHub访问的千层 ...

  3. unittest学习笔记

    File "C:\Program Files\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py&quo ...

  4. Python灰帽子:黑客与逆向工程师的Python编程之道|百度网盘免费下载|新手黑客入门

    百度网盘免费下载:Python灰帽子:黑客与逆向工程师的Python编程之道 提取码:tgpg 目录  · · · · · · 第1章 搭建开发环境 11.1 操作系统要求 11.2 获取和安装Pyt ...

  5. 《吊打面试官》系列-Redis基础知识

    前言Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难.作为一个在互联网公司面一次拿一次offer的面霸(请允许我使用一下 ...

  6. Android集成百度地图

    1. 百度地图api Android定位SDK Android地图SDK Android地图SDK<------

  7. phpbasic

    <!DOCTYPE html> <html> <body> <?php // 这是 PHP 单行注释 /* 这是 PHP 多行 注释 */ ?> < ...

  8. Python os.unlink() 方法

    概述 os.unlink() 方法用于删除文件,如果文件是一个目录则返回一个错误.高佣联盟 www.cgewang.com 语法 unlink()方法语法格式如下: os.unlink(path) 参 ...

  9. PHP array_diff_key() 函数

    实例 比较两个数组的键名,并返回差集: <?php $a1=array("a"=>"red","b"=>"gre ...

  10. PHP trigger_error() 函数

    定义和用法 trigger_error() 函数创建用户自定义的错误消息. trigger_error() 函数用于在用户指定的条件下触发一个错误消息.它可以与内建的错误处理程序一起使用,或者与由 s ...