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

news/2024/4/27 15:11:44/文章来源:https://blog.csdn.net/weixin_33713707/article/details/88628830

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

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

相关文章

一些网站

2019独角兽企业重金招聘Python工程师标准>>> 1, https://pmd5.com/ 输入一串md5值&#xff0c;尝试输出原值&#xff0c;如果找不到&#xff0c;输出"undefined"。猜测&#xff1a;一个哈希索引的表&#xff0c;能查到则直接输出&#xff0c;不能查到则加…

docker-compose 学习:部署 ThinkPHP 5 网站

2019独角兽企业重金招聘Python工程师标准>>> 接前一个 https://blog.csdn.net/u010953609/article/details/89337660 LNMP搭建之后&#xff0c;就需要实际部署自己的网站&#xff0c;这里选择 ThinkPHP 5 完整版作为样本进行测试 既然 LNMP 架构搭建好了&#xff0c…

服务器显示屏出现白屏,win10开机白屏不显示桌面怎么办_网站服务器运行维护,win10,白屏,桌面...

win7如何使用自带录制视频软件&#xff1f;_网站服务器运行维护win7使用自带录制视频软件的方法&#xff1a;首先打开运行窗口输入cmd&#xff1b;然后管理员界面中输入【psr.exe】或者psr回车确定打开&#xff0c;并在工具上点击开始记录&#xff1b;最后点击停止记录并弹出保…

php网站源码怎么看框架_前端如何看框架源码-egg.js源码探索日志9

每天一小步&#xff0c;书接上回拖鞋&#xff1a;前端如何看框架源码-egg.js源码探索日志8​zhuanlan.zhihu.com今天来到了&#xff0c;egg的最后一个核心模块Loader&#xff0c;这块代码我看了好久&#xff0c;至少比别的部分久&#xff0c;代码太多&#xff0c;也特别的绕&am…

url提取工具_「亚马逊运营」盘点 2020 年卖家最应尝试的 16 款免费 SEO 工具

做了多年的 SEO 优化&#xff0c;你可能用过无数 SEO 优化工具&#xff0c;不管是免费的还是付费的。这里推荐几款免费的 SEO 工具。免费SEO工具主要分为以下5类&#xff1a;关键词研究&#xff1b;站内SEO优化&#xff1b;技术SEO(Technical SEO)&#xff1b;分析类&#xff1…

个人介绍网页模板html_个人博客网站怎么做好搜索优化seo

各个博客软件开源程序的功能都应该是差不多。介绍一下个人博客怎么做好优化。 首先一点&#xff0c;我觉得博客更多的是一个分享交流工具&#xff0c;它生成的网站结构&#xff0c;网页代码与很多网站相比算是比较搜索引擎友好。 但是Blog页面都是用模板生成&#xff0c;有很多…

代码统计工具有哪几种_SEO工具篇:如何安装百度统计代码

本文来自恩思传媒-小雨。百度统计是百度推出的一款稳定、专业、安全的统计分析工具。能够提供权威、准确、实时的流量质量和访客行为分析&#xff0c;助力日常监控&#xff0c;为系统优化、提升投资回报率等目标提供指导。同时&#xff0c;百度统计特别推出了高级分析平台&…

url ip跳转域名_网站被降权,利用301跳转到新域名,对新网站排名有影响吗?

在做SEO的过程中&#xff0c;我们总是会遇到一些有争议性的问题&#xff0c;这就需要我们根据长期的运营经验&#xff0c;给出相关性的解决方案&#xff0c;比如&#xff1a;站长们经常会有这样的疑问&#xff1a; 我有一个老域名&#xff0c;它被降权了&#xff0c;但我又想用…

debian9 php 建站,Debian9配置LightTPD/PHP7.0/SQLite轻便网站运行环境

LightTPD&#xff0c;是一款由德国人开发的Web服务器软件&#xff0c;其特点在于提高网站的性能、安全&#xff0c;以及快速响应且兼容灵活的Web服务器环境。LightTPD占用内存较低、CPU占用率低、效能好以及丰富的模块等特点。Lighttpd支持FastCGI&#xff0c;CGI&#xff0c;A…

群辉linux系统搭建网站,在群晖NAS上搭建 Git Server

1 概述在群晖nas上使用 git server 套件还是比较麻烦的&#xff0c;原因有两点&#xff1a;一是NAS的控制台上没有BASH&#xff0c;git 相关的命令只能使用 SSL 客户端连接到NAS上进操作。二是配置git时需要使用 root 或 admin 账户&#xff0c;而 push / fetch 使用的账户一般…

测试网站服务器性能测试,网站服务器压力Web性能测试(2):Webbench:最多模拟3万个并发连接数测试压力...

1、Webbench最多可以模拟3万个并发连接数来测试服务器压力&#xff0c;可以设置压力测试时间和测试请求的成功率。安装Webbench命令&#xff1a;wget https://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gztar zxvf webbench-1.5.tar.gzcd webbench-1.5make &&…

手机搭建博客网站

文章目录一、安装openssh二、更换国内源三、安装mysql四、安装nginx五、安装php-fpm六、新建数据库七、下载 WordPress八、安装wordpress文章部分内容引用:https://www.sqlsec.com/2018/05/termux.html#toc-heading-115 国光termux教程 工欲善其事&#xff0c;必先利其器。 一…

使用代理ip进行反反爬虫——爬取句子迷网站,获取小说龙族经典句子

这个爬虫实践做了好久了&#xff0c;不定期更新&#xff0c;遭遇了反爬虫&#xff0c;记录一下反反爬过程。 爬取不到一会就会被封ip&#xff0c;网站返回403,换个ip就好了&#xff0c;但一样会被封&#xff0c;来不及爬取所有句子。 参照网上免费代理ip的方式 不过这个方法爬…

沙盒单机网站代表-Steam【推荐】

Steam平台是Valve公司聘请BitTorrent(BT下载)发明者布拉姆科恩亲自开发设计的游戏平台。Steam平台目前是一款全球最大的综合性数字发行平台。玩家可以在该平台购买、下载、讨论、上传和分享游戏和软件。&#x1f44c;&#xff0c;没有十足的抵抗力和小康的生活水平千万别触碰St…

java struts2国际化代码下载_struts2的国际化实现网站整体中英文切换实例代码

本文介绍了struts2的国际化实现网站整体中英文切换实例代码&#xff0c;分享给大家&#xff0c;具体如下&#xff1a;环境要求&#xff1a;struts2框架环境搭建成功为了实现程序的国际化&#xff0c;必须先提供程序所需要的资源文件。资源文件的内容基本是key-value对&#xff…

mysql-pius代码生成网站_MyBatis-Plus系列之代码生成器

代码生成器&#xff0c;也叫逆向工程&#xff0c;是根据数据库里的表结构&#xff0c;自动生成对应的实体类、映射文件和接口。这和hibernate的自动建表恰好相反。很早之前&#xff0c;写了一个代码生成器的工程&#xff0c;自己也一直在用&#xff0c;很方便&#xff0c;也经过…

网站自动登录功能的设计

我相信有很多IT者都会遇到公司要求网站可以实现自动登录&#xff0c;那什么是自动登录呢&#xff1f; 所谓自动登陆就是当用户第一次访问网站时&#xff0c;输入用户名和密码&#xff0c;然后勾选了自动登陆复选框&#xff0c;进入首页后&#xff0c;点击退出登陆&#xff0c;关…

关闭宝塔80端口_服务器网站运行宝塔环境安装教程

宝塔环境安装本教程使用宝塔linux面板来作为网站的运行环境&#xff0c;其他的这类软件也是可以的。首先是宝塔面板的安装我们首先连接到服务器&#xff0c;购买服务器后如何远程连接登陆&#xff1f;然后登陆进入了下图这个界面。宝塔环境安装我们打开宝塔面板的官方网站&…

数据包发送时 源端口是随机生成的吗_当你访问XXX网站时,从访问到内容返回呈现,中间发生了什么?...

想必不少小伙伴面试过程中&#xff0c;会遇到「当键入网址后&#xff0c;到网页显示&#xff0c;其间发生了什么」的面试题。这次&#xff0c;小林我带大家一起探究下&#xff0c;一个数据包在网络中的心路历程。每个阶段都有数据包的「心路历程」&#xff0c;我们一起看看它说…

设计电子商务网站建设方案_如何做一份公司网站建设方案书

点击蓝字获取更多优惠信息在决定做好网站建设前&#xff0c;公司应该先对市场情况进行分析、明确建设网站的目的和功能性&#xff0c;并根据市场调查结果对网站建设的各项要求要点做出规划。网站规划对网站建设起到计划和指导的作用&#xff0c;对网站的内容和维护起到定位作用…