一分钟教会你利用thinkphp5.0接入支付宝
备注:thinkphp版本:5.0.24 接入前的准备: 1.沙箱环境网址:https://openhome.alipay.com/platform/appDaily.htm 2.下载对应的demo,我使用的支付宝电脑网站支付:https://opendocs.alipay.com/open/270/106291 3.下载完之后,将文件加压,复制到extend文件夹,将demo文件夹更名为alipay 开始对接 1. 这是demo的入口文件,在文件中我们可以发现,支付的话需要调用:pagepay/pagepay.php文件
2.找到pagepay/pagepay.php这个文件 打开之后是这个样子,现在进行修改:先把有关html的所有东西全部删除 修改后的代码为
<?php
require_once dirname(dirname(__FILE__)).'/config.php';
require_once dirname(__FILE__).'/service/AlipayTradeService.php';
require_once dirname(__FILE__).'/buildermodel/AlipayTradePagePayContentBuilder.php';
//商户订单号,商户网站订单系统中唯一订单号,必填
$out_trade_no = trim($_POST['WIDout_trade_no']);
//订单名称,必填
$subject = trim($_POST['WIDsubject']);
//付款金额,必填
$total_amount = trim($_POST['WIDtotal_amount']);
//商品描述,可空
$body = trim($_POST['WIDbody']);
//构造参数
$payRequestBuilder = new AlipayTradePagePayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setOutTradeNo($out_trade_no);
$aop = new AlipayTradeService($config);
/**
* pagePay 电脑网站支付请求
* @param $builder 业务参数,使用buildmodel中的对象生成。
* @param $return_url 同步跳转地址,公网可以访问
* @param $notify_url 异步通知地址,公网可以访问
* @return $response 支付宝返回的信息
*/
$response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);
//输出表单
var_dump($response);
?>
接下来是重点了 看仔细了,做完这一步就可以就对接成功 将pagepay/pagepay.php这个的第二行到第四行代码进行改写: 使用thinbkphp的助手函数
import('alipay.pagepay.buildermodel.AlipayTradePagePayContentBuilder',EXTEND_PATH);
import('alipay.pagepay.service.AlipayTradeService',EXTEND_PATH);
这个配置文件暂时删除引入,不做任何处理
接下来,将该文件改写成一个类,方便我们一会调用 首先声明命名空间:namespace alipay\pagepay; 这是我设置的 ,你可以自己随便写,不会的直接复制就可以 现在代码为: 接下来,改写类: class pagepay{ public function sendPay($goodsNum,$goodsName,$goodsPic,$goodsDesc){ …………………………………… } }
省略号的部分为原来文件的所有代码全部复制到方法中去 备注:截图只是一部分
接下来,我们去控制器中进行调用 我定义的控制为index/index/alipay
注意了:千万别忘了先引入我们刚才改写的pagepay文件 类文件引入了,方法写了,激动的时刻到来了,打开我们的网址看效果吧_ 咦?出错了?????? 对 就得出错哦
刚才我们忽略了config文件,现在无法访问了,来点直接的,直接吧config数组定义在pagepay类中,(后期商用时,切勿放在这里) 直接将config文件中的$config数组全部复制进来,把该填写的写好,不会写的我没有办法 接下来 ,我们看一次吧 对接成功了
对接过程中可能会遇到的问题: 报错The each() function is deprecated. This message will be suppressed on further calls
解决办法:找到指定的错误行: 将while (list ($key, $val) = each ($para_temp)) { 修改为:foreach ($para_temp as $key => $val) {
问题解决! 导致这个问题的原因是:因为php7+以上版本抛弃了each函数导致
好了 今天就到这里 愉快的实战去吧!
改天给大家分享对接阿里云的短信、腾讯云的短信,都是超级超级简单的
|