Thinkphp5开发电脑网站支付宝支付详细流程(线上测试篇)

news/2024/5/10 1:24:07/文章来源:https://blog.csdn.net/weixin_34342992/article/details/91740787

为什么80%的码农都做不了架构师?>>>   hot3.png

在沙箱测试篇讲过的我在这里就不再做重复,详情请见上一篇PHP开发电脑网站支付宝支付详细流程(沙箱测试篇)

在沙箱测试的时候使用的是沙箱环境中的配置,现在进行线上测试,需要创建应用

1、创建应用

登录蚂蚁金服开放平台商户账号,进入管理中心

选择开发者中心->网页&移动应用

选择支付接入

根据开发需求填写基本信息

创建完成后,完善基本信息

上传应用图标

选择需要的功能(注:功能需要签约)

在开发配置这里,按照沙箱测试的时候一样,生成密钥,设置授权回调地址等,然后提交审核(审核需要1个工作日)

审核通过后会显示状态已上线,同样也可以看到appid

可以点击查看->应用信息查看你需要的信息和配置

官方创建应用详细流程请见(https://docs.open.alipay.com/399/106843/)

2、封装类库,选择需要的功能放入框架

我自己选择了支付模块的功能,找到付款需要的类库,全部放入extend

(需要的可以下载https://pan.baidu.com/s/17A2YMahZX6nNmS2sCwJKzQ)

我拿出配置文件放入application/extra目录下,格式改成return的数组形式

注意:我在配置文件里加入了seller_id的配置(seller_id可以在账户信息中查看)

建立一个支付的控制器,引入文件,具体代码如下

 
  1. <?php

  2. namespace app\index\controller;

  3. use think\Controller;

  4. //支付控制器

  5. class Pay extends Controller{

  6. //发起电脑网站支付请求

  7. public function pagePay(){

  8. //商户订单号,商户网站订单系统中唯一订单号,必填

  9. $out_trade_no = trim($_POST['out_trade_no']);

  10. //订单名称,必填

  11. $subject = trim($_POST['subject']);

  12. //付款金额,必填

  13. $total_amount = trim($_POST['total_amount']);

  14. //商品描述,可空

  15. //$body = trim($_POST['body']);

  16. //构造参数

  17. $payRequestBuilder = new \alipay\AlipayTradePagePayContentBuilder();

  18. // $payRequestBuilder->setBody($body);

  19. $payRequestBuilder->setSubject($subject);

  20. $payRequestBuilder->setTotalAmount($total_amount);

  21. $payRequestBuilder->setOutTradeNo($out_trade_no);

  22. $aop = new \alipay\AlipayTradeService();

  23. /**

  24. * pagePay 电脑网站支付请求

  25. * @param $builder 业务参数,使用buildmodel中的对象生成。

  26. * @param $return_url 同步跳转地址,公网可以访问

  27. * @param $notify_url 异步通知地址,公网可以访问

  28. * @return $response 支付宝返回的信息

  29. */

  30. $response = $aop->pagePay($payRequestBuilder,config('alipay.return_url'),config('alipay.notify_url'));

  31. }

  32.  
  33. //回调地址

  34. public function notify_url(){

  35. $arr=$_POST;

  36. $alipaySevice = new \alipay\AlipayTradeService();

  37. $alipaySevice->writeLog(var_export($_POST,true));

  38. $result = $alipaySevice->check($arr);

  39. /* 实际验证过程建议商户添加以下校验。

  40. 1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,

  41. 2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),

  42. 3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)

  43. 4、验证app_id是否为该商户本身。

  44. */

  45. if($result) {//验证成功

  46. //请在这里加上商户的业务逻辑程序代

  47. //——请根据您的业务逻辑来编写程序(以下代码仅作参考)

  48. //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

  49. //商户订单号

  50. $out_trade_no = $_POST['out_trade_no'];

  51. //支付宝交易号

  52. $trade_no = $_POST['trade_no'];

  53. //交易状态

  54. $trade_status = $_POST['trade_status'];

  55. if($_POST['trade_status'] == 'TRADE_FINISHED') {

  56. //判断该笔订单是否在商户网站中已经做过处理

  57. //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序

  58. //请务必判断请求时的total_amount与通知时获取的total_fee为一致的

  59. //如果有做过处理,不执行商户的业务程序

  60. //注意:

  61. //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知

  62. }

  63. else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {

  64. //判断该笔订单是否在商户网站中已经做过处理

  65. //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序

  66. //请务必判断请求时的total_amount与通知时获取的total_fee为一致的

  67. //如果有做过处理,不执行商户的业务程序

  68. //注意:

  69. //付款完成后,支付宝系统发送该交易状态通知

  70. }

  71. //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

  72. echo "success";//请不要修改或删除

  73. }else {

  74. //验证失败

  75. echo "fail";

  76.  
  77. }

  78.  
  79.  
  80. }

  81. }


在生成订单后,访问pagePay这个函数,发起电脑网站的支付请求

在请求回应后跳转到回调地址notify_url,若是支付正常,则更新数据库的信息,具体代码就不再这里进行展示了(如果实在需要可以私聊我)

注意:return_url 和 notify_url 的区别

notify_url为服务器通知,支付宝可以保证99.9999%的通知到达率,前提是您的网络通畅。 

return_url为网页重定向通知,是由客户的浏览器触发的一个通知,若客户去网银支付,也会受银行接口影响,由于各种影响因素特别多,所以该种类型的通知支付宝不保证其到达率。 

 

转载于:https://my.oschina.net/SimTao/blog/3029820

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_742349.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SEO思维:如何运用数据分析论坛签名和外链在百度新算法中的效果

2012年08月22日通过站长平台发布官方公告&#xff0c;为了提高用户体验、清除低质采集的垃圾内容&#xff0c;百度将在6月底反作弊算法的基础上再度升级&#xff0c;对大量低质量、无内容的站点进行清除。并打击胡乱采集、超链接作弊、堆积关键词、冒充官网,等严重影响用户体验…

网站转接支付宝解决方案

大型网上购物系统除了能让会员选择货到付款结账方式外&#xff0c;还应该提供一些更方便快捷的网上支付方式。如果网上商店没有足够的实力提供会员直接在网站中建立现金账户的功能&#xff0c;就可以将订单信息转接到支付宝&#xff0c;让会员从支付宝付款。当然就算会员可以在…

Python3代码实现《机器学习实战》k近邻算法改进约会网站配对效果中出现的问题

报错1&#xff1a;No module named ‘kNN’ 解决&#xff1a; 转而在Spyder中&#xff0c;先保存在自己的学习目录中&#xff0c;然后在命令提示符完成操作&#xff0c;保证目录要一致&#xff0c;也就是下面图中打马赛克的4个。 报错&#xff1a; name ‘reload’ is not def…

网站的高性能架构

原文地址&#xff1a;http://www.uml.org.cn/zjjs/201312192.asp 瞬时响应&#xff1a;网站的高性能架构作者 李智慧&#xff0c;火龙果软件 发布于&#xff1a;2013-12-19什么叫高性能的网站&#xff1f; 两个网站性能架构设计方案&#xff1a;A方案和B方案&#xff0c;A方案…

VS.NET2013发布网站的时候去掉.cs文件(预编译)(转)

在要发布的网站上右键&#xff0c;选择"发布网站"。在发布窗口中&#xff0c;会让你选择一个发布配置文件&#xff0c;没有的话点击下拉菜单在里面选择新建一个。NEXT.好&#xff0c;现在发布一下网站。发布出来的文件没有包含*.cs文件。打开bin目录&#xff0c;会发…

大型网站架构演变和知识体系

转自&#xff1a;http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html 之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&#xff0c;而没有很详…

Linux部署集群.NET网站

一、Linux下面安装需要软件 我们这里需要安装的软件有&#xff1a;1) Mono 3.2.8 : C#跨平台编译器&#xff0c;能使.Net运行与Linux下&#xff0c;目前.net 4.0可以完美运行在该平台下2) nginx/1.4.6 &#xff1a;web服务器, 支持方向代理3) fastcgi-mono-server4 &#xff1a…

在mvc4中多语言建站的实例

环境&#xff1a;vs2012 asp.net mvc4. 实现方式&#xff1a;resource 资源文件&#xff0c;根据路由规则中Lang参数来判断载入哪种语言方式 在网上找到了相关资料&#xff0c;顺便自己做了个练习&#xff0c;新建工程之类的步骤就免了&#xff0c;该注意的地方说明下&#xff…

台北到淡水版Firefox新标签页myNewTab网站链接修改

台北到淡水版的Firefox用的新标签页&#xff08;也叫快捷导航、九宫格等&#xff09;是myNewTab&#xff0c;如何修改里面的链接呢&#xff1f;如下&#xff1a; 1、点击右上角的”定位“​ 2、将会打开该文件的所在位置&#xff0c;例如&#xff1a;D:\应用程序\火狐浏览器\Pr…

如何在 ASP.NET 应用程序中实现模拟用户身份(在ASP.NET中以管理员身份运行网站)...

前言 在实际的项目开发中&#xff0c;我们可能会需要调用一些非托管程序&#xff0c;而有些非托管程序需要有更高的身份权限才能正确执行。本文介绍了如何让IIS承载的ASP.NET网站以特定的账户执行&#xff0c;比如Administrator。 概要 本文介绍了在 ASP.NET 应用程序中实现模拟…

浅谈Web网站的架构演变过程

前言 我们以javaweb为例&#xff0c;来搭建一个简单的电商系统&#xff0c;看看这个系统可以如何一步步演变。该系统具备的功能&#xff1a;用户模块&#xff1a;用户注册和管理商品模块&#xff1a;商品展示和管理交易模块&#xff1a;创建交易和管理阶段一、单机构建网站 网站…

varnish加速web网站

简介 Varnish可以有效降低web服务器的负载&#xff0c;提升访问速度。根据官方的说法&#xff0c;Varnish是一个cache型的HTTP反向代理。 按照HTTP协议的处理过程&#xff0c;web服务器接受请求并且返回处理结果&#xff0c;理想情况下服务器要在不做额外处理的情况下&#xff…

手把手教你从零开始用WordPress建站

最近&#xff0c;很多人来问我&#xff0c;怎么做一个实际项目&#xff1f;其实这个说简单也简单&#xff0c;说复杂也复杂&#xff0c;但是不管怎么样&#xff0c;从今天开始&#xff0c;一步一步的走&#xff0c;你肯定可以做一个属于自己的站点。 之前我也在群里说了&#x…

快盘做网站服务器,快盘云服务器地址

快盘云服务器地址 内容精选换一换在您申请了云耀云服务器后&#xff0c;可以通过管理控制台查看和管理您的云耀云服务器。本节介绍如何查看云耀云服务器的详细配置&#xff0c;包括云耀云服务器名称、镜像信息、系统盘、数据盘、安全组、弹性公网IP等信息。登录管理控制台。单击…

websocket用ip不能访问_为什么直接用IP不能访问知乎的网站,而百度却可以?

打开cmd&#xff0c;输入ping baidu.com&#xff0c;然后把得到的ip地址111.13.101.208输入浏览器的地址栏&#xff0c;可以打开百度。但我重复操作ping zhihu.com&#xff0c;得到ip地址54.223.189.245&#xff0c;输入地址栏&#xff0c;返回的却是405 not allowed。想请教一…

网站模板怎么和虚拟服务器,模板站用虚拟主机还是用服务器

模板站用虚拟主机还是用服务器 内容精选换一换本章指导用户使用华为云市场镜像“PHP运行环境AMH4.2面板PHP CentOS6.8”部署AMH环境。AMH是一套通过Web控制和管理服务器的Linux服务器管理系统以及虚拟主机管理系统。弹性云服务器创建成功后&#xff0c;还需要配置安全组&#x…

aix如何查看日志策略_企业网站排名,SEO诊断,网站日志分析经常忽略的6个细节!...

在做SEO的过程中&#xff0c;我们总是会遇到各种莫名其妙的问题&#xff0c;比如&#xff1a;某一天你的网站突然出现收录缓慢的问题&#xff0c;而平时都是秒收录。 最开始我们在做审查的时候&#xff0c;总是在思考&#xff1a; ①是否搜索引擎算法在调整。 ②是否自己的内容…

pHP分析网站日志,通过用数据挖掘技术来分析Web网站日志?

Web日志挖掘是指采用数据挖掘技术&#xff0c;对站点用户访问Web服务器过程中产生的日志数据进行分析处理&#xff0c;从而发现Web用户的访问模式和兴趣爱好等&#xff0c;这些信息对站点建设潜在有用的可理解的未知信息和知识&#xff0c;用于分析站点的被访问情况&#xff0c…

如何进行web端安全性测试_如何使用LoadRunner进行Web网站性能测试?

loadrunner压力测试原理本质就是在loadrunner上模拟多个用户同时按固定行为访问web站点。其中固定行为在loadrunner中是通过录制脚本定义的&#xff0c;多个用户同时访问的策略是在loadrunner的场景中定义的loadrunner压测思路通过loadrunner进行压力测试web应用的主要思路分两…

一个好用的在线微信二维码设计网站

帮一个朋友设计他的微信公众号二维码&#xff0c;本来打算用ps画图&#xff0c;想到之前公众号配图有在线网站&#xff0c;简单方便&#xff0c;类似于这类的工具应该会有很多&#xff0c;在百度上查找体验了一下&#xff0c;终于找到了一款可以快速设计文章末尾二维码的在线网…