支付宝支付模块 [ 技术分享 ]
由于在网上找了很多,解决办法都没有特别完整的,最终参考一个支付配置成功,为不让新手少走弯路拿出来给大家参考参考
首先打开 AlipayPay.php这个文件 主要配置都在这两个里面
其中重点要说的就是回调的url 因为参数传参需要在 AlipayCore.php这个文件中找到
public $notify_url = 'http://localhost/index.php?r=order/notifycall';
/**
* @var String 页面跳转同步通知页面路径
* 需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
*/
public $return_url = 'http://localhost/index.php?r=order/returncall';
public static function paraFilter($para) {
$para_filter = array();
while (list ($key, $val) = each ($para)) {
if($key == "sign" || $key == "sign_type" || $val == "")continue;
else $para_filter[$key] = $para[$key];
}
return $para_filter;
}
修改为if($key == "sign" || $key == "sign_type" || $val == "" || $key == 'r')添加 $key == 'r'
在vendor 创建文件 AliPay这个文件 将解压的文件放在AliPay这个文件下 /vendor/composer/autoload_classmap.php代码加入: 'AlipayPay' => $vendorDir . '/AliPay/AlipayPay.php'
cacert.pem 这个文件要放在网站根目录\frontend\web\下
在访问的控制器中加入 访问方法
public function actionAlipay() {
$order_id = '200000001' . time();
$gift_name = '元宝充值';
$money = Yii::$app->request->get('money', 0.01);
$body = '元宝充值测试';
$show_url = 'http://www.phpman.cn';
$alipay = new \AlipayPay();
$html = $alipay->requestPay($order_id, $gift_name, $money, $body, $show_url);
echo $html;
} public function actionNotifycall(){
$alipay = new \AlipayPay();
$resunt = $alipay->verifyNotify();
echo $resunt;
}
public function actionReturncall(){
$alipay = new \AlipayPay();
$verify_result = $alipay->verifyReturn();
header("Content-type: text/html; charset=utf-8");
if($verify_result) {//验证成功
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//请在这里加上商户的业务逻辑程序代码
//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
//获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
//商户订单号
$out_trade_no = $_GET['out_trade_no'];
//支付宝交易号
$trade_no = $_GET['trade_no'];
//交易状态
$trade_status = $_GET['trade_status'];
if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
}
else {
echo "trade_status=".$_GET['trade_status'];
}
echo "验证成功<br />";
//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else {
//验证失败
//如要调试,请看alipay_notify.php页面的verifyReturn函数
echo "验证失败";
}
}
文件下载地址 http://pan.baidu.com/s/1nvBJsRf
如有不懂或是有问题的可以加我qq:619656856
共 0 条回复
没有找到数据。
linfeng
注册时间:2017-03-16
最后登录:2017-11-09
在线时长:9小时7分
最后登录:2017-11-09
在线时长:9小时7分
- 粉丝4
- 金钱1080
- 威望10
- 积分1270