一,先本地跑通基础逻辑:
点打赏按钮后,页面实现跳转
1新创建一个项目:
D:\PycharmProjects>django-admin startproject alipay_test
2在项目目录下创建templates文件夹,然后在项目目录下static/js文件夹并把jquery.js文件拷贝到js目录下:
alipay_test alipay_test static js jquery.mim.js templates manage.py External Libraries Scratches and Consoles
3在setting里注册模板:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')],
4在setting里配置静态资源目录
STATIC_URL = 'static/' STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),)
5在setting.py同目录下创建views.py:
from django.http import JsonResponse from django.shortcuts import render from django.views import View class OrderView(View): def get(self,request): return render(request,'alipay.html') def post(self,request): #返回支付地址 return JsonResponse({'pay_url':'http://www.baidu.com'})
6编写前端页面:
<body> <script src="/static/js/jquery.min.js"></script> <button id="btn">打赏</button> <script> var topic_id = '202112191401' var post_data = {"topic_id":topic_id} $(function (){ $('#btn').click(function (){ $.ajax({ url:"http://127.0.0.1:8000/payment/url", type:'post', contentType:"application/json", data:JSON.stringify(post_data), success:function (data){ window.location.href = data.pay_url } }) }) }) </script> </body>
7创建路由:
from . import views urlpatterns = [ path('admin/', admin.site.urls), path('payment/url',views.OrderView.as_view()), ]
8启动项目:
D:\PycharmProjects\alipay_test>python manage.py runserver
9浏览器测试:
http://127.0.0.1:8000/payment/url
二,融合RSA密钥
1在static文件夹下创建key_file文件夹,把之前在centos虚拟机里生成和创建的三把钥匙反倒这个目录里:
static js key_file alipay_public_key.pem app_private_key.pem app_public_key.pem templates
2在setting里定义支付路径:
#阿里支付路径 ALIPAY_KEY_DIRS = os.path.join(BASE_DIR,'static/key_file/')
3在视图中读取密钥
from django.http import JsonResponse from django.shortcuts import render from django.views import View from django.conf import settings #读取私钥 app_private_key_string = open(settings.ALIPAY_KEY_DIRS + 'app_private_key.pem').read() #读取阿里公钥 alipay_public_key_string = open(settings.ALIPAY_KEY_DIRS + 'alipay_public_key.pem').read() class OrderView(View): def get(self,request): return render(request,'alipay.html') def post(self,request): #返回支付地址 return JsonResponse({'pay_url':'http://www.baidu.com'})