linfeng 2017-04-21 12:33:53 2307次浏览 0条回复 3 1 0

由于在网上找了很多,解决办法都没有特别完整的,最终参考一个支付配置成功,为不让新手少走弯路拿出来给大家参考参考

首先打开 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

觉得很赞
    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册