如何设计网站站点,什么是网站建设规划书,做网站的费用属于什么费用,企业展厅设计理念这几天涉及到一个个人项目的支付开发场景#xff0c;正好完成之后#xff0c;做一下开发记录#xff0c;给有需要的朋友做一下参考
涉及安装Python环境请参考我专栏中的历史文章#xff0c;这里不再重复说明
环境#xff1a;
Python3.11 使用Django框架
因本次代码为沙…这几天涉及到一个个人项目的支付开发场景正好完成之后做一下开发记录给有需要的朋友做一下参考
涉及安装Python环境请参考我专栏中的历史文章这里不再重复说明
环境
Python3.11 使用Django框架
因本次代码为沙箱环境未涉及支付宝当面付的申请如何有需要可以评论区告诉我我会单独写一篇文对申请过程进行说明。
内网穿透工具安装请参考
代码步骤
1、安装支付宝第三方SDK我这里没有用官方的因为代码使用起来比较简洁
pip3 install python-aliyun-sdk
2、生成urls.py文件代码如下
from django.urls import path
from . import viewsurlpatterns [path(precreate_payment/, views.precreate_payment, nameprecreate_payment),path(payment_notify/, views.payment_notify, namepayment_notify),
]
方法说明
precreate_payment支付宝二维码扫码生成请求地址$host/precreate_payment/
payment_notify支付宝导步回调地址$host/payment_notify/
3、编写视图文件 views.py
from django.shortcuts import render, redirect
from django.conf import settings
from alipay import AliPay
from django.views.decorators.csrf import csrf_exempt
from django.urls import reverse
from django.http import HttpResponseRedirect, HttpResponse, JsonResponse
import random
from datetime import datetime
import json#生成支付宝请求地址debug为是否开启沙箱
def initialize_alipay():alipay AliPay(appidsettings.ALIPAY_APPID,app_notify_urlNone,app_private_key_stringsettings.ALIPAY_APP_PRIVATE_KEY,alipay_public_key_stringsettings.ALIPAY_PUBLIC_KEY,sign_typeRSA2,debugTrue)return alipay#订单ID生成
def generate_out_trade_no():now datetime.now()out_trade_no now.strftime(%Y%m%d%H%M%S)out_trade_no str(random.randint(1000, 9999))return out_trade_nodef precreate_payment(request):alipay initialize_alipay()out_trade_no generate_out_trade_no()result alipay.api_alipay_trade_precreate(out_trade_noout_trade_no,total_amount100.00,subjectTest Order,)if result.get(code) 10000:qr_code_url result.get(qr_code)return render(request, pay/precreate_payment.html, {qr_code_url: qr_code_url})else:return HttpResponse(Error in pre-creating transaction: result.get(sub_msg), status400)csrf_exempt
def payment_notify(request):body_str request.body.decode(utf-8)params dict(request.POST.items())sign params.pop(sign, None)alipay initialize_alipay()if alipay.verify(params, sign):print(Alipay notify parameters:, json.dumps(params, indent4))return JsonResponse({status: success})return JsonResponse({status: failure}, status400)以上代码中引用了一些三方模块除了支付宝SDK还有一些模块如果提示不存在请自行安装
pyment_notify为支付宝异步回调接口可以根据你真实环境来进行生成。本地业务可以在
print(Alipay notify parameters:, json.dumps(params, indent4))这行进行替换处理业务逻辑。
4、功能测试 1、访问$host/precreate_payment/显示你的二维码 2、使用支付宝沙箱APP登陆进行扫码支付 3、通过控制台查看你的支付宝回调接口检查服务器是否接收到响应
备注说明
本来简化了一下本地代理的软件 结果审核没给过 想用代理工具的自己参考我之前的ftp搭建工具吧。 或者搜一下内网穿透