一,先本地跑通基础逻辑:
点打赏按钮后,页面实现跳转
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
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'})