时间:2021-05-22
一. 开发前的准备
1. 必须了解的知识
支付宝用的什么加密方式:RSA
2. 沙箱环境的配置
① 登录支付宝开放平台
https://auth.alipay.com/login/ant_sso_index.htm?goto=https%3A%2F%2Fopen.alipay.com%2Fplatform%2Fhome.htm
② 进入管理中心后选择研【研发服务】
③ 生成RSA密钥
选择【查看应用公钥】
选择【查看应用公钥生成方法】
下载秘钥生成工具
链接已经找好了,windows的用户直接下载: https://ideservice.alipay.com/ide/getPluginUrl.htm?clientType=assistant&platform=win&channelType=WEB
安装后打开工具直接选择【生成秘钥】
④ 将生成的 应用公钥输入表单中,选择【保存】,系统会根据输入的应用公钥自动生成支付宝公钥,可以选择【设置/查看】
⑤下载沙箱钱包APP,用于支付测试
注意:生成秘钥工具生成的应用公钥是用来生成支付宝公钥,剩下一个应用私钥注意保存。
3. 开发环境介绍
4. 支付宝支付流程
用户点击支付时,网站根据支付宝的 APPID / 网关 / 支付宝公钥私钥 / SDK生成地址,再根据生成的地址,让用户跳转到支付宝进行支付。用户支付完成后,支付宝会给网站发送两个请求,分别是get和post请求。get请求是从支付宝网站跳转到自己的网站,post请求是向自己的网站发送支付相关的信息,网站可以凭借这些信息去修改网站订单的状态。
二. 开发实施流程
1. 商品数据表的创建
model.py
from django.db import models# Create your models here.class Goods(models.Model): goods_name = models.CharField(max_length=32) goods_price = models.FloatField()class Order(models.Model): order_number = models.CharField(max_length=64) status_choices = ((0, '未支付'), (1, '已支付')) order_status = models.IntegerField(choices=status_choices, default=0) goods = models.ForeignKey(to='Goods', on_delete=models.CASCADE)在Terminal中执行 python manage.py makemigrations 和 python manage.py migrate ,或者到工程目录下执行这两条指令,完成建表。
C:\Users\thanlon\PycharmProjects\alipay_django>python manage.py makemigrations
C:\Users\thanlon\PycharmProjects\alipay_django>python manage.py migrate
2. 购物车视图的构建
向商品表插入数据
构建商品信息页面
urls.py :
from django.contrib import adminfrom django.urls import pathfrom app import viewsurlpatterns = [ path('admin/', admin.site.urls), path('goods/', views.goods),]views.py :
from django.shortcuts import renderfrom app import models# Create your views here.def goods(request): goods_list = models.Goods.objects.all() # print(goods_list) # <QuerySet [<Goods: Goods object (1)>, <Goods: Goods object (2)>, <Goods: Goods object (3)>, <Goods: Goods object (4)>]> return render(request, 'goods.html', {'goods_list': goods_list})goods.html :
<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>商品信息</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"></head><body><div class="container"> <div class="row" style="margin-top: 10px"> <h4 style="text-align: center;font-weight: bold">Django支付宝支付案例</h4> </div> <div class="row" style="margin-top: 10px"> <div class="col-md-4 col-md-offset-4"> <table class="table table-bordered"> {% for row in goods_list %} <tr style="text-align: center"> <td>{{ row.id }}</td> <td>{{ row.goods_name }}</td> <td>{{ row.goods_price }}</td> <td><a href="/purchase/{{ row.id }}">购买</a></td> </tr> {% endfor %} </table> </div> </div></div><div class="container-fluid" style="color: #b2bcc5;margin-top: 20px;margin-bottom: 2px"> <div class="row"> <div class="col-md-12 text-center" style="padding: 40px"> Copyright © 2019-2020 蓝色旗帜 版权所有 <a target="_blank_" href="http:///ThanlonSmith/alipay_django2. 服务器宕机问题(面试)
用户支付完成后,支付宝刚刚返回支付完成的信息时,但服务器却宕机了。要知道这个时候,我们系统的订单支付状态还没更新呢,该如何解决?其实不用过多担心的,实际上如果支付宝没有收到返回结果,会不时间隔一段时间在24小时之内不停地向我们的服务器发送请求。如果服务器在24小时之内运行起来了,还是可以更新我们的订单支付状态的。但是,如果超过24小时,就只能自己修改站内的订单状态信息了。还有,可以在程序代码中看到有这样一行代码 return HttpResponse('success') ,这其实再告诉支付宝,我们网站已经收到信息,不用再发请求了,这是支付宝的一种检测机制。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
支付宝牛年集福活动怎么玩?今天支付宝官方预告了牛年集五福活动,不了解的用户现在跟着小编看看支付宝2021集五福活动时间和玩法攻略详解吧!1月25日,支付宝官方预
这里介绍使用python-Django框架来实现web端分页呈现数据,主要说明对应的views,urls,templates三个文件的编程逻辑的实现。首先介绍D
本文实例讲述了ThinkPHP框架下整合支付宝支付功能。分享给大家供大家参考,具体如下:背景近期项目需要接入支付宝支付功能,其中开发使用了ThinkPHP3.2
支付宝的钱怎么转到银行卡支付宝使用说明支付宝的钱怎么转到银行卡支付宝使用说明支付宝的钱怎么转到银行卡支付宝使用说明支付宝的钱怎么转到银行卡支付宝使用说明支付宝的
支付宝是大家喜欢的支付软件,非常方便快捷,现在支付宝在生活中普及,在国外也可以使用支付宝,支付宝如何在国外支付?支付宝支付安全吗?支付宝如何在国外支付?首先打开