Python Web 企业级项目开发教程(Django 版)(第2版)课件 第12章 电商项目-支付与评价_第1页
Python Web 企业级项目开发教程(Django 版)(第2版)课件 第12章 电商项目-支付与评价_第2页
Python Web 企业级项目开发教程(Django 版)(第2版)课件 第12章 电商项目-支付与评价_第3页
Python Web 企业级项目开发教程(Django 版)(第2版)课件 第12章 电商项目-支付与评价_第4页
Python Web 企业级项目开发教程(Django 版)(第2版)课件 第12章 电商项目-支付与评价_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章电商项目——支付与评价《PythonWeb企业级项目开发教程(Django版)(第2版)》学习目标/Target熟悉支付宝开发平台,能够说明如何在支付宝开放平台中创建应用掌握订单支付功能的实现逻辑,能够使用支付宝提供的接口实现支付功能掌握支付信息配置,能够在项目和支付宝开放平台配置公钥和私钥学习目标/Target掌握保存订单支付结果的实现逻辑,能够将支付结果信息保存到数据库中掌握详情页展示商品评价的实现逻辑,能够在详情页中展示商品评价内容掌握评价订单商品的实现逻辑,能够对购买的商品进行评价章节概述/Summary小鱼商城提供两种支付方式:货到付款和支付宝支付。当用户选择货到付款时,单击支付按钮后,浏览器将跳转到订单提交成功页面。如果用户选择支付宝支付,单击支付按钮后,小鱼商城将调用支付宝系统的支付功能进行支付。支付完成后,用户可以通过订单页面进入商品评价页,对商品进行评价。用户的评价将被保存到MySQL数据库中,并在商品详情页中展示。在本章中,我们将详细介绍支付宝支付和商品评价功能的实现。目录/Contents010203支付宝开放平台介绍对接支付宝商品评价支付宝开放平台介绍12.1

先定一个小目标!熟悉支付宝开发平台,能够说明如何在支付宝开放平台中创建应用12.1支付宝开放平台介绍支付宝是国内领先的第三方支付平台,提供简单、安全和快速的支付解决方案。开发者可以利用支付宝开放平台,在开发过程中接入支付宝接口并使用沙箱环境进行测试。本节内容将分为开发者认证、应用创建以及沙箱环境的使用三部分,介绍如何在支付宝开放平台上进行开发。12.1支付宝开放平台介绍12.1支付宝开放平台介绍1.开发者认证在对接支付宝系统之前,我们需要先对支付宝账号进行开发者认证,具体步骤如下。(1)在浏览器中访问支付宝官网首页,如图所示。12.1支付宝开放平台介绍(2)单击支付宝首页中“我是开发者”进入支付宝开放平台首页,如图所示。12.1支付宝开放平台介绍(3)单击支付宝开放平台页右侧“登录”按钮进行登录,登录完成之后,将鼠标移动至用户头像位置,如图所示。12.1支付宝开放平台介绍(4)单击“账户中心”进入对当前用户进行开发者认证,如图所示。在图中填写正确的联系人手机以及手机验证码,并勾选同意协议,填写完成之后,单击“提交并进入”完成开发者认证。2.创建应用在支付宝开放平台创建应用的作用是让开发者能够接入支付宝的各种服务和功能,实现与支付宝平台的集成和交互。通过创建应用,开发者可以获得支付宝提供的各种API接口,例如支付接口、身份认证接口、数据查询接口等,从而实现与支付宝的数据传输和业务逻辑交互。创建应用还可以帮助开发者管理其在支付宝开放平台上的应用信息、权限配置等,为开发和测试工作提供便利。12.1支付宝开放平台介绍支付宝开放平台创建应用具体步骤如下。(1)认证完成之后,在登录成功页面单击“控制台”,进入控制台页面,如图所示。12.1支付宝开放平台介绍12.1支付宝开放平台介绍(2)因为小鱼商城是一个网页应用,所以在控制台页面先选择“网页/移动应用”,然后再单击“创建网页/移动应用”进入“创建网页移动应用”页面,如图所示。(3)在创建网页移动应用页面中按以下内容填写应用信息:应用名称:小鱼商城。绑定商家账号:选择当前登录的账号。应用图标:使用小鱼商城Logo图片。应用类型:选择“网页应用”。12.1支付宝开放平台介绍根据指定信息填写应用信息,如图所示。(4)应用信息填写完成之后,单击“立即创建”按钮创建应用。12.1支付宝开放平台介绍3.沙箱环境支付宝开放平台中的沙箱环境是一个用于开发者测试和调试的模拟支付环境。在沙箱环境中,开发者可以模拟真实的支付场景,包括创建虚拟用户、进行虚拟交易、验证支付流程等。这样可以帮助开发者在开发和调试过程中,更加方便地测试支付功能,而不必使用真实的资金进行交易,从而降低了开发和测试过程中的风险。沙箱环境还提供了丰富的测试工具和文档,帮助开发者更好地理解和使用支付宝的各种接口和功能。通过沙箱环境,开发者可以更加安全、高效地进行支付功能的开发和测试工作。12.1支付宝开放平台介绍返回到控制台首页并将页面滑动至底部,在“开发工具推荐”中单击“沙箱”进入沙箱应用页面,如图所示。12.1支付宝开放平台介绍在沙箱页面中可查看创建的应用的APPID、支付宝网关地址等信息,还可在左侧选择“沙箱账号”查看虚拟的商家账号信息和买家账号信息,如图所示。在小鱼商城中,使用买家账号进行付款时,卖家的账号金额将会增加。12.1支付宝开放平台介绍对接支付宝12.2

先定一个小目标!掌握支付信息配置,能够在项目和支付宝开放平台配置公钥和私钥12.2.1支付信息配置在对接支付宝时,商家需要按照支付宝的接口文档和规范进行开发,确保支付系统与支付宝平台的正常对接和数据传输。同时,商家也需要遵守支付宝的相关规定和协议,保证交易的合法合规。12.2.1支付信息配置12.2.1支付信息配置在实现订单支付功能之前,需要在支付宝和小鱼商城中配置公钥和私钥。公钥和私钥是非对称加密算法中的两个重要概念,它们通常用于数据的加密和解密过程。公钥是可以公开给他人使用的密钥,用于加密数据或验证数字签名。任何人都可以使用公钥对数据进行加密,但只有持有相应私钥的实体才能解密数据或生成数字签名。在支付领域,公钥通常用于加密敏感信息(如银行卡号)传输到服务端,确保数据安全。私钥是需要被严格保管的密钥,用于解密由公钥加密的数据或签署数字签名。私钥只能被密钥持有者使用,用于解密数据或生成数字签名。在支付领域,私钥通常用于解密客户端传输过来的加密数据或生成数字签名以确保数据完整性和真实性。总的来说,公钥和私钥配对使用,实现了安全的数据传输和验证机制,保障了数据的机密性、完整性和真实性。12.2.1支付信息配置为保证交易双方的身份和数据安全,支付宝使用RSA2加密算法对请求中的参数进行加密。小鱼商城使用私钥加密请求参数,支付宝接收到小鱼商城发来的请求后,利用小鱼商城上传的公钥解密并处理请求参数;处理结果使用支付宝私钥进行加密,返回给小鱼商城服务器,小鱼商城利用配置到项目中的支付宝公钥进行解密,小鱼商城与支付宝所持的公私钥如图所示。12.2.1支付信息配置12.2.1支付信息配置接下来,分为支付宝密钥工具下载、支付宝沙箱应用添加小鱼商城公钥、小鱼商城项目添加私钥和支付宝公钥、配置SDK参数和安装SDK五部分进行介绍。1.支付宝密钥工具下载支付宝开放平台提供了支付宝密钥工具,通过该工具可生成公钥和私钥。首先访问控制台首页页面,如图所示。12.2.1支付信息配置在控制台首页页面单击“更多”进入“支付宝密钥工具”下载页面,如图所示。12.2.1支付信息配置在支付宝密钥工具下载页面中下载适用于Windows系统的版本工具。下载完成后,双击安装包AlipayKeyTool-2.0.3.exe进行安装,安装完成之后启动该工具,如图所示。12.2.1支付信息配置首先选择支付宝开放平台密钥工具中“生成密钥”,然后加密方式选择“密钥”,加密算法选择“RSA2”,最后单击生成密钥按钮,生成的应用公钥和私钥如图所示。在图中生成的应用公钥和应用私钥表示小鱼商城的公钥和私钥,对于生成的公钥需要上传到支付宝沙箱应用中,生成的私钥需要添加到小鱼商城项目中。12.2.1支付信息配置2.支付宝沙箱应用添加小鱼商城公钥将生成的应用公钥上传到沙箱应用中,在沙箱应用的开发信息中选择“自定义密钥”,然后单击“设置并查看”进行启用,如图所示。12.2.1支付信息配置单击公钥模式中的查看,在弹出的对话框中上传生成的公钥内容,如图所示。12.2.1支付信息配置公钥内容上传完成之后单击“保存”按钮,此时支付宝会自动生成支付宝公钥,如图所示。复制图中生成的支付宝公钥信息,该信息需要保存到小鱼商城项目中,复制完成之后,单击“确定按钮”。12.2.1支付信息配置3.小鱼商城项目添加私钥和支付宝公钥在小鱼商城的payment应用下新建keys文件夹,并在该文件夹中创建alipay_public_key.pem文件和app_private_key.pem文件,如图所示。12.2.1支付信息配置将支付宝公钥内容粘贴到alipay_public_key.pem文件中,并补充公钥头部与公钥尾部信息,其格式如下。BEGINRSAPUBLICKEY支付宝公钥ENDRSAPUBLICKEY将应用私钥内容粘贴到app_private_key.pem文件中,并补充公钥头部与公钥尾部信息,其格式如下。BEGINRSAPRIVATEKEY应用私钥ENDRSAPRIVATEKEY12.2.1支付信息配置4.配置SDK参数在dev.py文件中配置支付宝SDK参数,具体如下。ALIPAY_APPID='9021000131634321'#支付宝开放平台创建的应用的APPIDALIPAY_DEBUG=TrueALIPAY_URL='/gateway.do'ALIPAY_RETURN_URL=':8000/payment/status/'上述配置参数表示支付宝创建应用的APPID、DEBUG模式、支付宝网关地址、回调地址。12.2.1支付信息配置5.安装SDKpython-alipay-sdk基于Python的SDK(软件开发工具包),旨在帮助开发者更容易地集成和使用支付宝(Alipay)的各种支付功能。在xiaoyu_mall环境中安装python-alipay-sdk,命令具体如下。pipinstallpython-alipay-sdk==3.3.0至此,小鱼商城的支付信息配置完成。

先定一个小目标!掌握订单支付功能的实现逻辑,能够使用支付宝提供的接口实现支付功能12.2.2订单支付功能12.2.2订单支付功能用户在小鱼商城订单提交页面点击“去支付”按钮后,浏览器将自动跳转至支付宝登录页面。在登录页面中用户需使用沙箱账号中的买家账号和密码登录至支付宝。登录成功后,用户将进入支付页面。在支付页面,用户需输入支付密码完成支付。支付成功后,支付宝将自动重定向至小鱼商城的“订单支付成功”页面,具体如图所示。12.2.2订单支付功能下面分接口设计、订单支付接口实现、配置URL和功能校验四个部分实现订单支付功能。1.接口设计用户单击“去支付”按钮,浏览器跳转到支付宝登录页面,这一过程不涉及数据提交,浏览器可使用GET方式发送请求。在获取支付宝登录页面时应携带当前订单编号参数order_id作为唯一标识,由此设计接口以及请求地址,如表所示。选项方案请求方式GET请求地址payment/<int:order_id>/12.2.2订单支付功能小鱼商城向支付宝发送请求后,后端应响应包含状态码、错误信息以及支付宝登录链接的信息,如表所示。键值名称说明code状态码errmsg错误信息alipay_url支付宝登录链接2.订单支付接口实现在payment应用的views.py文件中,定义PaymentView的类视图,用于处理订单支付请求。在该视图的get()方法中,首先需要检查用户是否已登录,因为订单支付是用户登录后的操作。为了实现这一功能,PaymentView视图需要继承LoginRequiredJSONMixin类,以确保用户已登录。12.2.2订单支付功能12.2.2订单支付功能实现订单支付功能首先查询所需支付的订单,然后创建支付对象,通过支付对象生成登录支付宝链接(登录支付宝链接的生成方式可参考python-alipay-sdk文档实现),最后响应支付宝登录链接,具体代码查看备注。12.2.2订单支付功能3.配置URL在xiaoyu_mall/urls.py文件中添加访问payment应用的路由,具体如下。path('',include('payment.urls',namespace='payment')),在payment应用中新建urls.py文件,在其中定义订单支付的路由,具体如下。fromdjango.urlsimportpathfrom.importviewsapp_name='payment'urlpatterns=[path('payment/<int:order_id>/',views.PaymentView.as_view()),]12.2.2订单支付功能4.功能校验启动服务器,进入订单页面,选择支付宝支付,单击“去支付”按钮,页面跳转到支付宝登录页面,如图所示。12.2.2订单支付功能在支付宝登录页面中填写正确的沙箱账号中买家账号账号密码登录支付宝,输入支付密码进行支付,具体如图所示。12.2.2订单支付功能在确认付款页面中,当用户正确输入支付宝支付密码并点击“确认付款”后,系统将会自动跳转至支付成功的页面,如图所示。

先定一个小目标!掌握保存订单支付结果的实现逻辑,能够将支付结果信息保存到数据库中12.2.3保存订单支付结果12.2.3保存订单支付结果用户支付功能完成之后,支付宝发起GET请求,将支付结果返回给return_url参数所指定的回调地址。return_url参数通过小鱼商城配置文件中的回调路由ALIPAY_RETURN_URL指定。用户订单支付成功后,支付宝会将页面重定向到该URL中。根据回调参数的值设计如下形式的请求地址,具体如表所示。选项方案请求方式GET请求地址payment/status/12.2.3保存订单支付结果在payment应用的views.py文件中,定义名为PaymentStatusView的视图类,用于处理并保存订单的支付结果。在该类的get()方法内,首先进行对回调地址中签名的验证,如果签名验证成功,该方法将会保存订单信息,并将订单状态更新为“待评价”,然后构造包含支付宝订单号的响应数据,返回pay_success.html;若验证不通过重定向到我的订单页面中。具体代码查看备注。12.2.3保存订单支付结果保存订单时需要将订单号与交易流水号关联存储,便于后期查询订单信息使用。在payment应用的models.py文件中定义模型类Payment,具体代码如下。fromdjango.dbimportmodelsfromxiaoyu_mall.utils.modelsimportBaseModelfromorders.modelsimportOrderInfoclassPayment(BaseModel):

order=models.ForeignKey(OrderInfo,on_delete=models.CASCADE,verbose_name='订单')

trade_id=models.CharField(max_length=100,unique=True,null=True,blank=True,verbose_name="支付编号")classMeta:db_table='tb_payment'verbose_name='支付信息'verbose_name_plural=verbose_name12.2.3保存订单支付结果模型类Payment定义完成后生成迁移文件并执行迁移命令,在数据库中生成对应的数据表以及字段。在payment应用的urls.py文件中添加保存订单支付结果的URL,具体如下。path('payment/status/',views.PaymentStatusView.as_view()),12.2.3保存订单支付结果重启服务器,当用户使用支付宝支付成功后,页面会跳转到支付成功页面,如图所示。12.2.3保存订单支付结果用户单击支付成功页面中的“【我的订单】查看该订单”,页面会跳转到“我的订单”页面中,在“我的订单”页面中,可查看相应订单的具体信息,如图所示。至此,保存订单支付结果功能完成。商品评价12.3

先定一个小目标!掌握评价订单商品的实现逻辑,能够对购买的商品进行评价12.3.1评价订单商品用户支付成功后,订单页面中的状态信息由“待支付”变为“待评价”,此时用户可在我的订单页面中单击“待评价”按钮,对购买的商品进行评价;用户评价成功后,在详情页中可以看到用户对该商品的评价信息。12.3.1评价订单商品若要评价订单商品,首先需要展示商品评价页面,然后再对用户提交的评价信息进行保存。12.3.1评价订单商品1.展示商品评价页面完成支付后,订单页面上的状态会从“待支付”变为“待评价”。这时,用户可以在“我的订单”页面中单击“待评价”按钮,对购买的商品进行评价。评价成功后,用户可以在商品详情页中查看其评价信息。商品评价页面应当根据订单编号查询用户购买的商品信息,并构造用于商品评价的表单。由于这个过程只需要查询商品信息,因此可使用GET方式发送请求,请求参数应为订单编号。展示商品评价功能接口设计如表所示。12.3.1评价订单商品选项方案请求方式GET请求地址order/comment/在payment应用的views.py文件中,定义类视图OrderCommentView用于实现展示商品评价功能,因为只有登录用户才能对商品进行评价,所以OrderCommentView类除了继承视图类View外,还需继承用于验证当前用户登录状态的类LoginRequiredMixin。在OrderCommentView的get()方法中首先校验传入的订单编号是否正确,若不正确则返回响应,若订单编号正确,则在数据库中查询该订单中未评价的商品;然后构造待评价商品的评分与评价内容;最后将构造的商品渲染到goods_judge.html页面(详细代码查看备注)。12.3.1评价订单商品12.3.1评价订单商品类视图定义完成之后,还需要在payment应用的urls.py文件中添加评价订单商品的URL,具体如下。path('orders/comment/',views.OrderCommentView.as_view())重启项目,进入用户中心页面,单击订单列表中的“待评价”按钮,进入商品评价页面,如图所示。12.3.1评价订单商品12.3.1评价订单商品2.评价订单商品商品评价页面不仅展示订单中的商品信息,还应提供用户提交商品评价功能,在提交评价前用户可勾选“匿名评价”。若用户勾选匿名评价则在保存用户评价信息时,在商品评价中应呈现经加密处理后的用户名。评价订单商品功能接口设计如表所示。选项方案请求方式POST请求地址order/comment/响应数据JSON类型(包含错误码和错误信息)12.3.1评价订单商品评价订单商品功能请求参数如表所示。请求参数说明order_id订单号sku_id要评价的商品sku_idscore商品评分comment评价内容is_anonymous是否匿名12.3.1评价订单商品在OrderCommentView的post()方法中,首先提取页面中商品的订单号、商品sku_id、评分、评价内容、是否匿名等参数。然后对这些参数进行校验,确保其正确性。如果校验通过,将用户评价的内容更新到数据库,并对商品的评论数据进行累加。最后,将商品的订单状态修改为“已完成”,并将响应结果返回前端。具体代码查看备注。当评价提交后,订单的流程结束,状态变为“已完成”,如图所示。12.3.1评价订单商品

先定一个小目标!掌握详情页展示商品评价的实现逻辑,能够在详情页中展示商品评价内容12.3.2详情页展示商品评价单击商品详情页的“商品评价”按钮可查当前商品的评价信息,评价方式分为匿名评价和非匿名评价,匿名评价只展示部分用户名的首尾的字母,其余使用“*”替代,非匿名评价会展示完整用户名。接下来分接口设计、响应结果、后端实现、配置URL、前端实现这五部分来实现在详情页展示商品评价功能。12.3.2详情页展示商品评价1.接口设计在商品详情页中展示商品评价信息的本质是通过商品的唯一标识在数据库中查询商品评价信息,小鱼商城中商品的唯一标识码为sku_id,因此查询某个商品的评价信息,需要在请求参数中携带该商品的sku_id,详情页展示商品评价接口设计如表所示。选项方案请求方式GET请求地址comments/<int:sku_id>/12.3.2详情页展示商品评价2.响应结果前端需要知道后端响应的状态码、错误信息以及商品评价等数据,这些数据以JSON格式返回,具体如表所示。12.3.2详情页展示商品评价键值名称说明键值名称说明code状态码username发表评价的用户errmsg错误信息comment评价内容comment_list评价列表score评分字段code与errmsg表示响应的状态信息。JSON格式的商品评价数据,示例如下。{"code":"0","errmsg":"OK","comment_list":[{"username":"zhangsan","comment":"这个电脑用起来非常不错!","score":5}]}12.3.2详情页展示商品评价12.3.2详情页展示商品评价3.后端实现在goods应用的views.py文件中定义查询商品评价的GoodsCommentView视图类,在该视图的get()方法中实现商品评价信息的呈现,具体操作为:首先根据请求路由中的sku_id在数据库中按保存时间为条件查询前30条商品评价数据;然后定义评价列表,遍历商品评价数据,将包含用户名、评价内容与评价分数以字典形式保存到评价列表中,在查询用户时需要判断用户是否为匿名评价,若用户为匿名评价,其用户名只保留开头字母与结尾字母,中间使用“*”替换;最后将构造的评价数据返回。具体代码如下查看备注。4.配置URL在goods应用中的urls.py文件中追加用于商品评价的路由,具体如下。path('comments/<int:sku_id>/',views.GoodsCommentView.as_view()),12.3.2详情页展示商品评价5.前端实现商品评价信息在商品详情页中展示,因此需要在商品详情页detail.html中渲染商品评价信息。在div盒子为“r_wrapfrclearfix”的类中补充代码查看备注。12.3.2详情页展示商品评价修改详情页底部商品评价的条数,具体如下。<li@click="on_tab_content('comment')":class="tab_ment?'active':''">商品评价([[comments.length]])</li>12.3.2详情页展示商品评价修改详情页顶部商品评价的条数,具体如下。<divclass="price_bar"><spanclass="show_pirce">¥<em>{{sku.price}}</em></span><ahref="javascript:;"class="goods_judge">[[comments.length]]人评价</a></div>12.3.2详情页展示商品评价重启动服务器,便可以在商品详情页中查看商品的评价信息,如图所示。商品评价不仅是消费者决策的重要参考依据,也是商家优化产品与服务、提升顾客满意度的关键环节。小鱼商城秉承客观公正的原则,鼓励用户就商品的质量、性能、服务等方面进行真实、客观的评价。在商品评价的过程中,要求用户言行一致,不夸大其词,不虚构事实,杜绝虚假宣传和欺诈行为,维护市场秩序和消费者合法权益。同时,我们倡导尊重他人,提倡文明交流和友善互动。在评价内容和形式上,要求用户言辞文明,不攻击他人,不造谣传谣,共同营造良好的网络氛围和消费环境,增强社会凝聚力和向心力。12.3.2详情页展示商品评价

先定一个小目标!掌握商品列表页展示评价数量的实现逻辑,能够在列表页展示每件商品的评价数量12.3.3商品列表页展示评价数量商品评价数量的显示是一项非常重要的功能,它可以帮助用户更好地了解商品的受欢迎程度。当用户对商品进行评价后,这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论