效果图
代码不难,配置稍微麻烦和复杂
Django配置支付宝
https://www.alipay.com/
登录支付宝后
点击自己的项目
生成秘钥
更换应用公钥
安装沙盒版支付宝
因为支付宝的自己的集成模块有点复杂所以需要用到第三方集成模块
代码实现
buyer/views.py
....
# 支付
def alipay(request):
#自己的私钥
app_private_key_string="""-----BEGIN RSA PRIVATE KEY-----
自己的私钥
-----END RSA PRIVATE KEY-----"""
#支付宝公钥
alipay_public_key_string ="""-----BEGIN PUBLIC KEY-----
支付宝公钥
-----END PUBLIC KEY-----"""
# 初始化工作
alipay = AliPay(
appid="自己的appid", # 自己的appid
app_notify_url=None, # 默认回调url
app_private_key_string=app_private_key_string,
# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
alipay_public_key_string=alipay_public_key_string,
sign_type="RSA2", # 使用RSA2!!!
debug=False # 默认False
)
orderno=request.GET.get("orderno")
total=request.GET.get("total")
# 电脑网站支付,需要跳转到https://openapi.alipaydev.com/gateway.do? + order_string
order_string = alipay.api_alipay_trade_page_pay(
out_trade_no=orderno, # 订单号
total_amount=total, # 总价,需要传递字符串
subject='生鲜商城',
return_url=None,
notify_url='http://127.0.0.1:8000/update_order_state?orderno='+orderno # 可选, 不填则使用默认notify url
)
# 注意我们使用的是沙箱环境,因此需要使用 沙箱环境的API
# https://openapi.alipaydev.com/gateway.do
return redirect('https://openapi.alipaydev.com/gateway.do?' + order_string)
# 修改订单状态
def update_order_state(request):
# 1.获取订单号
orderno = request.GET.get('orderno')
# 2.查询订单并且修改状态
orders_obj = Orders.objects.get(orderno=orderno)
orders_obj.state = True
orders_obj.save()
return redirect("/myorders")
路由urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index), # 首页
path('index', views.index), # 首页
path('login', views.login), # 登录
path('email_login', views.email_login), # 邮箱登录
path('get_yzm_ajax', views.yzm_ajax), # 获取邮箱验证码
path('logout', views.logout), # 登出
path('register', views.register), # 注册
path('detail', views.detail), # 详情
path('list', views.list), # 商品列表
# path('more_list_view',views.more_list_view), #显示更多
path('more_list_view', views.GoodsView.as_view()), # 显示更多视图版
path('add_cart', views.add_cart), # 加入购物车
path('cart', views.cart), # 购物车
path('delete_cart', views.delete_cart), # 删除购物车中的商品
path('usercenter', views.user_center_info), # 个人信息
path('edit_user', views.edit_user), # 修改个人信息
path('add_address', views.add_address), # 添加收件人地址
path('edit_address', views.edit_address), # 添加收件人地址
path('update_address_state', views.update_address_state), # 改变默认收货人
path('place_order', views.place_order), # 去结算
path('now_buy', views.now_buy), # 立即购买
path('myorders', views.myorders), # 我的订单
#新加
path('alipay', views.alipay), # 进入支付界面
path('update_order_state', views.update_order_state), # 修改订单状态
]
注意:
当报私钥不存在这类问题一般都是私钥格式有问题,或者生成的私钥有问题需要重新生成
总结
天天生鲜这个项目基本上完成了,但是作者留了bug也留了很多小功能没有实现,如果读者感兴趣可以自行实现或者找出bug进行修复,整体来说项目功能不难实现,主要在于帮助读者然后去做项目,项目流程等,不得不说这种类型项目难度不大而且有很多相似的代码,所以如果读者感兴趣可以自行研究并改进功能的实现
-
关注微信公众号【爱上开源】,该公众号会为你提供作者在网上找到有趣的开源项目,会将使用过程写成文章呈现给读者.公众号还提供爬虫和部分计算机资源给读者.如果读者想要什么资源可以私信给我,作者会尽力查询(不要涉嫌违法资源即可)