支付宝(Alipay)支付,超详细使用教程讲解!

1、支付宝支付按钮调用

<script>
//支付宝支付
    $('.alipayClass').bind("click",function(){
        var imoney = $('#iMoney').val();
        $.ajax({
            type:"POST",
            url:"__APP__/aliPay/aliPayDo",//创建支付订单
            data:{money:money},
            dataType:'text',
            success:function(result){
                var data=eval(result);
                //成功
                if (data[0] == 1) {
                    window.location.href="__APP__?c=aliPay&a=alipay&paymentId="+data[1];
                };
                //失败
                if (data[0] == 0) {                    
                    // $(".motify").show();
              //       $(".motify-inner").text(data[1]);
              //       $('.motify').delay(1000).hide(0);
                    opLayer('open',"网络故障充值失败!");
                    $("#goodcover").delay(1000).hide(0);
                    $(".Wtankdiv").delay(1000).hide(0);              
                    return;    
                };
            }
        });  
    });
</script>

alipayDo生成订单页面

<?php>
//生成订单操作
    public function alipayDo(){
        if ($this->account) {
            $imoney = I("post.imoney");
            if (floatval($imoney)) {    
                //插入支付表
                $data['payment_id'] = date(ymdHis).$this->user_id.'w';//支付单号
                $data['money'] = floatval($imoney);//需要支付的金额
                $data['cur_money'] = 0;//支付货币金额
                $data['user_id'] = $this->user_id;
                $data['user_name'] = $this->account;
                $data['pay_type'] = 'excharge';
                $data['bank'] = 'xxx';//收款银行
                $data['pay_account'] = $this->user_id;//支付账号
                $data['created_time'] = time();
                $result = $this-M('create_payment')->data($data)->add();
                if ($result) {
                    echo json_encode(array(1,$data['payment_id']));
                }else{
                    echo json_encode(array(0,'订单生成失败,请重试!'));
                }
            }else{
                echo json_encode(array(0,'获取金额失败,请重试!'));
            }
        }else {
            echo json_encode(array(0,'手机号码信息不正确!'));
        }
    }
<?php>

支付宝支付页面

<?php
//支付宝支付
    public function alipay(){
        header("Content-type:text/html;charset=utf-8");
        //导入支付宝支付 在ThinkPHP核心框架中
        vendor('Alipay.wshop.lib.alipay_submit','','.class.php');
        vendor('Alipay.wshop.alipay','','.config.php'); 
 
        $paymentId=trim(I('get.paymentId'));
        $paymentInfo = $this->M('create_payments')->where('payment_id = '.$paymentId)->find();
        //$type = I('type');
        if ($paymentInfo['pay_type'] == 'online') {
            $total_fee = round($paymentInfo['cash_fee'],2);
            $subject = "现金支付";
            $body = "现金支付";
        }else{
            $total_fee = round($paymentInfo['money'],2);
            $subject = "积分充值";
            $body = "积分充值";
        }
 
        $alipayConfig = alipayConfig();
        $parameter = array(
            "service"       => $alipayConfig['service'],
            "partner"       => $alipayConfig['partner'],
            "seller_id"  => $alipayConfig['seller_id'],
            "payment_type"  => $alipayConfig['payment_type'],
            "notify_url"    => $alipayConfig['notify_url'],
            "return_url"    => $alipayConfig['return_url'],
            "_input_charset"    => trim(strtolower($alipayConfig['input_charset'])),
            "out_trade_no"  => $paymentId,
            "subject"   => $subject,
            "total_fee" => $total_fee, //sprintf("%.2f", $paymentInfo['money']), 0.01, //
            "show_url"  => __APP__."/Pay/myCenter",
            "body"  => $body,
        );
        $alipaySubmit = new \AlipaySubmit($alipayConfig);  
        $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
 
        echo $html_text;
        
    }

支付宝同步支付返回结果

<?php
 //支付宝同步支付返回结果
    public function aliPayReturnUrl(){
        vendor('Alipay.wshop.lib.alipay_notify','','.class.php');
        vendor('Alipay.wshop.alipay','','.config.php');        
        //计算得出通知验证结果
        $alipayConfig = alipayConfig();
        $alipayNotify = new \AlipayNotify($alipayConfig);
        $verify_result = $alipayNotify->verifyReturn();
        if($verify_result) {
            //验证成功                  
            //商户订单号
            $out_trade_no = $_GET['out_trade_no'];
            //支付宝交易号
            $trade_no = $_GET['trade_no'];
            //交易状态
            $trade_status = $_GET['trade_status'];
            $paymentInfo = $this->M('create_payments')->where('payment_id = '.$out_trade_no)->find();
            if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
                //判断该笔订单是否在商户网站中已经做过处理
                //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                $this->assign('res','success');
                $logdata =array(
                    'type'=>'expense',
                    'user_id'=>$paymentInfo['user_id'],
                    'operator'=>$paymentInfo['user_name'],
                    'message'=>'支付成功',
                    'logtime'=>time()
                );
            }else{
                $this->assign('res','fail');
                $logdata =array(
                    'type'=>'expense',
                    'user_id'=>$paymentInfo['user_id'],
                    'operator'=>$paymentInfo['user_name'],
                    'message'=>'支付失败!',
                    'logtime'=>time()
                );
            }
        }else {
            //验证失败
            //如要调试,请看alipay_notify.php页面的verifyReturn函数
            $logdata =array(
                'type'=>'expense',
                'user_id'=>$paymentInfo['user_id'],
                'operator'=>$paymentInfo['user_name'],
                'message'=>'验证失败!',
                'logtime'=>time()
            );
            //$this->userDataDepositLogModel->data($logdata)->add();
            $this->assign('res','fail');
        }
        //日志表        
        //$this->display('payResult');
        //日志表
        $this->userDataDepositLogModel->data($logdata)->add();
        $this->assign('paymentInfo',$paymentInfo);
        if ($paymentInfo['pay_type'] == 'recharge') {
            $this->display('Pay/payMyResult');
        }else{
            $this->display('Pay/onlineMyPayResult');
        }
    }

 

posted @ 2018-12-22 11:32  爱跑步的乌龟  阅读(6633)  评论(0编辑  收藏  举报