MediaPayonesevenController.class.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833
  1. <?php
  2. namespace bibidd\Controller;
  3. use Bibidd\Controller\CommonBaseController;
  4. class MediaPayonesevenController extends CommonBaseController
  5. {
  6. /**
  7. * 测试功能
  8. * @param $templateid []
  9. * @return $type 消息类型
  10. */
  11. public function testone()
  12. {
  13. echo PHP_EOL . '123';
  14. }
  15. //封装返回的数据
  16. protected function returnData()
  17. {
  18. $data['status'] = '0';
  19. $data['code'] = '202';//未携带参数,请求失败
  20. $data['message'] = 'error';
  21. return $data;
  22. }
  23. /**
  24. *获取用户IP地址
  25. * @param int $type
  26. * @return mixed
  27. */
  28. private function get_bb_ip($type = 0)
  29. {
  30. $type = $type ? 1 : 0;
  31. static $ip = NULL;
  32. if ($ip !== NULL) return $ip[$type];
  33. if ($_SERVER['HTTP_X_REAL_IP']) {//nginx 代理模式下,获取客户端真实IP
  34. $ip = $_SERVER['HTTP_X_REAL_IP'];
  35. } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {//客户端的ip
  36. $ip = $_SERVER['HTTP_CLIENT_IP'];
  37. } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {//浏览当前页面的用户计算机的网关
  38. $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
  39. $pos = array_search('unknown', $arr);
  40. if (false !== $pos) unset($arr[$pos]);
  41. $ip = trim($arr[0]);
  42. } elseif (isset($_SERVER['REMOTE_ADDR'])) {
  43. $ip = $_SERVER['REMOTE_ADDR'];//浏览当前页面的用户计算机的ip地址
  44. } else {
  45. $ip = $_SERVER['REMOTE_ADDR'];
  46. }
  47. // IP地址合法验证
  48. $long = sprintf("%u", ip2long($ip));
  49. $ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
  50. return $ip[$type];
  51. }
  52. function send_post($url, $post_data) {
  53. $postdata = http_build_query($post_data);
  54. $options = array(
  55. 'http' => array(
  56. 'method' => 'POST',
  57. 'header' => 'Content-type:application/x-www-form-urlencoded',
  58. 'content' => $postdata,
  59. 'timeout' => 15 * 60 // 超时时间(单位:s)
  60. )
  61. );
  62. $context = stream_context_create($options);
  63. $result = file_get_contents($url, false, $context);
  64. return $result;
  65. }
  66. /**
  67. * 模拟post进行url请求
  68. * @param string $url
  69. * @param string $param
  70. */
  71. function request_post($url = '', $param = '') {
  72. if (empty($url) || empty($param)) {
  73. return false;
  74. }
  75. $postUrl = $url;
  76. $curlPost = $param;
  77. $ch = curl_init();//初始化curl
  78. curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
  79. curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
  80. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
  81. curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
  82. curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
  83. $data = curl_exec($ch);//运行curl
  84. curl_close($ch);
  85. return $data;
  86. }
  87. function testAction(){
  88. header('Content-Type:text/json;charset=utf-8');
  89. header('Access-Control-Allow-Origin:*');
  90. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  91. header('Access-Control-Allow-Methods:POST');
  92. header('Access-Control-Expose-Headers:*');
  93. $url = 'http://mobile.jschina.com.cn/jschina/register.php';
  94. $post_data['appid'] = '10';
  95. $post_data['appkey'] = 'cmbohpffXVR03nIpkkQXaAA1Vf5nO4nQ';
  96. $post_data['member_name'] = 'zsjs123';
  97. $post_data['password'] = '123456';
  98. $post_data['email'] = 'zsjs123@126.com';
  99. $o = "";
  100. foreach ( $post_data as $k => $v )
  101. {
  102. $o.= "$k=" . urlencode( $v ). "&" ;
  103. }
  104. $post_data = substr($o,0,-1);
  105. $res = $this->request_post($url, $post_data);
  106. print_r($res);
  107. }
  108. /**
  109. * 测试功能
  110. * @param $templateid []
  111. * @return $type 消息类型
  112. */
  113. public function strtest(){
  114. header('Content-Type:text/json;charset=utf-8');
  115. header('Access-Control-Allow-Origin:*');
  116. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  117. header('Access-Control-Allow-Methods:POST');
  118. header('Access-Control-Expose-Headers:*');
  119. //用户id
  120. $uid = $_POST['uid'];
  121. //选择支付类型
  122. $type = $_POST['type'];
  123. $mo = $_POST['mo'];
  124. switch ($mo) {
  125. case '1':
  126. $pay_amount = 60;
  127. //永久会员
  128. $vip_type = 1;
  129. break;
  130. case '2':
  131. $pay_amount = 50;
  132. //3月会员
  133. $vip_type = 2;
  134. break;
  135. case '3':
  136. $pay_amount = 40;
  137. //1月会员
  138. $vip_type = 3;
  139. break;
  140. default:
  141. echo "type error";
  142. die();
  143. }
  144. switch ($type) {
  145. case '1':
  146. // $pay_bankcode = 8088;
  147. // $beizhu = '支付宝原生';
  148. $pay_bankcode = M("td_save")->where("id=1")->getField("td_id");
  149. $beizhu =M("td_save")->where("id=1")->getField("td_str"); //ok
  150. break;
  151. case '2':
  152. $pay_bankcode = M("td_save")->where("id=2")->getField("td_id");
  153. $beizhu =M("td_save")->where("id=2")->getField("td_str"); //ok
  154. break;
  155. #微信支付需要判断
  156. case '3':
  157. $pay_bankcode = M("td_save")->where("id=3")->getField("td_id");
  158. $beizhu =M("td_save")->where("id=3")->getField("td_str"); //ok
  159. break;
  160. case '4':
  161. $pay_bankcode = 8016;
  162. $beizhu = '微信抖音';
  163. break;
  164. case '5':
  165. $pay_bankcode = 8009;
  166. $beizhu = '支付宝YY';
  167. break;
  168. default:
  169. echo "type error";
  170. }
  171. $max=M("pay_test")->order("id desc")->limit(1)->find()['order_id'];
  172. if($max)
  173. {
  174. $number=$this->plus("$max","1");
  175. }else{
  176. $number='10000000000000000001';
  177. }
  178. //提交时间
  179. $ttime = time();
  180. $pay_applydate = date("Y-m-d H:i:s",$ttime);;
  181. //服务端通知
  182. $pay_notifyurl = 'https://www.aa9169.com/bibidd/MediaPayonesix/huidiao_test';
  183. //页面跳转通知
  184. $pay_callbackurl = 'https://www.aa9169.com/bibidd/MediaPayonesix/huidiao_test';
  185. //付款人 IP
  186. $pay_ip = $this->get_bb_ip();
  187. //商户号
  188. $pay_memberid = 230508633;
  189. //订单号
  190. $pay_orderid = "$number" ;
  191. //商品名称
  192. $pay_productname = $uid.$beizhu.$pay_bankcode;
  193. $dingdan['order_id'] = $number;
  194. $dingdan['uid'] = $uid;
  195. $dingdan['order_str'] = $pay_productname;
  196. $dingdan['order_ip'] = $pay_ip;
  197. $dingdan['apply_date'] = $pay_applydate;
  198. $dingdan['apply_time'] = $ttime;
  199. $dingdan['order_type'] = '待支付';
  200. $dingdan['amount'] = $pay_amount;
  201. $stringSignTemp="pay_amount=$pay_amount&pay_applydate=$pay_applydate&pay_bankcode=$pay_bankcode&pay_callbackurl=$pay_callbackurl&pay_memberid=$pay_memberid&pay_notifyurl=$pay_notifyurl&pay_orderid=$pay_orderid&key=0jp1j02wzsllk7ljk2m200dgwe4wsd0x" ;
  202. $sign1 = md5($stringSignTemp);
  203. $sign= strtoupper($sign1);
  204. M("pay_test")->add($dingdan);
  205. $post_data = array(
  206. 'pay_memberid' => $pay_memberid,
  207. 'pay_orderid' =>$pay_orderid,
  208. 'pay_applydate' => $pay_applydate,
  209. 'pay_bankcode' => $pay_bankcode,
  210. 'pay_notifyurl' => $pay_notifyurl,
  211. 'pay_callbackurl' => $pay_callbackurl,
  212. 'pay_amount' => $pay_amount,
  213. 'pay_md5sign' => $sign,
  214. 'pay_productname' => $pay_productname,
  215. 'pay_ip' => $pay_ip,
  216. 'pay_attach' => $vip_type,
  217. );
  218. $rs= $this->send_post('http://apizf.mifeng.xiaomfzf.com/Pay_Index.html', $post_data);
  219. $new_rs = json_decode($rs,true);
  220. $new_rs['uid'] = $uid;
  221. if (empty($rs)) {
  222. $e_data['status'] = '0';
  223. $e_data['code'] = '204';//未携带参数,请求失败
  224. $e_data['pay_url'] = '';//未携带参数,请求失败
  225. $e_data['message'] = '请重试。';
  226. echo json_encode($e_data);
  227. }else{
  228. echo json_encode($new_rs);
  229. }
  230. }
  231. /**
  232. * 测试功能
  233. * @param $templateid []
  234. * @return $type 消息类型
  235. */
  236. public function test(){
  237. header('Content-Type:text/json;charset=utf-8');
  238. header('Access-Control-Allow-Origin:*');
  239. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  240. header('Access-Control-Allow-Methods:POST');
  241. header('Access-Control-Expose-Headers:*');
  242. if (!empty($_POST)){
  243. $uid = $_POST['uid'];
  244. $amount = $_POST['amount'];
  245. //代理回调
  246. //查询当前用户是否是代理用户 是则进行
  247. $yn_agent = M("pop_user")->where("get_uid=$uid")->getField("uid");
  248. if (!empty($yn_agent)) {
  249. //是代理用户
  250. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setInc('pay_money',$amount);
  251. $agent_money = $amount * 0.3;
  252. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setInc('pay_brokerage',$agent_money);
  253. M('user_info')->where("id=$yn_agent")->setInc('agent_money',$agent_money);
  254. $agent_time = time();
  255. $agent_time_date = date("Y-m-d H:i:s",$agent_time);
  256. $data_agent_time_date = array('agent_money_time'=>"$agent_time",'agent_money_date'=>"$agent_time_date");
  257. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setField($data_agent_time_date);
  258. $agent_jilu_add['uid'] = $yn_agent;
  259. $agent_jilu_add['get_uid'] = $uid;
  260. $agent_jilu_add['agent_money'] = $agent_money;
  261. $agent_jilu_add['pay_money'] = $amount;
  262. $agent_jilu_add['time'] = $agent_time;
  263. $agent_jilu_add['time_date'] = $agent_time_date;
  264. M("agent_money")->add($agent_jilu_add);
  265. }else{
  266. //不是 代理用户
  267. }
  268. }else{
  269. echo $this->returnData();
  270. }
  271. }
  272. function plus($a, $b) {
  273. if (!is_string($a) || !is_string($b)) {
  274. echo '参数必须是字符串类型';
  275. return;
  276. }
  277. $len = strlen($a) > strlen($b) ? strlen($a) : strlen($b);
  278. /// 反转字符串
  279. $ar = strrev($a);
  280. $br = strrev($b);
  281. $result = '';
  282. for($i = 0 ;$i < $len; $i++) {
  283. //从个位开始加,缺的补0
  284. $temp = (empty($ar[$i]) ? 0 : $ar[$i]) + (empty($br[$i]) ? 0 : $br[$i]);
  285. if (!empty($apendOne)) {
  286. //当后一位进1时加1
  287. $temp += 1;
  288. }
  289. $apendOne = false;
  290. if ($temp > 9) {
  291. /// 如果结果大于9 向前进1 减10 做标记
  292. $apendOne = true;
  293. $temp -= 10;
  294. }
  295. $result = $temp . $result;
  296. }
  297. return (string)$result;
  298. }
  299. /**
  300. * 将订单改为支付中
  301. * @param $templateid []
  302. * @return $type 消息类型
  303. */
  304. public function dingdan_huidiao_one(){
  305. header('Content-Type:text/json;charset=utf-8');
  306. header('Access-Control-Allow-Origin:*');
  307. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  308. header('Access-Control-Allow-Methods:POST');
  309. header('Access-Control-Expose-Headers:*');
  310. // echo 'OK';
  311. if (!empty($_POST)) {
  312. $ttime = time();
  313. $pay_applydate = date("Y-m-d H:i:s",$ttime);;
  314. $wula['time'] = $pay_applydate;
  315. $wula['name'] = 'dingdan_huidiao_one';
  316. $wula['code'] = '成了';
  317. M("huidiao_test")->add($wula);
  318. }else{
  319. $ttime = time();
  320. $pay_applydate = date("Y-m-d H:i:s",$ttime);;
  321. $wula['time'] = $pay_applydate;
  322. $wula['name'] = 'dingdan_huidiao_one';
  323. $wula['code'] = '失败';
  324. M("huidiao_test")->add($wula);
  325. }
  326. //商户标号
  327. //订单号
  328. //订单金额
  329. //交易流水号
  330. //交易时间
  331. //交易状态
  332. //扩展返回
  333. //签名
  334. }
  335. /**
  336. * 接收支付最终回调
  337. * @param $templateid []
  338. * @return $type 消息类型
  339. */
  340. public function huidiao_two(){
  341. header('Content-Type:text/json;charset=utf-8');
  342. header('Access-Control-Allow-Origin:*');
  343. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  344. header('Access-Control-Allow-Methods:POST');
  345. header('Access-Control-Expose-Headers:*');
  346. if (!empty($_POST)) {
  347. echo "OK";
  348. $ttime = time();
  349. $pay_applydate = date("Y-m-d H:i:s",$ttime);;
  350. $wula['time'] = $pay_applydate;
  351. $wula['name'] = 'huidiao_two';
  352. $wula['code'] = '成了';
  353. M("huidiao_test")->add($wula);
  354. }else{
  355. echo "OK";
  356. $ttime = time();
  357. $pay_applydate = date("Y-m-d H:i:s",$ttime);;
  358. $wula['time'] = $pay_applydate;
  359. $wula['name'] = 'huidiao_two';
  360. $wula['code'] = '失败';
  361. M("huidiao_test")->add($wula);
  362. }
  363. }
  364. /**
  365. * 充值金币请求
  366. * @param $templateid []
  367. * @return $type 消息类型
  368. */
  369. public function new_pay(){
  370. header('Content-Type:text/json;charset=utf-8');
  371. header('Access-Control-Allow-Origin:*');
  372. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  373. header('Access-Control-Allow-Methods:POST');
  374. header('Access-Control-Expose-Headers:*');
  375. //用户id
  376. $uid = $_POST['uid'];
  377. //选择支付类型
  378. $type = $_POST['type'];
  379. $mo = $_POST['mo'];
  380. //1是没首充 有奖励
  381. $yn_first_pay = $_POST['yn_first_pay'];
  382. switch ($mo) {
  383. case '1':
  384. $pay_amount = 30;
  385. break;
  386. case '2':
  387. $pay_amount = 40;
  388. break;
  389. case '3':
  390. $pay_amount = 50;
  391. break;
  392. case '4':
  393. $pay_amount = 60;
  394. break;
  395. case '5':
  396. $pay_amount = 100;
  397. break;
  398. case '6':
  399. $pay_amount = 200;
  400. break;
  401. default:
  402. echo "type error";
  403. die();
  404. }
  405. switch ($type) {
  406. case '1':
  407. $pay_bankcode = M("td_save")->where("id=1")->getField("td_id");
  408. $beizhu =M("td_save")->where("id=1")->getField("td_str"); //ok
  409. break;
  410. case '2':
  411. $pay_bankcode = M("td_save")->where("id=2")->getField("td_id");
  412. $beizhu =M("td_save")->where("id=2")->getField("td_str"); //ok
  413. break;
  414. #微信支付需要判断
  415. case '3':
  416. $pay_bankcode = M("td_save")->where("id=3")->getField("td_id");
  417. $beizhu =M("td_save")->where("id=3")->getField("td_str"); //ok
  418. break;
  419. case '4':
  420. $pay_bankcode = M("td_save")->where("id=4")->getField("td_id");
  421. $beizhu =M("td_save")->where("id=4")->getField("td_str"); //ok
  422. break;
  423. case '5':
  424. $pay_bankcode = M("td_save")->where("id=5")->getField("td_id");
  425. $beizhu =M("td_save")->where("id=5")->getField("td_str"); //ok
  426. break;
  427. default:
  428. echo "type error";
  429. }
  430. $max=M("pay_test")->order("id desc")->limit(1)->find()['order_id'];
  431. if($max)
  432. {
  433. $number=$this->plus("$max","1");
  434. }else{
  435. $number='10000000000000000001';
  436. }
  437. //提交时间
  438. $ttime = time();
  439. $pay_applydate = date("Y-m-d H:i:s",$ttime);;
  440. //服务端通知
  441. $pay_notifyurl = 'https://www.aa9169.com/bibidd/MediaPayoneseven/huidiao_gold_coins';
  442. //页面跳转通知
  443. $pay_callbackurl = 'https://www.aa9169.com/bibidd/MediaPayoneseven/huidiao_gold_coins';
  444. //付款人 IP
  445. $pay_ip = $this->get_bb_ip();
  446. //商户号
  447. $pay_memberid = 230508633;
  448. //订单号
  449. $pay_orderid = "$number" ;
  450. //商品名称
  451. $pay_productname = $uid.$beizhu.$pay_bankcode;
  452. $dingdan['order_id'] = $number;
  453. $dingdan['uid'] = $uid;
  454. $dingdan['order_str'] = $pay_productname;
  455. $dingdan['order_ip'] = $pay_ip;
  456. $dingdan['apply_date'] = $pay_applydate;
  457. $dingdan['apply_time'] = $ttime;
  458. $dingdan['order_type'] = '待支付';
  459. $dingdan['amount'] = $pay_amount;
  460. $stringSignTemp="pay_amount=$pay_amount&pay_applydate=$pay_applydate&pay_bankcode=$pay_bankcode&pay_callbackurl=$pay_callbackurl&pay_memberid=$pay_memberid&pay_notifyurl=$pay_notifyurl&pay_orderid=$pay_orderid&key=0jp1j02wzsllk7ljk2m200dgwe4wsd0x" ;
  461. $sign1 = md5($stringSignTemp);
  462. $sign= strtoupper($sign1);
  463. M("pay_test")->add($dingdan);
  464. $post_data = array(
  465. 'pay_memberid' => $pay_memberid,
  466. 'pay_orderid' =>$pay_orderid,
  467. 'pay_applydate' => $pay_applydate,
  468. 'pay_bankcode' => $pay_bankcode,
  469. 'pay_notifyurl' => $pay_notifyurl,
  470. 'pay_callbackurl' => $pay_callbackurl,
  471. 'pay_amount' => $pay_amount,
  472. 'pay_md5sign' => $sign,
  473. 'pay_productname' => $pay_productname,
  474. 'pay_ip' => $pay_ip,
  475. 'pay_attach' => $yn_first_pay,
  476. );
  477. $rs= $this->send_post('http://apizf.mifeng.xiaomfzf.com/Pay_Index.html', $post_data);
  478. $new_rs = json_decode($rs,true);
  479. $new_rs['uid'] = $uid;
  480. if (empty($rs)) {
  481. $e_data['status'] = '0';
  482. $e_data['code'] = '204';//未携带参数,请求失败
  483. $e_data['pay_url'] = '';//未携带参数,请求失败
  484. $e_data['message'] = '请重试。';
  485. echo json_encode($e_data);
  486. }else{
  487. echo json_encode($new_rs);
  488. }
  489. }
  490. /**
  491. * 金币充值回调
  492. * @param $templateid []
  493. * @return $type 消息类型
  494. */
  495. public function huidiao_gold_coins(){
  496. header('Content-Type:text/json;charset=utf-8');
  497. header('Access-Control-Allow-Origin:*');
  498. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  499. header('Access-Control-Allow-Methods:POST');
  500. header('Access-Control-Expose-Headers:*');
  501. $post = $_POST;
  502. if ($post == null) {
  503. $post = file_get_contents("php://input");
  504. }
  505. $chenggong['name'] = $post['returncode'];
  506. //商户编号
  507. $memberid = $post['memberid'];
  508. //订单号
  509. $orderid = $post['orderid'];
  510. //订单金额
  511. $amount = $post['amount'];
  512. //交易流水号
  513. $transaction_id = $post['transaction_id'];
  514. //交易时间
  515. $datetime = $post['datetime'];
  516. //交易状态
  517. $returncode = $post['returncode'];
  518. //扩展返回
  519. $attach = $post['attach'];
  520. //attach 如果是0
  521. if ($chenggong['name']==00) {
  522. //交易成功 将用户改成会员
  523. $now_time_chuo = time();
  524. $chenggong['order_type'] = '已支付';
  525. $chenggong['pay_time'] = $now_time_chuo;
  526. $chenggong['amount_due'] =$amount;
  527. $chenggong['mifeng_id'] =$transaction_id;
  528. $uid = M("pay_test")->where("order_id='$orderid'")->getField("uid");
  529. //如果返回的值是1 说明是用户两小时内首充
  530. if ($attach==1) {
  531. $amount_gold_coins = $amount + ($amount * 0.2);
  532. M("user_info")->where("id=$uid")->setInc('gold_coins_number',$amount_gold_coins);
  533. }else{
  534. M("user_info")->where("id=$uid")->setInc('gold_coins_number',$amount);
  535. }
  536. M("user_info")->where("id=$uid")->setField('vip_money','1');
  537. M("user_first_pay")->where("uid=$uid")->setField('thirty','0');
  538. // 146784 146784 146784
  539. //修改订单相关 并且添加支付表
  540. M("pay_test")->where("order_id='$orderid'")->save($chenggong);
  541. $post['uid'] = $uid;
  542. $post['time'] = time();
  543. M("huidiao_test")->add($post);
  544. //代理回调
  545. //查询当前用户是否是代理用户 是则进行
  546. $yn_agent = M("pop_user")->where("get_uid=$uid")->getField("uid");
  547. if (!empty($yn_agent)) {
  548. //是代理用户
  549. //更新代理详情列表
  550. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setInc('pay_money',$amount);
  551. $agent_money = $amount * 0.3;
  552. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setInc('pay_brokerage',$agent_money);
  553. //更新到用户表
  554. M('user_info')->where("id=$yn_agent")->setInc('agent_money',$agent_money);
  555. $agent_time = time();
  556. $agent_time_date = date("Y-m-d H:i:s",$agent_time);
  557. //新增 代理记录
  558. $data_agent_time_date = array('agent_money_time'=>"$agent_time",'agent_money_date'=>"$agent_time_date");
  559. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setField($data_agent_time_date);
  560. $agent_jilu_add['uid'] = $yn_agent;
  561. $agent_jilu_add['get_uid'] = $uid;
  562. $agent_jilu_add['agent_money'] = $agent_money;
  563. $agent_jilu_add['pay_money'] = $amount;
  564. $agent_jilu_add['time'] = $agent_time;
  565. $agent_jilu_add['time_date'] = $agent_time_date;
  566. M("agent_money")->add($agent_jilu_add);
  567. }else{
  568. //不是 代理用户
  569. }
  570. exit('OK');
  571. }else{
  572. }
  573. }
  574. /**
  575. * 测试功能
  576. * @param $templateid []
  577. * @return $type 消息类型
  578. */
  579. public function add_coin_test(){
  580. $data = $this->returnData();
  581. if (!empty($_POST)){
  582. $attach = $_POST['attach'];
  583. $amount = $_POST['amount'];
  584. $uid = 1024;
  585. if ($attach==1) {
  586. $amount_gold_coins = $amount + ($amount * 0.2);
  587. M("user_info")->where("id=$uid")->setInc('gold_coins_number',$amount_gold_coins);
  588. }else{
  589. M("user_info")->where("id=$uid")->setInc('gold_coins_number',$amount);
  590. }
  591. }else{
  592. echo $this->returnData();
  593. }
  594. }
  595. /**
  596. * 开通会员
  597. *首先判断 是否是会员
  598. * 在判断 用户是否有足够金币
  599. *
  600. * @param $templateid []
  601. * @return $type 消息类型
  602. */
  603. public function user_vip_open(){
  604. header('Content-Type:text/json;charset=utf-8');
  605. header('Access-Control-Allow-Origin:*');
  606. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  607. header('Access-Control-Allow-Methods:POST');
  608. header('Access-Control-Expose-Headers:*');
  609. if (!empty($_POST)){
  610. $uid = $_POST['uid'];
  611. //1:68
  612. //2:58
  613. //3:48
  614. $mo = $_POST['mo'];
  615. $huiyuan_time_list =M("user_info")->where("id=$uid")->field("vip_over_time,gold_coins_number")->select();
  616. //
  617. $huiyuan_time = $huiyuan_time_list[0]['vip_over_time'];
  618. $user_coins_amount = $huiyuan_time_list[0]['gold_coins_number'];
  619. $now_time = time();
  620. if ($huiyuan_time>$now_time) {
  621. //是vip 输出结束
  622. $data['code'] = '200';
  623. $data['status'] = '1';
  624. $data['message'] = 'is_vip';
  625. echo json_encode($data);
  626. } else {
  627. //不是vip 判断剩余金币数
  628. switch ($mo) {
  629. case '1':
  630. $pay_amount = 58;
  631. //永久会员
  632. $vip_type = 1;
  633. break;
  634. case '2':
  635. $pay_amount = 38;
  636. //1月会员
  637. $vip_type = 2;
  638. break;
  639. case '3':
  640. $pay_amount = 18;
  641. //7天
  642. $vip_type = 3;
  643. break;
  644. default:
  645. echo "type error";
  646. die();
  647. }
  648. if ($user_coins_amount>=$pay_amount) {
  649. //有足够金币
  650. //交易成功 将用户改成会员
  651. $now_time_chuo = time();
  652. switch ($mo) {
  653. case '1':
  654. //永久会员
  655. $over_time_chuo_jj = '9999999999';
  656. $huiyuan['vip_over_time'] =$over_time_chuo_jj;
  657. $huiyuan['vip_yn'] = '1';
  658. $this->xiaofei_detail($uid,"开通会员","永久会员",$pay_amount);
  659. break;
  660. case '2':
  661. //季度会员
  662. $over_time_chuo_jj = $now_time_chuo + (3600*24*30);
  663. $huiyuan['vip_over_time'] =$over_time_chuo_jj;
  664. $huiyuan['vip_yn'] = '2';
  665. $this->xiaofei_detail($uid,"开通会员","月会员",$pay_amount);
  666. break;
  667. case '3':
  668. //7天
  669. $over_time_chuo_yue = $now_time_chuo + (3600*24*7);
  670. $huiyuan['vip_over_time'] = $over_time_chuo_yue;
  671. $huiyuan['vip_yn'] = '3';
  672. $this->xiaofei_detail($uid,"开通会员","7天会员",$pay_amount);
  673. break;
  674. default:
  675. echo "type error";
  676. die();
  677. }
  678. $vip_table_list['code'] = $mo;
  679. $vip_table_list['time'] =$now_time_chuo ;
  680. $vip_table_list['uid'] = $uid;
  681. $vip_table_list['amount'] = $pay_amount;
  682. $user_vip_fufei = M('user_info')->where("id=$uid")->setDec('gold_coins_number', $pay_amount);
  683. if (!$user_vip_fufei) {
  684. echo PHP_EOL.'付费失败结束';
  685. die();
  686. }else{
  687. M("vip_add_list")->add($vip_table_list);
  688. M("user_info")->where("id=$uid")->save($huiyuan);
  689. $data['code'] = '200';
  690. $data['status'] = '2';
  691. $data['message'] = 'ok';
  692. echo json_encode($data);
  693. }
  694. }else{
  695. //金币不足
  696. $data['code'] = '200';
  697. $data['status'] = '3';
  698. $data['message'] = 'not_sufficient_funds';
  699. echo json_encode($data);
  700. }
  701. }
  702. }else{
  703. echo $this->returnData();
  704. }
  705. }
  706. }