TP5实现支付宝电脑网站支付学习笔记

news/2024/4/27 8:53:43/文章来源:https://blog.csdn.net/weixin_34199335/article/details/88628841

这两天在公司做一个小型WEB项目,需要有支付功能。第一次做支付宝的支付,踩了点小坑,还算顺利。激动的我赶紧记下实现的流程。
第一步当然是在支付宝开放平台申请公钥私钥APPID等,支付宝关官方文档都有详细介绍,这里就省略。
申请完了下面开始开发者的实现流程。首先是下载支付宝的官方DEMO,网址是https://docs.open.alipay.com/... 这里建议下载官方的DEMO而不是SDK,因为对新手来说DEMO里有封装好的函数可以直接拿来改改就用,比较友好。以后技术提升了,再拿SDK玩玩。
图片描述

因为我是个PHPer,当然选择PHP版。下载好之后默认名字是alipay.trade.page.pay-PHP-UTF-8,建议改名字为alipay即可。
因为我是用TP5开发,所以放到项目根目录下的外部资源包vendor目录中。
图片描述

放进去之后,找到alipay目录下pagepay目录下的pagepay.php文件,这便是阿里官方提供的支付方法样例,
图片描述
我学着网上一位学长的写法改了一下放到TP5的方法中,见下图:
图片描述
走到这里如果顺利,便会出现支付宝的二维码页面。我这里因为客户重新申请权限所以没法截图了。就是那个支付宝二维码的页面。扫码支付,便会跳转到支付成功页面,最后会跳到你自定义的同步跳转地址。

价格由前台表单传值即可,这里强调有三个必填项:订单号、订单名称、付款金额,这三个缺哪一个都会报错。我刚开始脑袋发晕,把订单名称去掉了,结果报错了...
这里写完之后,便去config.php配置各项参数,config.php在alipay的根目录下,配置这一项至关重要。如果错了,商家可是收不到款的噢...
这里是傻瓜填法,应用ID、私钥、异步地址、同步地址、公钥。这6项必须填正确。因为我是用的TP5,所以通知地址那里我改成了TP5的写法,模块/控制器/方法.
支付宝网关那里不要更改,如果是沙箱环境,需要改成"https://openapi.alipaydev.com/gateway.do" 多了个"dev",因为我是真实环境,所以就不用更改。

图片描述

这里再说一下异步和同步地址,新人肯定不知道是有什么用,大佬略过即可。支付宝支付成功后会执行这两个方法,系统会把你支付的信息用POST方式异步传给你的方法。因为是异步,所以页面是没有变化的,所谓"打枪的不要,悄悄地进村..."在异步这个方法里可以写你自己的业务逻辑。比如接收值,存入数据库之类。这里有个大坑,坑了我两天即在异步方法里是没法用session取值的,我原本想用session取用户登录id存入数据库中,后来问了师傅才知道,异步是服务器和服务器之间的交互,所以没有cookieId,没有cookieId当然没有session值。对这里不懂的童鞋可以复习下session基础知识,惭愧,我居然把这么基础的东西忘了...由此可知,同步方法是可以取session的,因为是服务器和客户端的交互。如果对此没概念,可以在异步方法接收参数后转成JSON格式,然后用file_put_contents()函数写到记事本里看一下。
例:{

"gmt_create":"xxxxxxxx",//订单创建时间
"charset":"UTF-8",
"gmt_payment":"xxxxxxxx", //付款时间
"notify_time":"xxxxx",   //异步回调时间
"subject":"XXXXX",     //订单名称
"sign":"xxxxxxxxxxxxxxxxxxx",
"buyer_id":"xxxxxxxx",
"invoice_amount":"xxxxx",
"version":"1.0",
"notify_id":"xxxxxxxxx",
"fund_bill_list":"[{"amount":"0.01","fundChannel":"ALIPAYACCOUNT"}]",
"notify_type":"trade_status_sync",
"out_trade_no":"xxxxxxxx", //订单号
"total_amount":"0.01",
"trade_status":"TRADE_SUCCESS", //success代表支付成功,商家会收到钱
"trade_no":"xxxxxx", //支付宝流水号
"auth_app_id":"xxxxxxxx",
"receipt_amount":"0.01",
"point_amount":"0.00",
"app_id":"xxxxxxxxx",
"buyer_pay_amount":"0.01",
"sign_type":"RSA2",
"seller_id":"xxxxxxxxxxxxx"

}
重要的我都加了注释了,其他不明白的参数可以去官方文档查询。
同步方法,顾名思义,就是页面同步跳转的地址,即能让客户看见的页面。这里自定义即可,比如提示用户支付成功之类文字。
下面是异步和同步方法的示例写法:
/**

  • 异步同步示例

*/
class Alipay extends Controller {

    
/*** 异步方法* @return [void] */
public function notify(){$post = input();if($post['trade_status'] == "TRADE_SUCCESS"){//操作数据库 修改状态echo "SUCCESS";//返回给支付宝成功 ,不返回这个  字符 ,支付宝定时 回调这个方法 时间 5   10   30/m  1小时 成功为止}//写在文本里看一下参数$data = json_encode($post);file_put_contents("alipaytext.txt",$data);
}/*** 同步方法* @return [type] [description]*/
public function returnfy(){//同步跳转地址return $this->fetch();
}

}
这里面重要的是需要在异步方法里判断trade_status字段,如果等于"TRADE_SUCCESS"即支付成功,后面必须echo返回一个"SUCCESS",否则支付宝会认为你没有付款成功,而在24小时内定时回调这个方法。实际业务逻辑根据你的需求来比如存入订单表等等,当然不会这么简单,最好加一些验证。为了安全。下面是前台代码示例:
{include file="public/header"}

<!-- HEADER END -->
<!-- CONTENT BEGIN -->
<div id="content" class="right_sidebar"><div class="inner"><div class="general_content"><div class="main_content">    <form name=alipayment action="{:url('index/alipay/index')}" method="post">商户订单号:<input type="text" name="out_trade_no" value="123" /><br/>订单名称:<input type="text" name="t_name" value="a"/><br/>付款金额:<input type="text" name="total_amount" /><br/>商品描述:<input type="text" name="t_body" value=""/><br/><button type="submit">付 款</button></form></div>{include file="public/right"}<div class="separator" style="height:31px;"></div><div class="clearboth"></div></div></div>
</div>
<!-- CONTENT END --><!-- FOOTER BEGIN -->

{include file="public/tail"}

最后补上一句:日志文件一定要开启写权限,否则无法自动写入。即在alipay文件夹下右键log.txt属性设置。出了问题可以在日志里查看。

走到这里,流程就基本介绍完了。欢迎各位大佬拍砖指导。做完支付,会感觉自己又上了一个台阶!

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

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

相关文章

云服务器 ECS 建站教程:快速搭建 phpwind 论坛系统

快速搭建 phpwind 论坛系统phpwind 是采用 PHP MySQL 方式运行的开源社区程序。轻架构&#xff0c;高效率简易开发&#xff0c;帮助您快速搭建并轻松管理社区站点。phpwind 提供了 2 款完全不同的版本&#xff0c;分别是拥有成熟功能、海量插件支撑的 phpwind 稳定版&#xff…

记一次JavaWeb网站技术架构总结

俗话说的好&#xff0c;冰冻三尺非一日之寒&#xff0c;滴水穿石非一日之功&#xff0c;罗马也不是一天就建成的&#xff0c;当然对于我们开发人员来说&#xff0c;一个好的架构也不是一蹴而就的。 初始搭建 开始的开始&#xff0c;就是各种框架一搭&#xff0c;然后扔到Tomcat…

网站SSL安装配置

背景介绍&#xff1a;HTTPS&#xff0c;全称&#xff1a;Hyper Text Transfer Protocol over Secure Socket Layer,是通过SSL安全机制传输&#xff0c;保证网站数据不被窃听、冒充、篡改等安全风险&#xff0c;保证网站传输安全可靠&#xff0c;下面是通过nginx配置ssl模块记录…

【提权过程】嘉缘网站--提权,代理,内网渗透(针对445端口)

这篇是由上篇 【渗透过程】嘉缘网站--测试https://www.cnblogs.com/G-Shadow/articles/10964374.html之后的操作&#xff0c;文章包括了提权&#xff0c;HTTP代理及对内网的渗透 使用蚁剑连接上写入的一句话后&#xff0c;使用虚拟终端发现自己权限为最高权限可以执行任何操作 …

大型网站技术架构(五)网站高可用架构

2019独角兽企业重金招聘Python工程师标准>>> 网站的可用性&#xff08;Avaliability&#xff09;描述网站可有效访问的特性。 1、网站可用性的度量与考核 网站不可用时间&#xff08;故障时间&#xff09;故障修复时间点-故障发现&#xff08;报告&#xff09;时间点…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要的时…

大型网站技术架构(八)网站的安全架构

2019独角兽企业重金招聘Python工程师标准>>> 从互联网诞生起&#xff0c;安全威胁就一直伴随着网站的发展&#xff0c;各种Web攻击和信息泄露也从未停止。常见的攻击手段有XSS攻击、SQL注入、CSRF、Session劫持等。 1、XSS攻击 XSS攻击即跨站点脚本攻击&#xff08;…

实现手机访问,自动跳转网站手机版

百度Site App的uaredirect.js实现手机访问&#xff0c;自动跳转网站手机版 以下为代码&#xff0c;可放置在网站foot底部文件&#xff0c;或者haead顶部文件&#xff0c;建议将代码放在网站顶部&#xff0c;这样可以实现手机访问立即跳转&#xff01; <script src"http…

通过webDAV来管理网站上的资源

WebDAV&#xff08;Web Distributed Authoring and Versioning&#xff09;扩展了HTTP.1.1通信协议的功能&#xff0c;他让具备适当权限的用户&#xff0c;可以直接通过浏览器、网上邻居来管理远程的webDAV文件夹内的文件&#xff0c;我们下面就来讲一下webDAV是实现。一、启用…

猫咪单独为某个网站添加Proxy

猫咪将overleaf网站添加到猫咪名单中&#xff0c;猫咪单独为某个网站添加猫咪 坑。暂时没有找到解决方案。 我想实现的效果是&#xff0c;打开一个网站&#xff0c;如果网站比较卡&#xff0c;就把这个网站添加到直联列表中。停止对它的猫咪。 方案1&#xff1a; 1、修改猫…

如何禁止自己的电脑访问某个网站?

如何禁止自己的电脑访问某个网站&#xff1f;BlockSite 方案1&#xff1a; https://blog.csdn.net/main_double/article/details/105613165 https://zh.wikihow.com/%E5%9C%A8%E7%94%B5%E8%84%91%E4%B8%8A%E5%B1%8F%E8%94%BD%E7%BD%91%E7%AB%99 操作了一大堆都是没用的&…

电商网站设计系列——促销码功能设计与思考

2019独角兽企业重金招聘Python工程师标准>>> 本文作者将会从三个方面讲述&#xff1a;如何设计电商网站的促销码功能呢&#xff1f;在设计过程中我们需要注意些什么呢&#xff1f; 国外电商网站中有一个东西叫做“促销码”&#xff0c;相当于国内电商的“优惠券”。…

大型网站架构系列:电商网站架构案例(3)

本文章是电商网站架构案例的第三篇&#xff0c;主要介绍数据库集群&#xff0c;读写分离&#xff0c;分库分表&#xff0c;服务化&#xff0c;消息队列的使用&#xff0c;以及本电商案例的架构总结。 6.5数据库集群&#xff08;读写分离&#xff0c;分库分表&#xff09; 大型网…

打开小猫咪之后,国内的网站打不开了,怎么办。原因是dns解析出了问题

打开小猫咪之后&#xff0c;国内的网站打不开了&#xff0c;怎么办。原因是dns解析出了问题 关闭远程dns解析功能即可&#xff0c;之前回答过该问题&#xff01; https://blog.csdn.net/Hodors/article/details/126922545?ops_request_misc%257B%2522request%255Fid%2522%25…

为什么开了小猫咪之后,国内的网站就登录不上去了

为什么开了小猫咪之后&#xff0c;国内的网站就登录不上去了 现象描述&#xff1a; 1、打开小猫咪&#xff0c;能够gole&#xff1b; 2、但是访问csdn时&#xff0c;巨卡&#xff1b;DNS解析错误&#xff1b; 3、关闭小猫咪&#xff0c;不能gole&#xff0c;但是能访问csdn…

2014年我国钓鱼网站数量已超9.3万个

中国互联网协会、国家互联网应急中心(CNCERT)20日在京发布的《中国互联网站发展状况及其安全报告(2015)》显示&#xff0c;2014年&#xff0c;我国发现恶意仿冒钓鱼网站页面数量增至93136个&#xff0c;较2013年增长2.1倍。 据国家互联网应急中心高级工程师何世平介绍&#xff…

分享一个在线的简历制作网站:Reactive-Resume

分享一个在线的简历制作网站&#xff1a;Reactive-Resume rxresu.me 这个网站最厉害的地方是&#xff1a; Free, foreverNo AdvertisingNo User TrackingAccessible in multiple languagesImport data from LinkedIn, JSON ResumeExport your resume to JSON or PDF formatA…

java 企业网站源码模版 有前后台 springmvc SSM 生成静态化

java 企业网站源码 前后台都有 静态模版引擎&#xff0c; 代码生成器大大提高开发效率点击&#xff1a;获取地址QQ 313596790系统介绍&#xff1a;1.网站后台采用主流的 SSM 框架 jsp JSTL&#xff0c;网站后台采用freemaker静态化模版引擎生成html2.因为是生成的html&#xff…

12个网站帮助你学习 Flash / ActionScript

Adobe Flash是一个很好的技术&#xff0c;该技术允许开发人员加入的互动性和平稳的动画网页。 其受欢迎程度是如此巨大&#xff0c;您可以看到许多网站&#xff0c;致力于帮助开发者有兴趣在闪光。 在这篇文章中&#xff0c; 您可以找到12个精彩的网站&#xff0c;值得一提的书…