TP5.1支付宝遇到的坑

遇到很多坑记录一下

这里用的是电脑支付

下载dome链接:https://docs.open.alipay.com/... 

把demo放到extend目录,文件夹改名字为:alipay,方便后面操作

有人说把需要用的类命名空间,namespace,这个人拉出去枪毙了,真的坑爹啊,命名空间加上后,可能是我linux系统,尽然找不到类了,拉出去枪毙,枪毙,墙壁!

然后在config.php文件夹中配置appid、回调地址一系列参数,如果没有这个文件重新去官网下载

我这里用的require引入

/*支付宝支付*/
    public function pay(){
        header('Content-type:text/html;charset=utf-8');
        require '../extend/alipay/config.php';
        require '../extend/alipay/pagepay/service/AlipayTradeService.php';
        require '../extend/alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';

        //获取订单生成后传递过来的订单编号和金额
        $data=input('param');
        //商户订单号,商户网站订单系统中唯一订单号,必填
        $out_trade_no = '201791711599526';
//        $out_trade_no = $data['sn'];
        //订单名称,必填
        $subject = "认证";
        //付款金额,必填
        $total_amount = '0.01';
//        $total_amount = $data['money'];
        //商品描述,可空
        $body = "";

        $payRequestBuilder = new AlipayTradePagePayContentBuilder();
        $payRequestBuilder->setBody($body);
        $payRequestBuilder->setSubject($subject);
        $payRequestBuilder->setTotalAmount($total_amount);
        $payRequestBuilder->setOutTradeNo($out_trade_no);

        $aop = new AlipayTradeService($this->payconfig);
        /**
         * pagePay 电脑网站支付请求
         * @param $builder 业务参数,使用buildmodel中的对象生成。
         * @param $return_url 同步跳转地址,公网可以访问
         * @param $notify_url 异步通知地址,公网可以访问
         * @return $response 支付宝返回的信息
         */
        $response = $aop->pagePay($payRequestBuilder,$this->payconfig['return_url'],$this->payconfig['notify_url']);
        var_dump($response);
    }

异步方法:

    //异步通知回调
    public function getToken(){
        try{
            $info = Request::param();
            $aop = new AopClient;
            $aop->alipayrsaPublicKey = '填写你的支付宝公钥';
            $flag = $aop->rsaCheckV1($info,NULL,"RSA2");     //验签
            if(!$flag){
                Log::write('验签失败','ALIPAY_THORW');
            }else if($info['trade_status']=='TRADE_SUCCESS'){
                //支付状态
                if(!Db::table('order')->where('ordernum','=',$info['out_trade_no'])->find()){
                    $insertData = ['create_time'=>time(),'update_time'=>time(),'goodname'=>$info['subject'],'ordernum'=>$info['out_trade_no'],
                        'alipaynum'=>$info['trade_no'],'total_money'=>$info['total_amount'],'status'=>1];
                    Db::table('order')->insert($insertData);}
            }
        }
        catch (Exception $e){
            Log::write($e->getMessage(),'ALIPAY_THORW');
        }
    }

同步方法:

    //网页付款成功后返回页面
    public function returnback(){
        echo "<h1>支付成功<h1>";
        halt(Request::param());
    }
原文地址:https://www.cnblogs.com/zyfeng/p/12449470.html