分享好友 最新动态首页 最新动态分类 切换频道
13-pyg-10/11结算页面及支付模块
2024-12-26 23:18

整合模板(Order控制器create方法 getOrderInfo.html -> create.html

创建Order控制器,继承Base控制器

结算页需要登录才能访问,修改order控制器create方法,判断登录,并设置返回的url

修改Login控制器dologin方法,登录成功之后,先获取返回的url

修改Login控制器qqcallback方法,登录成功之后,先获取返回的url

购物车列表页view/cart/index.html

思路

给“结算”绑定点击事件

判断是否有选中的记录

有则跳转到结算页

数据表pyg_address

 

创建模型

 

收货地址展示

①在Order控制器create方法,查询用户的收货地址信息

:数据表中默认只有几条测试数据,需要根据登录的用户id,修改pyg_address表user_id,用于测试

②在view/order/create.html展示收货地址信息

①修改Order控制器create方法,查询选中的购物记录数据

定义关联模型,并绑定字段

查询数据,统一价格和库存信息

累加总数量和价格

②修改结算页面view/order/create.html 展示结算商品信息

遍历输出每一条购物记录的商品信息

展示总价和数量

展示选中的收货地址

将查询选中的购物记录功能,封装到了OrderLogic类的方法

Order控制器create方法中,查询购物记录代码,可修改如下

订单表pyg_order; 订单商品关联表pyg_order_goods

每次用户提交订单,需要在订单表添加一条记录,在订单商品关联表添加多条记录。

订单数据处理完成,从购物车表将对应记录删掉。

创建前台模型

 
 

订单编号:自动生成(数字、字母组合,不能重复

用户id:读取session

订单金额:计算累加

从结算页需要收集的数据

收货地址address_id

思路

给 “提交订单” 绑定点击事件,发送请求(form表单提交

从页面收集对应参数值(选中的地址id,放到表单中

提交表单

①修改view/order/create.html,给收货地址添加属性address_id

②禁用“提交订单”a标签的href属性

③在页面加一个隐藏的表单,用于点击“提交订单”,发送请求

④绑定事件,获取到用户选择的地址参数,放到表单中,进行提交

向订单表添加一条数据

向订单商品表添加多条记录

从购物车表删除对应的记录

①组装订单表需要的数据,添加一条记录到订单表

将查询选中的购物记录功能,封装到了OrderLogic类的方法

②将订单下的商品信息添加到订单商品表

③删除购物车中对应的记录

④展示选择支付页面

在配置文件中,定义支付方式

创建订单后,查询支付方式

SKU => 库存

①从商品详情页 到 购物车 到结算,都可能需要显示 “有货” “无货”

②创建订单过程中,维护商品的库存

扣减库存

创建订单时:扣减库存(预扣减|冻结库存:设置支付时间,超过时间未支付,释放预扣减库存。

支付时:支付成功扣减库存,支付失败,释放预扣减库存。

问题

只在创建订单时扣减库存:如果下订单后不支付,则无法继续销售。

只在支付成功时扣减库存:容易发生超卖现象,用户付款了,没货。

创建订单时,对每一个商品,都要检测库存是否充足,如果库存不足,则订单创建失败

库存充足,则预扣库存(冻结库存

常见支付方式:微信支付、支付宝支付、银行卡支付。

支付宝支付接口的类型(商家的集成方案

担保交易接口 用户支付的资金先进入担保账户,确认收货后才进入商家的账户

即时到帐接口 用户支付的资金立即进入商家账户

担保交易接口在2016年8月已经停止申请。

支付宝支付流程

支付宝开放平台: https://open.alipay.com

使用自己的支付宝账号登录平台

进入我的开放平台

创建应用

应用创建完毕,要为其设置功能选项

支付宝本身提供的功能很多,需要给当前的应用做选取

签约:需要审核

需要填写 个体工商户信息 ,个人身份无法继续签约。

支付宝开放平台: https://open.alipay.com

使用自己的支付宝账号登录平台

进入我的开放平台

支付宝为没有个体商户资质的开发测试人员提供了一个测试环境,即沙箱应用。

在沙箱环境可以看到appid、测试支付宝网关、密钥信息

APPID:2016091000479921

支付宝网关(gateway:https://openapi.alipaydev.com/gateway.do

秘钥(公钥、私钥:需要自行生成

在沙箱帐号 里边可以看到 商家信息 和 买家信息

进行付款的时候,就使用买家帐号

买家账号:tvvxuf8253@sandbox.com

密码及支付密码:111111

支付宝接口使用时,需要配置密钥。

后续可以通过点击“查看应用公钥” 进行修改

打开以下设置或修改密钥页面,先 查看密钥生成方法

点击下载密钥生成工具

解压之后,打开 RSA签名验签工具.bat

点击生成密钥,得到商户应用私钥 和商户应用公钥

生成好的密钥(公钥和私钥)会在 工具解压目录的RSA密钥目录 下保存为文件格式

回到沙箱应用的应用公钥设置页面,用刚才生成的应用公钥进行设置

修改好之后,可以重新进行查看。除了“应用公钥”,还自动生成了“支付宝公钥”。

保留 应用私钥、应用公钥、支付宝公钥 备用。

SDK(software development kit,软件开发工具包,简单来说就是一些demo示例代码文件。

支付宝提供了一套demo文件,可以通过下载SDK拿到

进入电脑网站支付的文档中心,可以下载SDK&demo

下载后

 

SDK&demo的使用

把解压后的目录移动到项目目录中public/plugins目录下并改名为alipay

在浏览器直接访问该目录(以多级目录的方式直接访问

http://www.pyg.com/plugins/alipay

直接点击付款会跳转到报错页面,需要先配置支付宝参数

设置方式

从沙箱应用页面,获取到APPID, 支付宝网关,支付宝公钥

配置秘钥时生成的商户私钥

配置到public/plugins/alipay/config.php中

设置两个回调地址

说明:notify_url 是用来提供给支付宝服务端调用的,必须是外网可以访问的路径

Return_url是用来页面同步跳转成功页面,是由浏览器跳转,原则上必须是外网可以访问的路径,这里测试可以使用本地的地址,也能跳转成功。

在浏览器重新访问http://www.tpshop.com/plugins/alipay/

点击付款,会跳转到支付宝支付页面如下

点击登录账户付款,使用沙箱账号中的买家账号登录并付款。

支付成功之后,页面会跳转到支付宝成功页面

最后会跳转到商家的网站支付成功页面(之前设置的return_url的地址

同时会携带很多参数在url中。

①选择支付方式后,提交表单

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hpy5bWvG-1677320184486)(img/1564199641040.png)]

控制器中接收表单提交

②跳转到支付宝

在自己网站集成支付接口,可以参考使用SDK中的使用方式alipay/index.php

提交表单到 pagepay/pagepay.php

PRG模式 全称:Post-Redirect-Get

本质:提交form表单

简化之后的表单

 

这个表单还要实现自动提交

 

具体代码实现

①修改home分组order控制器pay方法,在去第三方支付的位置处理

②支付成功页面展示(同步回调地址

修改Order控制器callback方法,接收数据

支付宝传递的参数如下(两个回调地址中的参数基本一样

验签(参数检测, 可参考alipay/return_url.php中的写法

整合支付结果页面,修改view/order/paysuccess.html 和 payfail.html,根据需要展示数据

③异步通知地址 notify里,修改订单状态。(本地地址,支付宝调用不到。

可参考alipay/notify_url.php中的写法

支付宝接口中,返回的参数包含sign 和sign_type 签名参数。用于对所有的原始参数进行验证的(接口安全考虑

验签原理:调用接口时,将原始参数 按照一定顺序排序,使用加密方式进行加密 生成对应sign签名值。发送请求时,将签名值和签名方式,作为附加参数。

接口接收到参数后,将原始参数以相同的规则重新生成签名值,和传递过来的签名值进行比对。

模拟

定义生成签名的方法

定义验证签名的方法

模拟支付宝服务端发送请求

模拟商城异步通知地址,验证签名

最新文章
谷歌深夜发布Gemini 2.0,人工智能(159819)、软件30ETF(562930)备受关注
  消息面上,12月11日晚,刚刚发布量子芯片的谷歌,又投下一枚重磅炸弹,正式发布其最新版大模型Gemini 2.0系列,谷歌表示这是他们迄今为止最强大的人工智能模型,“专为智能体时代设计”,并同时介绍了多个智能体应用(AI Agent)。  
航海王鱼人岛篇特别编辑版
影片名称:航海王鱼人岛篇特别编辑版影片别名:影片类型:动漫影片导演:尾田荣一郎影片演员:田中真弓 , 冈村明美 , 中井和哉 , 山口胜平 , 平田广明 , 大谷育江 , 山口由里子 , 矢尾一树 , 长岛雄一 , 宝龟克寿年份地区:2024/日本更新时
规则引擎 drools_Java常用的规则引擎,让你变动的代码更加容易维护
在本文中,我们将介绍Java中一些最受欢迎的规则引擎。规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入
草根站长的源动力-国内站长网站缩影
随着互联网的发展,国内个人网站也迅速雨后春笋般迅速发展。犹如80年代的私营企业发展个人网站的故事也频繁登上各媒体的版面 非官方的统计:目前国内已经有草根站长300万个。已经开始盈利的个人网站 近5万个个人网站的总收入已经超过3亿 这
背包有个十字架的牌子 十大奢侈品包包排名及图标志
背包有个十字架的牌子,是一个备受关注的奢侈品包包品牌。随着时尚产业的发展和消费观念的改变,越来越多的消费者对于高品质、独特设计的包包有着强烈的需求。在这样的市场环境下,背包有个十字架的牌子以其独特的设计和卓越的品质迅速崛起
港股开盘:恒生指数开盘跌0.59%,恒生科指跌0.61%,美团跌近2%
金融界12月17日消息 港股恒生指数开盘跌0.59%,报19678.03点,恒生科技指数跌0.61%,报4387.62点,国企指数跌0.53%,报7095.14点,红筹指数跌0.1%,报3691.93点。大型科技股中,阿里巴巴-W跌0.53%,腾讯控股跌0.89%,京东集团-SW跌1.39%,
玩转serv00虚拟主机(一):零成本搭建wordpress个人博客&入门
不少童鞋在搭建博客、alist、图床等各类web服务的时候苦于云的成本望而却步,但其实搭建web服务也可以用虚拟主机,不少厂商都有免费的虚拟主机,但对于很多童鞋可能是第一次听说虚拟主机,这里就开一个新的系列,玩转serv00家的免费虚拟主
考研民商法学专业容易上岸的大学怎么选择
在准备考研的过程中,选择合适的学校是至关重要的一步。尤其是对于民商法学专业的考生来说,如何找到一所适合自己的学校更是需要认真考虑的事情。本文将为大家提供一份考研选择民商法学学校指南,帮助你在众多院校中做出明智的决定。首先,
老照片如何修复成高清?四个老照片修复教程全揭晓
让老照片焕发新生:给你分享老照片修复的精彩工具 提到老照片,很多人心中总是涌动着温暖的回忆。家人们,是否曾经翻阅过那些泛黄的照片,感受到那份岁月的沉淀?但时间的流逝总会导致照片的劣化,很多细节模糊甚至消失。那么,我们该如何
四川甜城旅游景点大全:热门景点排名及详细介绍
四川甜城即四川省内江市以其独有的地理位置和丰富的历史文化遗产而闻名遐迩。内江不仅是的“糖都”也是甜城文化的发源地。这里既有壮丽的自然景观又有深厚的历史文化底蕴是一个不可多得的旅游胜地。从古朴典雅的隆昌石牌坊到秀美宁静的甜城
相关文章
推荐文章
发表评论
0评