最近入坑了yii2 感觉是个很强大的框架。使用yii做支付宝的移动支付的时候出了点问题,记录下来避免以后忘记了。

使用的是支付宝立即到账的功能,网上很多集成好的接口我就不重复了,找不到的话github上有。说一下下载下来后需要修改的地方。

下载下来的应该是这些文件。我这里使用的是yii2的基础框架,首先把解压好的文件夹放在网站根目录下。

首先打开alipaypay.php

这两个地方要对应的修改成app\yii2_alipay 和 app\yii2_alipay\Alipaysubmit

也就是把frontend\替换成app

其余文件也是这样就不赘述了

修改后市这样的

此外要注意AlipayCore.php中

这里也要修改成

这里就是我之前一直没有成功的原因。

之后就只用修改alipaypay.php即可

这里是你自己在支付宝开放平台申请的,填上即可。

这里是你对应的同步回掉和异步回掉地址,注意一定是要公网可以访问,不能有参数和localhost,因此建议把路径替换成index.php/order/return这样

网上我学习的教程带有?r=这样的形式,我没验证过是否可以

查看支付宝文档可以知道,异步回掉是保证成功的,因此可以单独只写异步回掉,也可以把异步回掉同步回掉均写一遍。

这个函数是传递一些支付宝必要的参数,具体可以查看文档,这里我也不赘述了,各位可以根据自己的需要修改。以上是支付宝类需要修改的地方,各位可以根据自己的实际情况进行修改。

接下来就是写自己的action方法了

首先,支付宝的异步回掉需要关掉csrf,如果有进行了登录验证最好关掉登录验证

上图就是关闭csrf的方法

关闭登录验证可以直接使用access

      $total = 0.01;//round($total,2);
$order_id = 123123123;//订单号,必须唯一
$gift_name = "租赁书籍";
$money = $total;
$body = "租赁书籍";
$show_url = 'lcoalhost';
$alipay = new AlipayPay();
$html = $alipay->requestPay($order_id, $gift_name, $money, $body, $show_url);
      echo $html;

注意订单号必须唯一,不然后一个订单会直接显示已经付过款,其余参数可以查询手册

异步回掉

$alipay = new AlipayPay();$verify_result = $alipay->verifyNotify();
if ($verify_result) {//验证成功
//商户订单号
$out_trade_no = Yii::$app->request->post('out_trade_no');
//交易状态
$trade_status = Yii::$app->request->post('trade_status');
if($trade_status == 'TRADE_FINISHED'||$trade_status == 'TRADE_SUCCESS')
{
//自己的处理代码
} //返回状态
return "success";
} else {
//验证失败
return "fail";
}

同步回掉

//判断结果,跳转到不同页面
$alipay = new AlipayPay();$result = $alipay->verifyReturn(); if ($result) {
$success = $_GET['trade_status'];
$out_trade_no = $_GET['out_trade_no'];
if ($success == 'TRADE_SUCCESS'||$success == 'TRADE_FINISHED') {
//自己的代码
} else {
echo 'no';
}
}
else {
echo 'fail';
}

这个回掉挺简单的,主要是用来处理付款成功后的一些,例如修改付款状态啊什么的,主要是异步起作用,同步因为各种原因可能会出问题。

以上应该是全部的要点了

yii2下使用支付宝的更多相关文章

  1. Yii2下拉框实现

    详细介绍yii2下拉框的实现方法,以商品分类的下拉框为例: 第一种方法:使用Html的activeDropDownList(),该方法的优点是:可以自定义下拉框的样式.具体实现如下: 1.控制器中,获 ...

  2. phpstrom的xdebug开启和yii2下的分页的链接

    phpstrom的xdebug开启 1.修改php.ini文件(修改完重启apaceh) xdebug.remote_enable = onxdebug.idekey= PHPSTROM [注意:远程 ...

  3. yii2下拉框带搜索功能

    简单的小功能,但是用起来还是蛮爽的.分享出来让更多的人有更快的开发效率,开开心心快乐编程.作者:白狼 出处:http://www.manks.top/yii2_dropdown_search.html ...

  4. Ubuntu下安装支付宝安全控件

    在淘宝购物时,安装支付宝安全控件.下载了一个文件.tar.gz(非常小的一个文件). tar -zxvf 解压之,只有一个aliedit.sh文件,运行这个文件就安装成功了,重启firefox就可以用 ...

  5. 基于IOS下的支付宝SDK的学习与使用——实现产品支付(二)

    首先本篇为作者原创,仅供学习使用,以后会不断完善,精炼.阅读之前请参考  上一篇 上一篇 中详细说明了结合官方支付宝SDK,对工程环境进行的一些配置,实现了支付,本篇重点说明一下,注意事项和原理,主要 ...

  6. ASP.NET MVC 下使用支付宝支付接口 以及 ASP.NET Core 下相关改造支付

    通过nuget首先引用AopSdk.dll 包 下面写的是 Asp.Net MVC 下相关的支付接口 APP支付 配置客户端相关的参数,配置成自己的代码就可以了 private string APPI ...

  7. yii2下的路由重写

    1.在config/main.php中添加配置信息 文件位置如图所示(图中展示的是backend下的config,也可以在fronted和common的config中添加) 配置的代码标准格式如下 ' ...

  8. yii2 下拉菜单

    model public static function getCatlist(){ $cat = ['0' => '暂无分类']; $res = self::find()->asArra ...

  9. yii2 下的redis常用命令集合

    <?php \Yii::$app->redis->set('user','aaa'); \Yii::$app->redis->set('user2','bbb'); \Y ...

随机推荐

  1. 微信公众号支付出现:“当前页面的URL未注册”

    微信公众号H5调起支付时,点击支付按钮出现“当前页面的URL未注册”的提示.解决办法:由于2017年8月1日微信官方把关于支付的信息转移到了商户平台:公众平台微信支付公众号支付授权目录.扫码支付回调U ...

  2. EF 如何更新多对多关系的实体

    ctx.Entry(user).Collection(t => t.UserPrivileges).Load(); Come form:https://www.thereformedprogra ...

  3. 关于TMDS

    https://en.wikipedia.org/wiki/Transition-minimized_differential_signaling TMDS,Transition Minimized ...

  4. spring整合Quartz框架过程,大家可以参考下

    这篇文章详细介绍了spring集成quartz框架流程,通过示例代码进行了详细说明,对学习或任务有参考学习价值,并可供需要的朋友参考. 1.quartz框架简介(m.0831jl.com) quart ...

  5. thinkphp扩展配置

    扩展配置可以支持自动加载额外的自定义配置文件,并且配置格式和项目配置一样. 设置扩展配置的方式如下(多个文件用逗号分隔): // 加载扩展配置文件 'LOAD_EXT_CONFIG' => 'u ...

  6. 线段树离散化+区间更新——cf1179C好题

    绝对是很好的题 把问题转化成当第i个询问的答案是数值x时是否可行 要判断值x是否可行,只要再将问题转化成a数组里>=x的值数量是否严格大于b数组里的>=x的值 那么线段树叶子结点维护对于值 ...

  7. kubernetes istio之gateway

    [root@master istio-]# kubectl apply -f samples/httpbin/httpbin.yaml service/httpbin created deployme ...

  8. 驱动层hook系统函数的时,如何屏蔽掉只读属性?

    对于Intel 80486或以上的CPU,CR0的位16是写保护(Write Proctect)标志.当设置该标志时,处理器会禁止超级用户程序(例如特权级0的程序)向只读页面执行写操作:当该位复位时则 ...

  9. DNS 攻击方式及攻击案例

    [赛迪网-IT技术报道]2010年1月12日晨7时起,网络上开始陆续出现百度出现无法访问的情况反馈, 12时左右基本恢复正常:18时许百度发布官方版本公告:对事故原因说明为:"因www.ba ...

  10. Java必备的几个开发工具,你会几个?

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 以下是Java技术栈微信公众号发布的所有关于 Java 常用工具干货,会从以下几个方面汇总,本文会长期更新. 开发工具篇 M ...