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'); } }