From 3283f5e3bdb701532696a08a50d7b274984eb278 Mon Sep 17 00:00:00 2001 From: tpingzhang <635929049@qq.com> Date: Thu, 26 Sep 2019 17:24:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sdk/Controller/WapPayController.class.php | 160 +++++++------- .../Sdk/View/default/WapPay/index.html | 207 ++++++++++++++++++ Public/Sdk/images/anniu.png | Bin 0 -> 1023 bytes Public/Sdk/images/bag_yellow.png | Bin 0 -> 1949 bytes Public/Sdk/images/form_bag.png | Bin 0 -> 3315 bytes Public/Sdk/images/form_bag1.png | Bin 0 -> 6990 bytes Public/Sdk/images/input.png | Bin 0 -> 1047 bytes Public/Sdk/images/input2.png | Bin 0 -> 1021 bytes Public/Sdk/images/submit.png | Bin 0 -> 1028 bytes 9 files changed, 287 insertions(+), 80 deletions(-) create mode 100644 Application/Sdk/View/default/WapPay/index.html create mode 100644 Public/Sdk/images/anniu.png create mode 100644 Public/Sdk/images/bag_yellow.png create mode 100644 Public/Sdk/images/form_bag.png create mode 100644 Public/Sdk/images/form_bag1.png create mode 100644 Public/Sdk/images/input.png create mode 100644 Public/Sdk/images/input2.png create mode 100644 Public/Sdk/images/submit.png 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 0000000000000000000000000000000000000000..31bfec4b046c3d409178114c92c28bd1cb77a2a8 GIT binary patch literal 1023 zcmaJ=O=#3W6ppQmEiDL≺{)qTnWzwB2lCW8H4HHqxxicBOl(*<{)cZ8B*xb-@%JVQB2p;52nF#{kRCi#YU^aXyY=82n7lW`_kHhY-rUdUE_ZjH z>0}tDTOZX5)V`uiJl0PCt7{Lss5wotB{GhuNYxAwleTdg0o^sHQ309u!rXf_$T01_ zPO(Hv#+YJZmosAw7r8!VGtA&n9ZzL{ym-w5$5z>i0RtL-234HV#Q=>j z=8D$hj3wLb&_ys9DOA8k!~~H$>xD|BvNc_W`tdQ(f*OR(sO)}HB_j_qI6z>4OC~I# zF9jr-69(jz*nb{~P)PDn=7s(Q6ci{cPyqFhrO^U=N-1a~^;mSLvK2ynh3Bi)Dp&2} za4^javMlpZL{ zX$Uh}DV>D!a55>04X%c*c^7%4!L<*#>6YAh99*A9)==QwK=w$0T~I4qaa!jhwbZL~ z?bf-ZT5@@s3?EnTLDSeM){! zQqx8Xx$!;b+X}owcUN^SU5wT@*WY%$fnA5wkN2M3ncFz^@!i;wZI_J^dN!v$ IAHIJ34}y_Jq5uE@ literal 0 HcmV?d00001 diff --git a/Public/Sdk/images/bag_yellow.png b/Public/Sdk/images/bag_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..1b307621a2beffde2504a7a1d795700a99ba01f5 GIT binary patch literal 1949 zcmeHGZ%i9y7(a&-S;U#JWRYlcI}&hX^zK>;+^vO_wy@3>NT~tAI*;p1dnxzFyTdym zE0M+Mrg6g$GfR|3KWI!`jcyYOVMyY14C9P{5GO_w0kaf4r@|C8_+Du{qQflltC!q+ z&+|UN-|u}{u~q33!$yFLwt)~Q z*s-g_qZrBs?O2o5OL!$G2y=V8Wzg7N=V!YkEEUA6Dp8wGLjfMB465@TfD$J$3Q8Pi7;RJ<~r6mMO6BJF5 zXzIaWHaXZ%`&>1tT+p*)VO5oA9M?3>q*+X&9KuP8qHw~Do6RK-~2q&u7qz>H|0G zy{WL`?~(xS1B%!wv+&~D3yf3}?UVtdin3o6JJMZj2#czyghdH;I*qQCqYpH3LQvF{ zok@<@OM3)GWds&@Ty_kqm^dy-SC=}fYb;c`n=n_Cq?@7~W{11XQbW1QDXX)_lIFTZ zwvz{fn&t*?a4Ry%aaNaV=#Va&cG;Zd~rV z%T8~>2{O#g=t3tm{6K&cFT>H!PP`<;-{Ovj{eJf!-xNXf_Ul7!@Uuzv)itgnbA!Y_ z_(%QdaXI|@<%Q34>Nb;ixyDYe9LUef*>U{Iug#w6hib!Bqxm1`Cy=2-(~bnH9ouu^ z{@J_b?4-NS%tUJc4l*Jsd#56`@D-^$VH&Gp|-^^OOw zZQ~C@RHJ$66xgT7sh02hhi7)?tqj0;|J3!ln7-@Gxhie! zbaWvb#-AOG659FGa{MExAOA3lK_?t9f-=SLMk^ug(S_{>>}-^T5nuc(7@0T|eK64% z>Yus_3wZO><%2`T16Nu{t=f5u7T11=>4n0GGjSv|Ik_?$(_iZtX@$do+Q*+QTOf63OYd%N++te{L2b6RmxhjMaR-bzPHnvy`1!euvE1+HTMW~; zb>fznU-s3fz)9<7%dgc(Cj!YO8BJP?^reZw+H&RPqWReJ)F+3O`b(9+&*q+(2>iC| x#o?c>+@Aoa| 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 literal 0 HcmV?d00001 diff --git a/Public/Sdk/images/input2.png b/Public/Sdk/images/input2.png new file mode 100644 index 0000000000000000000000000000000000000000..480d58ff0bef6a8be549dd0e69f809b4628939e5 GIT binary patch literal 1021 zcmaJ=PiWIn7!QugnDjn{!6SpQq0PUpT@xB-m!z(9skN)Du!~vpwuUWvF?lm-MU>rk z^(3A=d6eNr#e>LBdQ|YBm+df6*bwGP9n6=m?L1f?B;WTQzu)is^S-xPE?rFwUKpe( zDp8zKE5!aHpD@rz{?nV8PsE(ZS`E*mWgHqlr1BP8f}rRaE3g6$t8x1s%u!U|s9mk$ znm#9)$YG2a!$gip*c6qUiaf(yg%~Ws72B2R@2}s`z_w(1A+2+|r@*>B)AZqdvs5*k ztEOntQm4y%?+eTrdzra@#ABb1}z9)mFbhDYI+$c$cG@!WRfPI%7RIe z;nQMPn79N4j?b{1$nq0Oj+Z!5;&{+rG>PV0%Th%xv}2K-OxH2?B$f@skO@-^@>f`1 z6h)R3SV2esY2qrY9vhURTx)+HE2YVHu~9|4_&2q61ukr}_RY{k72NTp$Lt~=1h9j-q7Af#EH6KXHh{;d4J92D|r#<$G#+1YM-&M*zE=z z;wP~13)m3@LQG8TAS8YODjNuifpeOq41|dreD8aDpXYtv4?k`0-&%QOoW8r{z mFMhTkd|AG~P&ohNd|0{))<