从项目中学习Django 天天生鲜---------支付宝

效果图

在这里插入图片描述
代码不难,配置稍微麻烦和复杂

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进行修复,整体来说项目功能不难实现,主要在于帮助读者然后去做项目,项目流程等,不得不说这种类型项目难度不大而且有很多相似的代码,所以如果读者感兴趣可以自行研究并改进功能的实现




  • 关注微信公众号【爱上开源】,该公众号会为你提供作者在网上找到有趣的开源项目,会将使用过程写成文章呈现给读者.公众号还提供爬虫和部分计算机资源给读者.如果读者想要什么资源可以私信给我,作者会尽力查询(不要涉嫌违法资源即可)
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值