首页 > 其他分享 >django直线支付宝支付接口

django直线支付宝支付接口

时间:2023-04-02 11:00:10浏览次数:36  
标签:alipay 支付宝 return settings ALIPAY 接口 django key path

1.创建Django项目
首先,在命令行中使用以下命令创建一个新的Django项目:

django-admin startproject project_name

2.安装Python SDK
然后,下载并安装支付宝Python SDK。可以使用pip命令进行安装:

pip install alipay-sdk-python

3.配置支付宝参数
配置支付宝参数
在settings.py文件中,添加支付宝参数配置:

ALIPAY_APPID = 'your_appid'
ALIPAY_PUBLIC_KEY = 'your_public_key'
ALIPAY_PRIVATE_KEY = 'your_private_key'
ALIPAY_GATEWAY = 'https://openapi.alipay.com/gateway.do'

其中,your_appid、your_public_key和your_private_key是你的支付宝账号信息。

4.编写支付接口
在views.py文件中,添加支付接口代码:

from django.http import HttpResponse
from alipay import AliPay
from django.conf import settings

def alipay(request):
    alipay = AliPay(
        appid=settings.ALIPAY_APPID,
        app_notify_url='http://localhost:8000/notify/',
        app_private_key_path=settings.ALIPAY_PRIVATE_KEY,
        alipay_public_key_path=settings.ALIPAY_PUBLIC_KEY,
        sign_type='RSA2',
        debug=True
    )

    order_string = alipay.api_alipay_trade_page_pay(
        out_trade_no='201806261254201',
        total_amount='0.01',
        subject='测试订单',
        return_url='http://localhost:8000/return/'
    )

    return HttpResponse(order_string)

其中,alipay函数是一个视图函数,它接收一个request参数,并返回一个HttpResponse对象。在函数中,首先创建AliPay对象,并设置相关参数,包括appid、app_notify_url、app_private_key_path、alipay_public_key_path、sign_type和debug。然后,调用api_alipay_trade_page_pay方法生成订单字符串,最后返回该字符串。

5.编写回调接口
在views.py文件中,添加支付宝回调接口代码:

from django.http import HttpResponse
from alipay import AliPay
from django.conf import settings

def notify(request):
    data = request.POST.dict()
    signature = data.pop('sign')

    alipay = AliPay(
        appid=settings.ALIPAY_APPID,
        app_notify_url='http://localhost:8000/notify/',
        app_private_key_path=settings.ALIPAY_PRIVATE_KEY,
        alipay_public_key_path=settings.ALIPAY_PUBLIC_KEY,
        sign_type='RSA2',
        debug=True
    )

    success = alipay.verify(data, signature)

    if success and data["trade_status"] in ("TRADE_SUCCESS", "TRADE_FINISHED"):
        # 处理订单信息
        return HttpResponse('success')
    else:
        return HttpResponse('fail')

其中,notify函数是一个回调函数,它接收一个request参数,并返回一个HttpResponse对象。首先从函数中获取POST请求的数据,并将签名数据从POST请求中剔除,然后创建AliPay对象,并调用verify方法对数据进行验证。如果验证成功并且交易状态为TRADE_SUCCESS或TRADE_FINISHED,则处理订单信息并返回'success',否则返回'fail'。

6.编写返回接口
在views.py文件中,添加支付宝返回接口代码:

from django.http import HttpResponse
from alipay import AliPay
from django.conf import settings

def alipay_return(request):
    data = request.GET.dict()
    signature = data.pop('sign')

    alipay = AliPay(
        appid=settings.ALIPAY_APPID,
        app_notify_url='http://localhost:8000/notify/',
        app_private_key_path=settings.ALIPAY_PRIVATE_KEY,
        alipay_public_key_path=settings.ALIPAY_PUBLIC_KEY,
        sign_type='RSA2',
        debug=True
    )

    success = alipay.verify(data, signature)

    if success and data["trade_status"] in ("TRADE_SUCCESS", "TRADE_FINISHED"):
        # 处理订单信息
        return HttpResponse('支付成功')
    else:
        return HttpResponse('支付失败')

其中,alipay_return函数是一个返回函数,它接收一个request参数,并返回一个HttpResponse对象。在函数中,首先获取GET请求的数据,并将签名数据从GET请求中剔除,然后创建AliPay对象,并调用verify方法对数据进行验证。如果验证成功并且交易状态为TRADE_SUCCESS或TRADE_FINISHED,则处理订单信息并返回'支付成功',否则返回'支付失败'。

7.配置URL
在urls.py文件中,添加URL配置:

from django.urls import path
from . import views

urlpatterns = [
    path('alipay/', views.alipay),
    path('notify/', views.notify),
    path('return/', views.alipay_return),
]

第一个URL配置是支付接口URL,第二个URL配置是支付宝回调接口URL,第三个URL配置是支付宝返回接口URL。

标签:alipay,支付宝,return,settings,ALIPAY,接口,django,key,path
From: https://www.cnblogs.com/szj666/p/17280073.html

相关文章

  • Django笔记十三之select_for_update等选择和更新等相关操作
    本篇笔记将介绍update和create的一些其他用法,目录如下:get_or_createupdate_or_createselect_for_updatebulk_createbulk_update1、get_or_create前面我们介绍过get()和create()的用法,那么get_or_create()的意思很简单,就是获取或者创建,如果存在就返回,不存在就......
  • 实现Callable接口创建线程
    ​ 通过实现Callable接口创建线程与实现Runnable接口创建线程类似,不同之处在于Callable的call()方法可以返回一个结果,并且可以抛出异常。以下是通过实现Callable接口创建线程的示例代码:importjava.util.concurrent.Callable;publicclassMyCallableimplementsCallable<Str......
  • Java面向对象--接口和多态
    final关键字最终修饰符可以修饰类方法变量被final修饰后不能被继承重写二次赋值修饰类时该类不可以被继承修饰方法时该方法不能被重写修饰变量时,该变量只能赋值一次,不可以二次赋值是常量修饰引用变量时,地址值不能改变但对象中的属性值可以改变修饰成员变......
  • django 中model 的序列换
    方法一:from django.core import serializers ret = models.BookType.objects.all() data = serializers.serialize("json",ret) 方法二:当只有一个object时:fromdjango.forms.modelsimportmodel_to_dictdata=model_to_dict(yourmodelobject)......
  • Python调用百度智能云接口实现车牌识别
    总述:1.登录百度智能云2.选择文字识别服务3.创建一个应用实例4.安装百度API接口5.填入参数6.调用1.登录百度智能云https://cloud.baidu.com/?from=console2.选择文字识别服务左边菜单栏--选择AI智能--文字识别服务(可以点收藏,下次就在左边快捷栏里了)  3.创建一......
  • django:数据库的一些进阶知识点与应用
    一,连接池使用第三方程序向数据库发出数据操作请求前,都需要先创建到数据库的连接,这个操作会占用大量资源。所谓的资源消耗,一是对数据库连接数量的消耗;二是对系统内存资源的消耗;三是连接建立过程对时间的消耗,时间消耗角度可以参考这篇博客。django默认会在请求进来的时候创建......
  • 鸿蒙开发学习笔记-UIAbility-Router页面跳转接口源码分析
    在鸿蒙开发中,UIAbility的跳转使用router方法.在使用的时候需导入importrouterfrom'@ohos.router';该方法接口成员如下:1.interfaceRouterOptionsinterfaceRouterOptions{url:string;//跳转页面的Urlparams?:Object;//传给跳转页面的参数params......
  • 自动生成接口文档coreapi的使用
    1.安装coreapi  2.路由中配置路由固定格式   3.视图类自动生成接口文档第一种_单一方法的视图   4.第二种_包含多个方法的视图_在类视图的文档字符串中_分开方法定义   5.生成接口文档的setting和路由配置   5_1.生成接口文档的setting......
  • Django: @login_required
    Django:Tweaking@login_requireddecorator我想为我的网站开始一个私人Beta版。我有一个初始页面,用户可以在其中输入代码,然后访问网站的其余部分。当前,所有其他站点页面(初始页面除外)都包含一系列通过要求用户登录(通过@login_required装饰器)设置的重定向。我希望登录......
  • 虾皮shopee商品详情接口,虾皮商品详情接口代码教程
    业务场景:作为全球最大的B2C电子商务平台之一,shopee平台提供了丰富的商品资源,吸引了大量的全球买家和卖家。为了方便开发者接入拼多多平台,shopee平台提供了丰富的API接口,其中商品详情接口是非常重要的一部分。大家有探讨稳定采集shopee整站实时商品详情数据接口,通过该接口开......