diff --git a/Application/Sdk/Controller/WapPayController.class.php b/Application/Sdk/Controller/WapPayController.class.php index 63fe0860e..129e83a58 100644 --- a/Application/Sdk/Controller/WapPayController.class.php +++ b/Application/Sdk/Controller/WapPayController.class.php @@ -53,8 +53,39 @@ class WapPayController extends BaseController{ ->setDiscount($discount) ->setSmallId($param['small_user_id']) ->setSmallAccount(get_user_account_by_id($param['small_user_id'])); - return $pay->buildRequestForm($vo); + return $pay->buildRequestForm($vo, 0, $param); } + + /** + * 优先扣除绑币 和平台 处理 + * $request $discountAmount 折扣价格 + */ + public function other_price(&$request, $discountAmount=0) { + // 优先扣除绑定币平台币 + $deductionAmount = 0; + $user_id = $request['user_id']; + $game_id = $request['game_id']; + $balance = M ('user', 'tab_')->where (array( + 'id' => $user_id + ))->getField('balance'); + $bind_balance = M('user_play', 'tab_')->where(array( + 'user_id' => $user_id, + 'game_id' => $game_id + ))->getField('bind_balance'); + // 够抵扣的情况 不走这个接口 + $deductionAmount = $bind_balance + $balance; + if ($deductionAmount > $request['price']) { + $this->set_message(1089,"fail",$deductionAmount."平台币足够,请关闭支付页面重新支付".$pay_amount); + } + // 实际支付金额 = 支付总金额 - 折扣抵扣价格 - 绑币和平台币抵扣金额 + $request['actual_amount'] = round($request['price'] - $discountAmount - $deductionAmount, 2).''; + $request['discount_amount'] = round($discountAmount, 2).''; + $request['deduction_amount'] = round($deductionAmount, 2).''; + $request['price'] = round($request['actual_amount'], 2).''; + return $request; + //$this->set_message(1089,"fail",$request['price']."新支付".$pay_amount); + } + /** *支付宝移动支付 */ @@ -83,28 +114,9 @@ class WapPayController extends BaseController{ $prefix = $request['code'] == 1 ? "SP_" : "PF_"; $out_trade_no = $prefix.date('Ymd').date('His').sp_random_string(4); - // 优先扣除绑定币平台币 - $deductionAmount = 0; - $user_id = $request['user_id']; - $game_id = $request['game_id']; - $balance = M ('user', 'tab_')->where (array( - 'id' => $user_id - ))->getField('balance'); - $bind_balance = M('user_play', 'tab_')->where(array( - 'user_id' => $user_id, - 'game_id' => $game_id - ))->getField('bind_balance'); - // 够抵扣的情况 不走这个接口 - $deductionAmount = $bind_balance + $balance; - if ($deductionAmount > $pay_amount) { - $this->set_message(1089,"fail","平台币足够,请关闭支付页面重新支付"); - } - // 实际支付金额 = 支付总金额 - 折扣抵扣价格 - 绑币和平台币抵扣金额 - $request['actual_amount'] = $request['price'] - $discountAmount - $deductionAmount; - $pay_amount = $request['actual_amount']; - $request['discount_amount'] = $discountAmount; - $request['deduction_amount'] = $deductionAmount; - + $request = $this->other_price($request); +Log::write(serialize($request), Log::DEBUG); + if(get_zfb_type()==0){ $game_set_data = get_game_set_info($request['game_id']); @@ -254,9 +266,10 @@ class WapPayController extends BaseController{ if ($payInfo['status'] == 'payed') { $this->error("订单已支付"); } + // 发起支付 if (IS_POST && $param['smsCode']) { - echo "发起支付==》".time()."
"; + //echo "发起支付==》".time()."
"; $rsp = $sqpay->shortcut_pay(array( 'merNo' => C('sqpay.partner'), 'merOrderNo' => $payInfo['order_id'], @@ -270,7 +283,7 @@ class WapPayController extends BaseController{ 'smsCode' => $param['smsCode'], 'secret' => C('sqpay.key'), )); - echo "发起支付==》".time()."
"; + //echo "发起支付==》".time()."
"; sleep(5); if ($rsp['responseCode'] == '88') { redirect(U('Spend/pay_success',array('orderno' => $payInfo['order_id'], 'user_id'=>$param['user_id'],'game_id'=>$param['game_id'])));exit; @@ -283,7 +296,7 @@ class WapPayController extends BaseController{ // 发送短信 if (IS_POST && !isset($param['smsCode'])) { // 查看是否签约 - echo "查看是否签约==》".time()."
"; + //echo "查看是否签约==》".time()."
"; $rcs = $sqpay->contract_status(array( 'merNo' => C('sqpay.partner'), 'custName' => $param['custName'], @@ -293,7 +306,7 @@ class WapPayController extends BaseController{ 'payAmount' => $payInfo['price'], 'secret' => C('sqpay.key'), )); - echo "查看是否签约==》".time()."
"; + //echo "查看是否签约==》".time()."
"; if ($rcs['respCode'] == 4) { $this->error($rcs['respMessage'], '', true); pp($rcs); @@ -301,7 +314,7 @@ class WapPayController extends BaseController{ } // 调用认证 签约 if ($rcs['respCode'] == 1 || $rcs['respCode'] == 2 || $rcs['respCode'] == 3) { - echo "调用认证 签约==》".time()."
"; + //echo "调用认证 签约==》".time()."
"; $rsign = $sqpay->sign_contract(array( 'merNo' => C('sqpay.partner'), 'custName' => $param['custName'], @@ -313,7 +326,7 @@ class WapPayController extends BaseController{ 'custType' => '01', 'secret' => C('sqpay.key'), )); - echo "调用认证 签约==》".time()."
"; + //echo "调用认证 签约==》".time()."
"; if ($rsign['respCode'] == 'success') { // 认证成功 接着签约 $rauth = $sqpay->sign_contract(array( 'merNo' => C('sqpay.partner'), @@ -337,7 +350,7 @@ class WapPayController extends BaseController{ } // 无需签约 发送短信 if ($rcs['respCode'] == 0 || $rcs['respCode'] == 10) { - echo "发送短信==》".time()."
"; + //echo "发送短信==》".time()."
"; $ret = $sqpay->protocol_pay_send_sms(array( 'merNo' => C('sqpay.partner'), 'custName' => $param['custName'], @@ -350,7 +363,7 @@ class WapPayController extends BaseController{ 'NotifyURL' => "http://api.wmtxkj.com"."/callback.php?Notify/sq_callback", 'purpose' => 'aaaa' )); - echo "发送短信==》".time()."
"; + //echo "发送短信==》".time()."
"; if ($ret['resFlag'] == 'success') { M('pay_info', 'tab_')->where(array( 'id' => $payInfo['id'], @@ -470,12 +483,12 @@ class WapPayController extends BaseController{ $file=file_get_contents("./Application/Sdk/OrderNo/".$user_id."-".$game_id.".txt"); $request = json_decode(think_decrypt($file),true); Log::write(serialize($request), Log::DEBUG); - /* $request['user_id'] = 232; + $request['user_id'] = 232; $request['game_id'] = 78; $request['price'] = 0.02; $request['code'] = 1; - $request['extend'] = "SP_52299233958"; - $request['pay_order_number'] = "SP_2452299233958"; */ + $request['extend'] = "SP_522992339581"; + $request['pay_order_number'] = "SP_24522992339581"; if (empty($request)) { redirect(U('Spend/notice',array('user_id'=>$user_id,'game_id'=>$game_id,'msg'=>'登录数据不能为空')));exit; @@ -511,6 +524,8 @@ class WapPayController extends BaseController{ redirect(U('Spend/notice',array('user_id'=>$user_id,'game_id'=>$game_id,'msg'=>'充值金额有误.'.$pay_amount)));exit; } + $this->other_price($request, $request['price']-$pay_amount); + //0 官方 1双乾 if (get_shortcut_pay_type() == 0) { // 暂时只有双乾 @@ -520,23 +535,23 @@ class WapPayController extends BaseController{ 'user_id' => $request['user_id'], 'game_id' => $request['game_id'], 'order_id' => $request['pay_order_number'], - 'price' => $request['price'], + 'price' => $request['actual_amount'], 'type' => 'sq_shortcut', 'info' => json_encode($request), 'status' => 'normal', 'create_time' => time(), )); - if($request['code']==1){ + /* if($request['code']==1){ $this->add_spend($request,1); }else{ $this->add_deposit($request); - } + } */ } - $this->assign("pay_amount", $pay_amount); + $this->assign("pay_amount", $request['actual_amount']); $this->assign("user_id", $request['user_id']); $this->assign("game_id", $request['game_id']); - $this->display(); + $this->display("index"); } /** @@ -583,26 +598,8 @@ class WapPayController extends BaseController{ if(!empty($request['scheme'])) { file_put_contents("./Application/Sdk/Scheme/".$request['game_id'].".txt",$request['scheme']); } - $deductionAmount = 0; - $user_id = $request['user_id']; - $game_id = $request['game_id']; - $balance = M ('user', 'tab_')->where (array( - 'id' => $user_id - ))->getField('balance'); - $bind_balance = M('user_play', 'tab_')->where(array( - 'user_id' => $user_id, - 'game_id' => $game_id - ))->getField('bind_balance'); - // 够抵扣的情况 不走这个接口 - $deductionAmount = $bind_balance + $balance; - if ($deductionAmount > $pay_amount) { - $this->set_message(1089,"fail","平台币足够,请关闭支付页面重新支付"); - } - // 实际支付金额 = 支付总金额 - 折扣抵扣价格 - 绑币和平台币抵扣金额 - $request['actual_amount'] = $request['price'] - $discountAmount - $deductionAmount; - $pay_amount = $request['actual_amount']; - $request['discount_amount'] = $discountAmount; - $request['deduction_amount'] = $deductionAmount; + // 绑币平台币优先处理 + $this->other_price($request, $discountAmount); $game_set_data = get_game_set_info($request['game_id']); //$request['game_name'] @@ -815,8 +812,8 @@ class WapPayController extends BaseController{ * @return [type] [description] */ public function jft_wap(){ - #获取SDK上POST方式传过来的数据 然后base64解密 然后将json字符串转化成数组 - $request = json_decode(base64_decode(file_get_contents("php://input")), true); + #获取SDK上POST方式传过来的数据 然后base64解密 然后将json字符串转化成数组 + $request = json_decode(base64_decode(file_get_contents("php://input")), true); if (empty($request)) { $this->set_message(1001, "fail", "登录数据不能为空"); } @@ -824,27 +821,29 @@ class WapPayController extends BaseController{ if($request['price']<0){ $this->set_message(1011,"fail","充值金额有误"); } - $table = $request['code'] == 1 ? "spend" : "deposit"; - $prefix = $request['code'] == 1 ? "SP_" : "PF_"; - $request['pay_order_number'] = $prefix . date('Ymd') . date('His') . sp_random_string(4); - $request['pay_way'] = 3; - $request['pay_status'] = 0; - $request['spend_ip'] = get_client_ip(); - //折扣 - $user = get_user_entity($request['user_id']); - $discount = $this->get_discount($request['game_id'],$user['promote_id'],$request['user_id']); - $discount = $discount['discount']; - $pay_amount = $discount * $request['price'] / 10; + $table = $request['code'] == 1 ? "spend" : "deposit"; + $prefix = $request['code'] == 1 ? "SP_" : "PF_"; + $request['pay_order_number'] = $prefix . date('Ymd') . date('His') . sp_random_string(4); + $request['pay_way'] = 3; + $request['pay_status'] = 0; + $request['spend_ip'] = get_client_ip(); + //折扣 + $user = get_user_entity($request['user_id']); + $discount = $this->get_discount($request['game_id'],$user['promote_id'],$request['user_id']); + $discount = $discount['discount']; + $pay_amount = $discount * $request['price'] / 10; + // 绑币平台币处理 + $this->other_price($request, $request['price']-$pay_amount); - if($request['code']==1){ - $this->add_spend($request); - }else{ - $this->add_deposit($request); - } - file_put_contents("./Application/Sdk/OrderNo/".$request['user_id']."-".$request['game_id'].".txt",think_encrypt(json_encode($request))); + if($request['code']==1){ + $this->add_spend($request); + }else{ + $this->add_deposit($request); + } + file_put_contents("./Application/Sdk/OrderNo/".$request['user_id']."-".$request['game_id'].".txt",think_encrypt(json_encode($request))); - $sss="http://".$_SERVER['HTTP_HOST'].'/sdk.php/Spend/pay_way/user_id/'.$request['user_id'].'/game_id/'.$request['game_id'].'/type/3'; - redirect($sss); + $sss="http://".$_SERVER['HTTP_HOST'].'/sdk.php/Spend/pay_way/user_id/'.$request['user_id'].'/game_id/'.$request['game_id'].'/type/3'; + redirect($sss); } /** @@ -897,6 +896,7 @@ class WapPayController extends BaseController{ if ($pay_amount < 0.01) { redirect(U('Spend/notice',array('user_id'=>$user_id,'game_id'=>$game_id,'msg'=>'充值金额有误.'.$pay_amount)));exit; } + $this->other_price($request, $request['price']-$pay_amount); //0 官方 1双乾 if (get_union_pay_type() == 0) { diff --git a/Application/Sdk/View/default/WapPay/index.html b/Application/Sdk/View/default/WapPay/index.html new file mode 100644 index 000000000..63d13a9fa --- /dev/null +++ b/Application/Sdk/View/default/WapPay/index.html @@ -0,0 +1,207 @@ + + + + + +在线订单 + + + + + + +
+
+
+ + + +
+ + +
+


+ 待支付...... +
+
+
+订单超过30分钟自动取消,请在30分钟内完成支付 +
+
+
+
+
+
+
+ + + +
+ + + +
+ +
+ * +
+
+
+ +
+ * +
+
+
+ +
+ * +
+
+
+ +
+ * +
+
+
+ + + + + + +
+
+ +
+ {$pay_amount}元 +
+
+ + +
+ +
+
+ +
+ + +
+
+ +
+
+ + + diff --git a/Public/Sdk/images/anniu.png b/Public/Sdk/images/anniu.png new file mode 100644 index 000000000..31bfec4b0 Binary files /dev/null and b/Public/Sdk/images/anniu.png differ diff --git a/Public/Sdk/images/bag_yellow.png b/Public/Sdk/images/bag_yellow.png new file mode 100644 index 000000000..1b307621a Binary files /dev/null and b/Public/Sdk/images/bag_yellow.png differ diff --git a/Public/Sdk/images/form_bag.png b/Public/Sdk/images/form_bag.png new file mode 100644 index 000000000..40c7441b1 Binary files /dev/null and b/Public/Sdk/images/form_bag.png differ diff --git a/Public/Sdk/images/form_bag1.png b/Public/Sdk/images/form_bag1.png new file mode 100644 index 000000000..5f98b07bc Binary files /dev/null and b/Public/Sdk/images/form_bag1.png differ diff --git a/Public/Sdk/images/input.png b/Public/Sdk/images/input.png new file mode 100644 index 000000000..8c1e6648b Binary files /dev/null and b/Public/Sdk/images/input.png differ diff --git a/Public/Sdk/images/input2.png b/Public/Sdk/images/input2.png new file mode 100644 index 000000000..480d58ff0 Binary files /dev/null and b/Public/Sdk/images/input2.png differ diff --git a/Public/Sdk/images/submit.png b/Public/Sdk/images/submit.png new file mode 100644 index 000000000..f94ef28eb Binary files /dev/null and b/Public/Sdk/images/submit.png differ