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

news/2024/4/28 16:18:08/文章来源:https://blog.csdn.net/weixin_34068198/article/details/88628845

这两天在公司做一个小型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_701360.aspx

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

相关文章

视频直播网站开发千万不能忘的一个知识点

对于视频直播网站开发的技术人员来讲&#xff0c;音视频即时通讯技术是需要熟练掌握的。毕竟像直播这样重视互动和实时性的应用场景&#xff0c;即时通讯可以从中起到很大的配合作用。目前市面上有很多服务商所提供的SDK可以帮助实现这一技术&#xff0c;但是在选择哪一家服务商…

基于SSH的在线音乐点评网站-java在线音乐点评网站

基于SSH的在线音乐点评网站-java在线音乐点评网站 开发环境&#xff1a;Eclipse for J2EE,MYSQL5.1,JDK1.7,Tomcat 7首页主要展示一些最新的音乐专辑。(1)用户注册&#xff1a;用户填写注册账号、密码。(2)用户登录&#xff1a;用户注册成功后&#xff0c;使用注册账号、密码登…

PrestaShop 网站漏洞修复办法

PrestaShop网站的漏洞越来越多&#xff0c;该网站系统是很多外贸网站在使用的一个开源系统&#xff0c;从之前的1.0初始版本到现在的1.7版本&#xff0c;经历了多次的升级&#xff0c;系统使用的人也越来越多&#xff0c;国内使用该系统的外贸公司也很多&#xff0c;PrestaShop…

分享7个我常去的国外AjaxJquery网站

经常逛这些国外的网站&#xff0c;看到很不错的控件和Jquery的演示DEMO:今天拿出来和大家分享一番: Ajax Rain&#xff1a;http://www.ajaxrain.com/ AjaxRain有很多完美整合AJAX, CSS, DHTML 或 Javascript的实例&#xff0c;有一些Demo的确值得你去看一看 Ajax Daddy:http://…

jsp网站访问次数统计

JSP 点击量统计 有时候我们需要知道某个页面被访问的次数&#xff0c;这时我们就需要在页面上添加页面统计器&#xff0c;页面访问的统计一般在用户第一次载入时累加该页面的访问数上。 要实现一个计数器&#xff0c;您可以利用应用程序隐式对象和相关方法getAttribute()和setA…

如何利用竞价的思维去做seo?

网络营销分为网络优化与网络推广&#xff0c;网络优化主要是通过自然排名的方式展现在搜索引擎页面&#xff0c;网络推广主要是通过付费的方式展现在搜索引擎前面&#xff0c;基本上这两个是分开的&#xff0c;那么我们如何去利用竞价的思维去做seo? 下面[星若文化(http://www…

【原创】【推荐】《ASP.NET 3.5+SQL Server网站模块化开发全程实录》出版记

进过半年多的努力&#xff0c;《ASP.NET 3.5SQL Server网站模块化开发全程实录》一书终于得以由清华大学出版社顺利出版。 第一次出版此类图书&#xff0c;不免其中会有诸多纰漏&#xff0c;还望广大读者不吝指正、批评。本书定位的读者群为&#xff1a;初、中级网站开发人员&a…

原始数据哪里找?这些网站要用好!200个国内外经济/金融/行研/咨询数据网站大全(附链接)...

来源&#xff1a;社科方法网本文约8000字&#xff0c;建议阅读10分钟本文为你提供200个国内外经济、金融、行研、咨询数据网。来源&#xff1a;数据玩家资料搜集是个相当繁琐与累的工作&#xff0c;也是投资入门的基本&#xff0c;良好的信息资料搜集能力有利于我们快速了解投资…

如何理解“跳出率”,它对SEO有什么影响?

跳出率是搜索引擎优化专家&#xff0c;多年以来热衷讨论的话题&#xff0c;特别是在衡量企业网站相关产品转化率的时候&#xff0c;有着重要的参考价值&#xff0c;但在以往的数据分析中&#xff0c;却又是经常被SEO人员所忽略的指标。因此&#xff0c;正确的认知“跳出率”对网…

学术必备!35个国内外社会科学数据网站资源汇总(附链接)

来源&#xff1a;社科方法网本文约10000字&#xff0c;建议阅读20分钟。本文介绍了目前国内外常用的35个数据资源网站。目录UK Data ArchiveData.gov.uk nter-university Consortium for Political and Social Research&#xff08;Michigan&#xff09; National Data Archive…

[CSS]30种时尚的CSS网站导航条

【原文地址】&#xff1a;http://coolshell.cn/?p562 我想&#xff0c;大家在上网的时候一定见过很多很多种各式各样的网站导航条的设计。这些导航条基本上来说都是用CSS来做的。这里&#xff0c;我们将向你介绍几种最不错的用CSS设计的网站导航条。希望你会喜欢。 1. The Men…

原始数据哪里找?这些网站要用好!200个国内外经济/金融/行研/咨询数据网站大全(附链接)...

来源&#xff1a;社科方法网本文约8000字&#xff0c;建议阅读10分钟本文为你提供200个国内外经济、金融、行研、咨询数据网。来源&#xff1a;数据玩家资料搜集是个相当繁琐与累的工作&#xff0c;也是投资入门的基本&#xff0c;良好的信息资料搜集能力有利于我们快速了解投资…

【前端】20款国外非常漂亮的优秀网站404错误页面HTML模板

404错误页面是一个非常普遍的现象&#xff0c;该页面的目的是告诉浏览者其所请求的页面不存在或链接错误&#xff0c;同时引导用户使用网站其他页面而不是关闭窗口离开。虽然404错误页面在所难免&#xff0c;但网页设计师们却可以在该页面上做一些有趣的变动&#xff0c;引导用…

干货 | 外文文献哪里找?八大网站免费下载!

来源&#xff1a;研鹿论文本文约1300字&#xff0c;建议阅读6分钟本文为你汇总免费外文文献书籍网站。疫情期间宅在家的你们都做些什么呢&#xff1f;第一次感觉玩手机都这么无聊&#xff0c;小编不由自主地都开始写论文了可是宅在家里&#xff0c;没有谷歌学术&#xff0c;没有…

独家 | 为你的数据科学项目提供有力支撑——3个寻找数据集的最佳网站

作者&#xff1a;Angelia Toh&#xff0c;Self Learn Data Science联合创始人翻译&#xff1a;李海明校对&#xff1a;冯羽本文约1000字&#xff0c;建议阅读5分钟本文为你介绍3个寻找数据集的最佳网站。标签&#xff1a;冠状病毒&#xff0c;数据&#xff0c;数据科学&#xf…

多家IT企业通过CNNIC“可信网站”验证

据中国互联网络信息中心(CNNIC)联合国家互联网应急中心(CNCERT)发布的《2009年中国网民网络信息安全状况调查报告》显示&#xff0c;2009年有4500万网民遭受网络欺诈,占网民总数的11.9%&#xff0c;损失金额达76亿元&#xff0c;若按8788万的活跃网购用户来计算&#xff0c;平均…

阿里云一键建站产品,阿里云自营建站-中小企业建站首选...

阿里云推出的自营建站服务&#xff0c;这对于中小企业来说简直是福利了&#xff0c;现在一般的公司都开始有了自己的官网&#xff0c;有可能就是因为你的官网设计的标准&#xff0c;大气&#xff0c;客户就会对你的信任度增加&#xff0c;从而促进一笔不小的订单&#xff0c;这…

分享一些好用的网站

前言 这两年收藏了不少网站&#xff0c;特地整理一下&#xff0c;把一些大家都可能用得上的分享出来&#xff0c;希望能对你有用。 考虑到有一些网站大多数人都知道&#xff0c;所以我就不列出来了。 我把这些网站分为了几大类&#xff1a; 工具类素材类社区类工具类 1、start.…

CTO 写的低级 Bug 再致网站被黑,CEO 的号都被盗了!

‍‍整理 | 郑丽媛出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;上周&#xff0c;美国开源社交网络服务平台 Gab &#xff0c;因其 CTO 写的低级 Bug 受到黑客攻击&#xff0c;导致约 70GB 的数据被窃取。可该公司开发者还没完全修复其易受攻击的代码&#xff0c…

怎么一个好的短信验证码接口接入到自己的企业网站和APP程序当中选择

文章来源&#xff1a;http://www.4006026717.com 短信验证码平台太多也是一种幸福的烦恼&#xff0c;毕竟好东西太多不知道该如何选也是很麻烦的。那么&#xff0c;如何选择一个好用的平台呢&#xff1f;下面小编为大家提供几个参考点。 一、功能 通常情况下&#xff0c;企业常…