支付寶(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');
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM