Explorar el Código

added daimifu payment method

leo hace 7 años
padre
commit
7499cf9225

+ 9 - 9
app/Controllers/UserController.php

@@ -311,7 +311,7 @@ class UserController extends BaseController
             return $response->getBody()->write(json_encode($res));
         }
         $user = $this->user;
-        
+
         //生成二维码
         $qrPayResult = Pay::alipay_get_qrcode($user, $amount, $qrPay);
         //  根据状态值进行业务处理
@@ -322,7 +322,7 @@ class UserController extends BaseController
                 $res['msg'] = "二维码生成成功";
                 $res['amount'] = $amount;
                 $res['qrcode'] = $qrPay->create_erweima($aliresponse->qr_code);
-                
+
                 break;
             case "FAILED":
                 $res['ret'] = 0;
@@ -332,18 +332,18 @@ class UserController extends BaseController
             case "UNKNOWN":
                 $res['ret'] = 0;
                 $res['msg'] = "系统异常,状态未知!!!!!! 请使用其他方式付款。";
-                
+
                 break;
             default:
                 $res['ret'] = 0;
                 $res['msg'] = "创建订单二维码返回异常!!!!!! 请使用其他方式付款。";
-                
+
                 break;
         }
-        
+
         return $response->getBody()->write(json_encode($res));
     }
-    
+
     public function alipay($request, $response, $args)
     {
         $amount = $request->getQueryParams()["amount"];
@@ -529,7 +529,7 @@ class UserController extends BaseController
     }
 
 
- 
+
     public function node($request, $response, $args)
     {
         $user = Auth::getUser();
@@ -553,7 +553,7 @@ class UserController extends BaseController
         $node_class=array();
 
             $ports_count = Node::where('type', 1)->where('sort', 9)->orderBy('name')->count();
-  
+
 
         $ports_count += 1;
 
@@ -1654,7 +1654,7 @@ class UserController extends BaseController
  //       Auth::logout();
    //     $user->kill_user();
         $res['ret'] = 1;
-        $res['msg'] = "您没有使用此功能的权限。";  
+        $res['msg'] = "您没有使用此功能的权限。";
         return $this->echoJson($response, $res);
     }
 

+ 190 - 0
app/Utils/DoiAMPay.php

@@ -0,0 +1,190 @@
+<?php
+namespace App\Utils;
+/**
+ * Made By Leo
+ * 黛米付接口
+ * 2.1.4版本
+ * 适用于 V1 API  黛米付面板V1
+ * copyright all rights reserved
+ */
+
+use App\Services\View;
+use App\Services\Auth;
+use App\Models\Node;
+use App\Models\TrafficLog;
+use App\Models\InviteCode;
+use App\Models\CheckInLog;
+use App\Models\Ann;
+use App\Models\Speedtest;
+use App\Models\Shop;
+use App\Models\Coupon;
+use App\Models\Bought;
+use App\Models\Ticket;
+use App\Services\Config;
+use App\Utils\Hash;
+use App\Utils\Tools;
+use App\Utils\Radius;
+use App\Utils\Wecenter;
+use App\Models\RadiusBan;
+use App\Models\DetectLog;
+use App\Models\DetectRule;
+use voku\helper\AntiXSS;
+use App\Models\User;
+use App\Models\Code;
+use App\Models\Ip;
+use App\Models\Paylist;
+use App\Models\LoginIp;
+use App\Models\BlockIp;
+use App\Models\UnblockIp;
+use App\Models\Payback;
+use App\Models\Relay;
+use App\Utils\QQWry;
+use App\Utils\GA;
+use App\Utils\Geetest;
+use App\Utils\Telegram;
+use App\Utils\TelegramSessionManager;
+use App\Utils\Pay;
+use App\Utils\URL;
+use App\Services\Mail;
+
+class DoiAMPay{
+
+    protected const VERSION = "2.1.4";
+
+    public function smarty()
+    {
+        $this->smarty = View::getSmarty();
+        return $this->smarty;
+    }
+
+    public function view()
+    {
+        return $this->smarty();
+    }
+
+    public static function render(){
+        return View::getSmarty()->assign("enabled",Config::get("doiampay")['enabled'])->fetch("user/doiam.tpl");
+    }
+    public function handle($request, $response, $args){
+        $type = $request->getParam('type');
+        $price = $request->getParam('price');
+        if(Config::get("doiampay")['enabled'][$type]==0){
+            return json_encode(['errcode'=>-1,'errmsg'=>"非法的支付方式."]);
+        }
+        if($price <= 0){
+            return json_encode(['errcode'=>-1,'errmsg'=>"非法的金额."]);
+        }
+        $user = Auth::getUser();
+        $settings = Config::get("doiampay")['mchdata'][$type];
+        $pl = new Paylist();
+        $pl->userid = $user->id;
+        $pl->total = $price;
+        $pl->save();
+        $data = [
+            'trade' => $pl->id,
+            'price' => $price,
+            'phone' => $settings['phone'],
+            'mchid' => $settings['mchid'],
+            'subject' => Config::get("appName")."充值".$price."元",
+            'body' => Config::get("appName")."充值".$price."元",
+            'type' => 'Mod',
+        ];
+        $data = DoiAM::sign($data,$settings['token']);
+        $ret = DoiAM::post("https://api.daimiyun.cn/v2/".$type."/create",$data);
+        $result = json_decode($ret,true);
+        if($result and $result['errcode']==0){
+            $result['pid']=$pl->id;
+            return json_Encode($result);
+        }else{
+            return json_encode([
+                'errcode'=>-1,
+                'errmsg' => "接口调用失败!".$ret,
+            ]);
+        }
+        return $result;
+    }
+    public function status($request, $response, $args){
+        return json_encode(Paylist::find($_POST['pid']));
+    }
+    public function handle_return($request, $response, $args){
+        $money = $_GET['money'];
+         echo "您已经成功支付 $money 元,正在跳转..";
+         echo <<<HTML
+<script>
+    location.href="/user/code";
+</script>
+HTML;
+        return;
+    }
+    public function handle_callback($request, $response, $args){
+        $order_data = $_POST;
+        $status    = $order_data['status'];         //获取传递过来的交易状态
+        $invoiceid = $order_data['out_trade_no'];     //订单号
+        $transid   = $order_data['trade_no'];       //转账交易号
+        $amount    = $order_data['money'];          //获取递过来的总价格
+        if(!DoiAM::checksign($_POST,Config::get("doiampay")['mchdata'][$args['type']]['token'])){
+            return (json_encode(array('errcode'=>2333)));
+        }
+        if ($status == 'success') {
+            $p=Paylist::find($invoiceid);
+            if($p->status==1){
+                return json_encode(['errcode'=>0]);
+            }
+            $p->status=1;
+            $p->save();
+            $user = User::find($p->userid);
+            $user->money += $p->total;
+            $user->save();
+            $codeq=new Code();
+            $codeq->code=['wepay' => "微信" , 'qqpay' => 'QQ支付','alipay' => "支付宝"][$args['type']]."充值";
+            $codeq->isused=1;
+            $codeq->type=-1;
+            $codeq->number=$p->total;
+            $codeq->usedatetime=date("Y-m-d H:i:s");
+            $codeq->userid=$user->id;
+            $codeq->save();
+            return json_encode(['errcode'=>0]);
+        }else{
+            return '';
+        }
+    }
+}
+class DoiAM{
+    public static function sort(&$array){
+        ksort($array);
+    }
+    public static function getsign($array,$key){
+        unset($array['sign']);
+        self::sort($array);
+        $sss=http_build_query($array);
+        $sign=hash("sha256",$sss.$key);
+        $sign=sha1($sign.hash("sha256",$key));
+        return $sign;
+    }
+    public static function sign($array,$key){
+        $array['sign']=self::getSign($array,$key);
+        return $array;
+    }
+    public static function checksign($array,$key){
+        $new = $array;
+        $new=self::sign($new,$key);
+        if(!isset($array['sign'])){
+            return false;
+        }
+        return $array['sign']==$new['sign'];
+    }
+    public static function post($url, $data = null){
+    	$curl = curl_init();
+    	curl_setopt($curl, CURLOPT_URL, $url);
+    	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
+    	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
+    	if (!empty($data)){
+    	curl_setopt($curl, CURLOPT_POST, 1);
+    	curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
+    	}
+    	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+    	$output = curl_exec($curl);
+    	curl_close($curl);
+    	return $output;
+    }
+}

+ 57 - 46
app/Utils/Pay.php

@@ -11,6 +11,8 @@ class Pay
     {
         $driver = Config::get("payment_system");
         switch ($driver) {
+            case "doiampay":
+                return Pay::doiampay_html($user);
             case "paymentwall":
                 return Pay::pmw_html($user);
             case 'spay':
@@ -20,12 +22,21 @@ class Pay
             case 'f2fpay':
                 return Pay::f2fpay_html($user);
 			case 'yftpay':
-                return Pay::yftpay_html($user); 
+                return Pay::yftpay_html($user);
             default:
                 return "";
         }
         return null;
     }
+    /**
+     * DoiamPay
+     * @param  User   $user User
+     * @return String       HTML
+     */
+    public static function doiampay_html(User $user){
+        return \App\Utils\DoiAMPay::render();
+    }
+
     private static function spay_html($user)
     {
         return '
@@ -45,10 +56,10 @@ class Pay
     }
     private static function f2fpay_html($user)
     {
-        
+
             return '
             			<p><i class="icon icon-lg">monetization_on</i>&nbsp;余额&nbsp;<font color="red" size="5">'.$user->money.'</font>&nbsp;元</p>
-                        
+
                         <p><img src="/images/qianbai-4.png" height="250" width="200" /></p>
                         <div class="form-group form-group-label">
                          <label class="floating-label" for="number">请选择充值金额</label>
@@ -63,7 +74,7 @@ class Pay
                         </div>
                         <p></p>
                         <a class="btn btn-flat waves-attach" id="urlChange" ><span class="icon">local_gas_station</span>&nbsp;充值</a>
-';              
+';
     }
 	private static function yftpay_html($user)
     {
@@ -81,9 +92,9 @@ class Pay
 												<button type="submit" class="btn btn-flat waves-attach" id="yftCoin" ><span class="icon">check</span>&nbsp;充值</button>
 											</div>
 										</div>
-									</form>     
+									</form>
 ';
-    } 
+    }
     private static function pmw_html($user)
     {
         \Paymentwall_Config::getInstance()->set(array(
@@ -165,10 +176,10 @@ class Pay
             //查询间隔
             'QueryDuration' => "3"
         );
-        
+
         return $config;
     }
-    
+
     public static function alipay_get_qrcode($user, $amount, &$qrPay)
     {
         //创建订单
@@ -176,60 +187,60 @@ class Pay
         $pl->userid = $user->id;
         $pl->total = $amount;
         $pl->save();
-        
+
         //获取支付宝接口配置
         $config = Pay::get_alipay_config();
-        
+
         //$timestamp
-        /**************************请求参数**************************/      
+        /**************************请求参数**************************/
         // (必填) 商户网站订单系统中唯一订单号,64个字符以内,只能包含字母、数字、下划线,
         // 需保证商户系统端不能重复,建议通过数据库sequence生成,
         //$outTradeNo = "qrpay".date('Ymdhis').mt_rand(100,1000);
         $outTradeNo = $pl->id;
-    
+
         // (必填) 订单标题,粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”
         $subject = "¥".$pl->total." - ".Config::get("appName")." - {$user->user_name}({$user->email})";
-    
+
         // (必填) 订单总金额,单位为元,不能超过1亿元
         // 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
         $totalAmount = $pl->total;
-        
+
         // (不推荐使用) 订单可打折金额,可以配合商家平台配置折扣活动,如果订单部分商品参与打折,可以将部分商品总价填写至此字段,默认全部商品可打折
         // 如果该值未传入,但传入了【订单总金额】,【不可打折金额】 则该值默认为【订单总金额】- 【不可打折金额】
         //String discountableAmount = "1.00"; //
-    
+
         // (可选) 订单不可打折金额,可以配合商家平台配置折扣活动,如果酒水不参与打折,则将对应金额填写至此字段
         // 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
         $undiscountableAmount = "0.01";
-    
+
         // 卖家支付宝账号ID,用于支持一个签约账号下支持打款到不同的收款账号,(打款到sellerId对应的支付宝账号)
         // 如果该字段为空,则默认为与支付宝签约的商户的PID,也就是appid对应的PID
         //$sellerId = "";
-    
+
         // 订单描述,可以对交易或商品进行一个详细地描述,比如填写"购买商品2件共15.00元"
         $body = "用户名:".$user->user_name." 用户ID:".$user->id." 用户充值共计".$pl->total."元";
-    
+
         //商户操作员编号,添加此参数可以为商户操作员做销售统计
         $operatorId = "bak_admin0001";
-    
+
         // (可选) 商户门店编号,通过门店号和商家后台可以配置精准到门店的折扣信息,详询支付宝技术支持
         $storeId = "bak_store001";
-    
+
         // 支付宝的店铺编号
         //$alipayStoreId= "2016041400077000000003314986";
-    
+
         // 业务扩展参数,目前可添加由支付宝分配的系统商编号(通过setSysServiceProviderId方法),系统商开发使用,详情请咨询支付宝技术支持
         $providerId = ""; //系统商pid,作为系统商返佣数据提取的依据
         $extendParams = new \ExtendParams();
         $extendParams->setSysServiceProviderId($providerId);
         $extendParamsArr = $extendParams->getExtendParams();
-    
+
         // 支付超时,线下扫码交易定义为5分钟
         $timeExpress = "5m";
-    
+
         // 商品明细列表,需填写购买商品详细信息,
         $goodsDetailList = array();
-    
+
         // 创建一个商品信息,参数含义分别为商品id(使用国标)、名称、单价(单位为分)、数量,如果需要添加商品类别,详见GoodsDetail
         $goods1 = new \GoodsDetail();
         $goods1->setGoodsId($pl->total);
@@ -239,10 +250,10 @@ class Pay
         //得到商品1明细数组
         $goods1Arr = $goods1->getGoodsDetail();
         $goodsDetailList = array($goods1Arr);
-    
+
         //第三方应用授权令牌,商户授权系统商开发模式下使用
         $appAuthToken = "";//根据真实值填写
-    
+
         // 创建请求builder,设置请求参数
         $qrPayRequestBuilder = new \AlipayTradePrecreateContentBuilder();
         $qrPayRequestBuilder->setOutTradeNo($outTradeNo);
@@ -257,20 +268,20 @@ class Pay
         $qrPayRequestBuilder->setOperatorId($operatorId);
         //$qrPayRequestBuilder->setAlipayStoreId($alipayStoreId);
         $qrPayRequestBuilder->setAppAuthToken($appAuthToken);
-    
+
         // 调用qrPay方法获取当面付应答
         $qrPay = new \AlipayTradeService($config);
         $qrPayResult = $qrPay->qrPay($qrPayRequestBuilder);
-        
+
         return $qrPayResult;
     }
     private static function f2fpay_gen($user, $amount)
-    {   
+    {
         //$qrPayResult = Pay::query_alipay_order(2017052112230123456);
         //return ;
         //生成二维码
         $qrPayResult = Pay::alipay_get_qrcode($user, $amount, $qrPay);
-    
+
         //  根据状态值进行业务处理
         switch ($qrPayResult->getTradeStatus()){
             case "SUCCESS":
@@ -299,12 +310,12 @@ class Pay
                 echo "请使用其他方式付款。";
                 break;
         }
-        
+
         if ($qrPayResult->getTradeStatus()) {
             sleep(1);
             echo "轮询处理:";
         }
-        
+
         return ;
     }
     public static function getGen($user, $amount)
@@ -318,7 +329,7 @@ class Pay
             case 'zfbjk':
                 return Pay::alipay_html();
             case 'f2fpay':
-               return Pay::f2fpay_gen($user, $amount);    
+               return Pay::f2fpay_gen($user, $amount);
             default:
                 return "";
         }
@@ -557,7 +568,7 @@ class Pay
         $aop = new \AopClient();
         $alipayrsaPublicKey = Config::get("alipay_public_key");
         $aop->alipayrsaPublicKey = $alipayrsaPublicKey;
-        
+
         //获取支付宝返回参数
         $arr=$_POST;
         //调用验签的方法
@@ -569,7 +580,7 @@ class Pay
             $trade_no = $_POST['trade_no'];
             //交易状态
             $trade_status = $_POST['trade_status'];
-        
+
             // 查询系统订单
             $alipayPID = Config::get("f2fpay_p_id");
             if ($_POST['seller_id']!=$alipayPID){
@@ -579,24 +590,24 @@ class Pay
             if ($trade == null) {//没有符合的订单,或订单已经处理
                 exit("success");
             }
-            
+
             //订单查询到,处理业务
             if($trade_status == 'TRADE_FINISHED'||$trade_status == 'TRADE_SUCCESS') {
-        
+
                 //判断该笔订单是否在商户网站中已经做过处理
                     //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                     //请务必判断请求时的total_amount与通知时获取的total_fee为一致的
                     //如果有做过处理,不执行商户的业务程序
-                        
+
                 //注意:
                 //付款完成后,支付宝系统发送该交易状态通知
                 //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
-                
+
                 //更新订单状态
                 $trade->tradeno = $trade_no;
                 $trade->status = 1;
                 $trade->save();
-                
+
                 //更新用户账户
                 $user=User::find($trade->userid);
                 $user->money=$user->money+$_POST['total_amount'];
@@ -606,7 +617,7 @@ class Pay
                     $user->class=1;
                 }
                 $user->save();
-                
+
                 //更新充值(捐赠)记录
                 $codeq=new Code();
                 $codeq->code="支付宝 充值";
@@ -621,7 +632,7 @@ class Pay
                     $gift_user=User::where("id", "=", $user->ref_by)->first();
                     $gift_user->money=($gift_user->money+($codeq->number*(Config::get('code_payback')/100)));
                     $gift_user->save();
-                        
+
                     $Payback=new Payback();
                     $Payback->total=$_POST['total_amount'];
                     $Payback->userid=$user->id;
@@ -630,7 +641,7 @@ class Pay
                     $Payback->datetime=time();
                     $Payback->save();
                 }
-                
+
                 if (Config::get('enable_donate') == 'true') {
                     if ($user->is_hide == 1) {
                         Telegram::Send("一位不愿透露姓名的大老爷给我们捐了 ".$codeq->number." 元!");
@@ -638,7 +649,7 @@ class Pay
                         Telegram::Send($user->user_name." 大老爷给我们捐了 ".$codeq->number." 元!");
                     }
                 }
-                
+
                 //业务处理完毕,向支付宝系统返回成功
                 echo "success";     //请不要修改或删除
             }
@@ -651,7 +662,7 @@ class Pay
     {
         $driver = Config::get("payment_system");
         switch ($driver) {
-            case "paymentwall": 
+            case "paymentwall":
                 return Pay::pmw_callback();
             case 'spay':
                 return Pay::spay_callback();
@@ -664,4 +675,4 @@ class Pay
         }
         return null;
     }
-}
+}

+ 8 - 2
config/routes.php

@@ -346,10 +346,16 @@ $app->group('/link', function () {
     $this->get('/{token}', 'App\Controllers\LinkController:GetContent');
 });
 
-
+$app->group('/user',function(){
+    $this->post("/doiam","App\Utils\DoiAMPay:handle");
+})->add(new Auth());
+$app->group("/doiam",function(){
+    $this->post("/callback/{type}","App\Utils\DoiAMPay:handle_callback");
+    $this->get("/return/alipay","App\Utils\DoiAMPay:handle_return");
+    $this->post("/status","App\Utils\DoiAMPay:status");
+});
 
 
 
 // Run Slim Routes for App
 $app->run();
- 

+ 56 - 55
resources/views/material/auth/register.tpl

@@ -15,7 +15,7 @@
 								</div>
 								<div class="card-inner">
 
-									
+
 										<div class="form-group form-group-label">
 											<div class="row">
 												<div class="col-md-10 col-md-push-1">
@@ -24,7 +24,7 @@
 												</div>
 											</div>
 										</div>
-										
+
 										<div class="form-group form-group-label">
 											<div class="row">
 												<div class="col-md-10 col-md-push-1">
@@ -33,26 +33,27 @@
 												</div>
 											</div>
 										</div>
-                                  
-                                  
-                                  
+										{*
+
+
+
                                   			<!--<div class="form-group form-group-label">
 											<div class="row">
 												<div class="col-md-10 col-md-push-1">
 											<label class="floating-label" for="theme">主题</label>
 											<select id="theme" class="form-control">
-												
+
 													<option value="{$theme}">{$theme}</option>
-												
+
 													</select>
 												</div>
 											</div>
 										</div>-->
-										
-                                  
-                                  
-                                  
-                                  
+
+
+
+
+                                  *}
 										{if $enable_email_verify == 'true'}
 										<div class="form-group form-group-label">
 											<div class="row">
@@ -63,10 +64,10 @@
 												</div>
 											</div>
 										</div>
-                                  
+
                                   {/if}
 
-										
+
 										<div class="form-group form-group-label">
 											<div class="row">
 												<div class="col-md-10 col-md-push-1">
@@ -75,7 +76,7 @@
 												</div>
 											</div>
 										</div>
-										
+
 										<div class="form-group form-group-label">
 											<div class="row">
 												<div class="col-md-10 col-md-push-1">
@@ -84,8 +85,8 @@
 												</div>
 											</div>
 										</div>
-										
-										
+
+
 										<div class="form-group form-group-label">
 											<div class="row">
 												<div class="col-md-10 col-md-push-1">
@@ -100,8 +101,8 @@
 												</div>
 											</div>
 										</div>
-										
-										
+
+
 										<div class="form-group form-group-label">
 											<div class="row">
 												<div class="col-md-10 col-md-push-1">
@@ -110,9 +111,9 @@
 												</div>
 											</div>
 										</div>
-										
-										
-										
+
+
+
 									<!--	{if $enable_invite_code == 'true'}  -->
 											<div class="form-group form-group-label">
 												<div class="row">
@@ -123,7 +124,7 @@
 												</div>
 											</div>
 								<!--		{/if}   -->
-										
+
 										{if $geetest_html != null}
 											<div class="form-group form-group-label">
 												<div class="row">
@@ -133,7 +134,7 @@
 												</div>
 											</div>
 										{/if}
-										
+
 										<div class="form-group">
 											<div class="row">
 												<div class="col-md-10 col-md-push-1">
@@ -141,7 +142,7 @@
 												</div>
 											</div>
 										</div>
-										
+
 										<div class="form-group">
 											<div class="row">
 												<div class="col-md-10 col-md-push-1">
@@ -149,20 +150,20 @@
 												</div>
 											</div>
 										</div>
-									
+
 								</div>
 							</div>
 						</div>
 						<div class="clearfix">
 							<p class="margin-no-top pull-left"><a class="btn btn-flat btn-brand waves-attach" href="/auth/login">已经注册?请登录</a></p>
 						</div>
-						
-						
-						
-								
+
+
+
+
 						{include file='dialog.tpl'}
-						
-						
+
+
 						<div aria-hidden="true" class="modal modal-va-middle fade" id="tos_modal" role="dialog" tabindex="-1">
 							<div class="modal-dialog">
 								<div class="modal-content">
@@ -180,13 +181,13 @@
 								</div>
 							</div>
 						</div>
-						
+
 					</section>
 				</div>
 			</div>
 		</div>
 	</main>
-	
+
 {include file='footer.tpl'}
 
 
@@ -194,9 +195,9 @@
 <script>
     $(document).ready(function(){
         function register(){
-			
-			document.getElementById("tos").disabled = true; 
-			
+
+			document.getElementById("tos").disabled = true;
+
             $.ajax({
                 type:"POST",
                 url:"/auth/register",
@@ -223,7 +224,7 @@
                     }else{
                         $("#result").modal();
                         $("#msg").html(data.msg);
-			document.getElementById("tos").disabled = false; 
+			document.getElementById("tos").disabled = false;
 
 			{if $geetest_html != null}
 			captcha.refresh();
@@ -234,7 +235,7 @@
 			$("#msg-error").hide(10);
 			$("#msg-error").show(100);
 			$("#msg-error-p").html("发生错误:"+jqXHR.status);
-			document.getElementById("tos").disabled = false; 
+			document.getElementById("tos").disabled = false;
 			{if $geetest_html != null}
 			captcha.refresh();
 			{/if}
@@ -246,24 +247,24 @@
                 $("#tos_modal").modal();
             }
         });
-		
+
 		{if $geetest_html != null}
 		$('div.modal').on('shown.bs.modal', function() {
 			$("div.gt_slider_knob").hide();
 		});
-		
-		
+
+
 		$('div.modal').on('hidden.bs.modal', function() {
 			$("div.gt_slider_knob").show();
 		});
-		
-        
+
+
 		{/if}
-		
+
 		$("#reg").click(function(){
             register();
         });
-		
+
 		$("#tos").click(function(){
 			{if $geetest_html != null}
 			if(typeof validate == 'undefined')
@@ -272,13 +273,13 @@
                 $("#msg").html("请滑动验证码来完成验证。");
 				return;
 			}
-			
+
 			if (!validate) {
 				$("#result").modal();
                 $("#msg").html("请滑动验证码来完成验证。");
 				return;
 			}
-			
+
 			{/if}
             $("#tos_modal").modal();
         });
@@ -291,7 +292,7 @@
 var wait=60;
 function time(o) {
 		if (wait == 0) {
-			o.removeAttr("disabled");			
+			o.removeAttr("disabled");
 			o.text("获取验证码");
 			wait = 60;
 		} else {
@@ -310,7 +311,7 @@ function time(o) {
     $(document).ready(function () {
         $("#email_verify").click(function () {
 			time($("#email_verify"));
-			
+
             $.ajax({
                 type: "POST",
                 url: "send",
@@ -322,7 +323,7 @@ function time(o) {
                     if (data.ret) {
                         $("#result").modal();
 			$("#msg").html(data.msg);
-						
+
                     } else {
                         $("#result").modal();
 			$("#msg").html(data.msg);
@@ -342,17 +343,17 @@ function time(o) {
 <script>
 	var handlerEmbed = function (captchaObj) {
         // 将验证码加到id为captcha的元素里
-		
+
 		captchaObj.onSuccess(function () {
 		    validate = captchaObj.getValidate();
 		});
-		
+
 		captchaObj.appendTo("#embed-captcha");
 
 		captcha = captchaObj;
 		// 更多接口参考:http://www.geetest.com/install/sections/idx-client-sdk.html
     };
-	
+
 	initGeetest({
 		gt: "{$geetest_html->gt}",
 		challenge: "{$geetest_html->challenge}",
@@ -361,4 +362,4 @@ function time(o) {
 	}, handlerEmbed);
 </script>
 
-{/if}
+{/if}

+ 21 - 25
resources/views/material/user/code.tpl

@@ -14,30 +14,27 @@
 		<div class="content-header ui-content-header">
 			<div class="container">
 				<h1 class="content-heading">充值</h1>
-              
-              
+
+
 			</div>
 		</div>
 		<div class="container">
 			<section class="content-inner margin-top-no">
 				<div class="row">
-				
+
 				    {if $pmw!=''}
 					<div class="col-lg-12 col-md-12">
 						<div class="card margin-bottom-no">
 							<div class="card-main">
 								<div class="card-inner">
-									<div class="card-inner">
-										{$pmw}
-									</div>
-									
+									{$pmw}
 								</div>
 							</div>
 						</div>
-					</div>	
-						
+					</div>
+
 					{/if}
-				
+
 					<div class="col-lg-12 col-md-12">
 						<div class="card margin-bottom-no">
 							<div class="card-main">
@@ -60,7 +57,7 @@
 							</div>
 						</div>
 					</div>
-					
+
 					<div class="col-lg-12 col-md-12">
 						<div class="card margin-bottom-no">
 							<div class="card-main">
@@ -76,7 +73,7 @@
 														<th>类型</th>
 														<th>操作</th>
 														<th>使用时间</th>
-														
+
 													</tr>
 													{foreach $codes as $code}
 														{if $code->type!=-2}
@@ -116,7 +113,7 @@
 											</div>
 										</div>
 									</div>
-									
+
 								</div>
 							</div>
 						</div>
@@ -135,14 +132,14 @@
 							</div>
 						</div>
 					</div>
-					
+
 					<div aria-hidden="true" class="modal modal-va-middle fade" id="alipay" role="dialog" tabindex="-1">
 						<div class="modal-dialog modal-xs">
 							<div class="modal-content">
 							<div class="modal-heading">
 									<a class="modal-close" data-dismiss="modal">×</a>
                               <h2 class="modal-title">请使用支付宝App扫码充值:</h2>
-								</div> 
+								</div>
 								<div class="modal-inner">
                                    <div class="text-center">
                                     <p id="divide">-------------------------------------------------------------</p>
@@ -152,10 +149,10 @@
 									<p id="info"></p>
 								</div>
                                   </div>
-								
+
 								<div class="modal-footer">
 									<p class="text-right"><button class="btn btn-flat btn-brand waves-attach" data-dismiss="modal" id="alipay_cancel" type="button">取消</button></p>
-								</div>	
+								</div>
 							</div>
 						</div>
 					</div>
@@ -201,7 +198,7 @@
 				}
 			})
 		})
-		
+
 	$("#urlChange").click(function () {
 			$.ajax({
 				type: "GET",
@@ -215,10 +212,10 @@
 						$("#readytopay").modal();
 					}
 				}
-				
+
 			})
 		});
-		
+
 		$("#readytopay").on('shown.bs.modal', function () {
 			$.ajax({
 				type: "POST",
@@ -244,10 +241,10 @@
 					$("#msg").html(data.msg+"  发生了错误。");
 				}
 			})
-		});	
-	timestamp = {time()}; 
-		
-		
+		});
+	timestamp = {time()};
+
+
 	function f(){
 		$.ajax({
 			type: "GET",
@@ -271,4 +268,3 @@
 	setTimeout(f, 1000);
 })
 </script>
-

+ 107 - 0
resources/views/material/user/doiam.tpl

@@ -0,0 +1,107 @@
+<div class="card-inner">
+	<p class="card-heading">充值</p>
+	您的余额:{$user->money}
+	<h5>支付方式:</h5>
+	<nav class="tab-nav margin-top-no">
+		<ul class="nav nav-list">
+			{if $enabled['wepay']}
+				<li class="active">
+					<a class="waves-attach waves-effect type" data-toggle="tab" href="#" data-pay="wepay">微信支付</a>
+				</li>
+			{/if}
+			{if $enabled['alipay']}
+				<li>
+					<a class="waves-attach waves-effect type" data-toggle="tab" href="#" data-pay="alipay">支付宝</a>
+				</li>
+			{/if}
+			{if $enabled['qqpay']}
+				<li>
+					<a class="waves-attach waves-effect type" data-toggle="tab" href="#" data-pay="qqpay">QQ支付</a>
+				</li>
+			{/if}
+		</ul>
+		<div class="tab-nav-indicator"></div>
+	</nav>
+	<div class="form-group form-group-label">
+		<label class="floating-label" for="amount">金额</label>
+		<input class="form-control" id="amount" type="text">
+	</div>
+</div>
+<div class="card-action">
+	<div class="card-action-btn pull-left">
+		<button class="btn btn-flat waves-attach" id="submit" ><span class="icon">check</span>&nbsp;充值</button>
+	</div>
+</div>
+<script>
+	var type = "wepay";
+	var pid = 0;
+window.onload = function(){
+	$('body').append("<script src=\" \/assets\/public\/js\/jquery.qrcode.min.js \"><\/script>");
+	$(".type").click(function(){
+		type = $(this).data("pay");
+	});
+	$("#submit").click(function(){
+		var price = parseFloat($("#amount").val());
+		console.log("将要使用"+type+"方法充值"+price+"元")
+		if(isNaN(price)){
+			$("#result").modal();
+			$("#msg").html("非法的金额!");
+		}
+		$.ajax({
+			'url':"/user/doiam",
+			'data':{
+				'price':price,
+				'type':type,
+			},
+			'dataType':'json',
+			'type':"POST",
+			success:function(data){
+				console.log(data);
+				if(data.errcode==-1){
+					$("#result").modal();
+					$("#msg").html(data.errmsg);
+				}
+				if(data.errcode==0){
+					pid = data.pid;
+					if(type=="wepay"){
+						$("#result").modal();
+						$("#msg").html('<div class="text-center">使用微信扫描二维码支付.<div id="dmy" style="padding-top:  10px;"></div></div>');
+						$("#dmy").qrcode({
+							"text": data.code
+						});
+					}else if(type=="alipay"){
+						$("#result").modal();
+						$("#msg").html("正在跳转到支付宝..."+data.code);
+					}else if(type=="qqpay"){
+						$("#result").modal();
+						$("#msg").html('<div class="text-center">使用QQ扫描二维码支付.<div id="dmy"></div></div>');
+						$("#dmy").qrcode({
+							"text": data.code
+						});
+					}
+				}
+			}
+		});
+		function f(){
+			$.ajax({
+				type: "POST",
+				url: "/doiam/status",
+				dataType: "json",
+				data: {
+					pid:pid
+				},
+				success: function (data) {
+					if (data.status) {
+						clearTimeout(tid);
+						$("#result").modal();
+						$("#msg").html("充值成功!");
+						window.setTimeout("location.href=window.location.href", {$config['jump_delay']});
+					}
+				}
+			});
+			tid = setTimeout(f, 1000);
+		}
+		setTimeout(f, 2000);
+	});
+}
+</script>