MediaPayonesixController.class.php 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948
  1. <?php
  2. namespace bibidd\Controller;
  3. use Think\Controller;
  4. class MediaPayonesixController extends Controller
  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/MediaPayoneseven/huidiao_test';
  183. //页面跳转通知
  184. $pay_callbackurl = 'https://www.aa9169.com/bibidd/MediaPayoneseven/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 huidiao_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. $post = $_POST;
  243. if ($post == null) {
  244. $post = file_get_contents("php://input");
  245. }
  246. $chenggong['name'] = $post['returncode'];
  247. //商户编号
  248. $memberid = $post['memberid'];
  249. //订单号
  250. $orderid = $post['orderid'];
  251. //订单金额
  252. $amount = $post['amount'];
  253. //交易流水号
  254. $transaction_id = $post['transaction_id'];
  255. //交易时间
  256. $datetime = $post['datetime'];
  257. //交易状态
  258. $returncode = $post['returncode'];
  259. //扩展返回
  260. $attach = $post['attach'];
  261. if ($chenggong['name']==00) {
  262. //交易成功 将用户改成会员
  263. $now_time_chuo = time();
  264. $chenggong['order_type'] = '已支付';
  265. $chenggong['pay_time'] = $now_time_chuo;
  266. $chenggong['amount_due'] =$amount;
  267. $chenggong['mifeng_id'] =$transaction_id;
  268. $uid = M("pay_test")->where("order_id='$orderid'")->getField("uid");
  269. $huiyuan['vip_yn'] = '1';
  270. $huiyuan['vip_time'] = '1';
  271. $huiyuan['vip_money'] = $amount;
  272. switch ($attach) {
  273. case '1':
  274. //永久会员
  275. $huiyuan['vip_over_time'] = '9999999999';
  276. $huiyuan['vip_yn'] = '1';
  277. break;
  278. case '2':
  279. //季度会员
  280. $over_time_chuo_jj = $now_time_chuo + (3600*24*90);
  281. $huiyuan['vip_over_time'] =$over_time_chuo_jj;
  282. $huiyuan['vip_yn'] = '2';
  283. break;
  284. case '3':
  285. //月度会员
  286. $over_time_chuo_yue = $now_time_chuo + (3600*24*30);
  287. $huiyuan['vip_over_time'] = $over_time_chuo_yue;
  288. $huiyuan['vip_yn'] = '3';
  289. break;
  290. default:
  291. echo "type error";
  292. die();
  293. }
  294. M("pay_test")->where("order_id='$orderid'")->save($chenggong);
  295. $post['uid'] = $uid;
  296. $post['time'] = time();
  297. M("user_info")->where("id=$uid")->save($huiyuan);
  298. M("huidiao_test")->add($post);
  299. //代理回调
  300. //查询当前用户是否是代理用户 是则进行
  301. $yn_agent = M("pop_user")->where("get_uid=$uid")->getField("uid");
  302. if (!empty($yn_agent)) {
  303. //是代理用户
  304. //更新代理详情列表
  305. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setInc('pay_money',$amount);
  306. $agent_money = $amount * 0.3;
  307. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setInc('pay_brokerage',$agent_money);
  308. //更新到用户表
  309. M('user_info')->where("id=$yn_agent")->setInc('agent_money',$agent_money);
  310. $agent_time = time();
  311. $agent_time_date = date("Y-m-d H:i:s",$agent_time);
  312. //新增 代理记录
  313. $data_agent_time_date = array('agent_money_time'=>"$agent_time",'agent_money_date'=>"$agent_time_date");
  314. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setField($data_agent_time_date);
  315. $agent_jilu_add['uid'] = $yn_agent;
  316. $agent_jilu_add['get_uid'] = $uid;
  317. $agent_jilu_add['agent_money'] = $agent_money;
  318. $agent_jilu_add['pay_money'] = $amount;
  319. $agent_jilu_add['time'] = $agent_time;
  320. $agent_jilu_add['time_date'] = $agent_time_date;
  321. M("agent_money")->add($agent_jilu_add);
  322. }else{
  323. //不是 代理用户
  324. }
  325. exit('OK');
  326. }else{
  327. }
  328. }
  329. /**
  330. * 测试功能
  331. * @param $templateid []
  332. * @return $type 消息类型
  333. */
  334. public function test(){
  335. header('Content-Type:text/json;charset=utf-8');
  336. header('Access-Control-Allow-Origin:*');
  337. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  338. header('Access-Control-Allow-Methods:POST');
  339. header('Access-Control-Expose-Headers:*');
  340. if (!empty($_POST)){
  341. $uid = $_POST['uid'];
  342. $amount = $_POST['amount'];
  343. //代理回调
  344. //查询当前用户是否是代理用户 是则进行
  345. $yn_agent = M("pop_user")->where("get_uid=$uid")->getField("uid");
  346. if (!empty($yn_agent)) {
  347. //是代理用户
  348. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setInc('pay_money',$amount);
  349. $agent_money = $amount * 0.3;
  350. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setInc('pay_brokerage',$agent_money);
  351. M('user_info')->where("id=$yn_agent")->setInc('agent_money',$agent_money);
  352. $agent_time = time();
  353. $agent_time_date = date("Y-m-d H:i:s",$agent_time);
  354. $data_agent_time_date = array('agent_money_time'=>"$agent_time",'agent_money_date'=>"$agent_time_date");
  355. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setField($data_agent_time_date);
  356. $agent_jilu_add['uid'] = $yn_agent;
  357. $agent_jilu_add['get_uid'] = $uid;
  358. $agent_jilu_add['agent_money'] = $agent_money;
  359. $agent_jilu_add['pay_money'] = $amount;
  360. $agent_jilu_add['time'] = $agent_time;
  361. $agent_jilu_add['time_date'] = $agent_time_date;
  362. M("agent_money")->add($agent_jilu_add);
  363. }else{
  364. //不是 代理用户
  365. }
  366. }else{
  367. echo $this->returnData();
  368. }
  369. }
  370. function plus($a, $b) {
  371. if (!is_string($a) || !is_string($b)) {
  372. echo '参数必须是字符串类型';
  373. return;
  374. }
  375. $len = strlen($a) > strlen($b) ? strlen($a) : strlen($b);
  376. /// 反转字符串
  377. $ar = strrev($a);
  378. $br = strrev($b);
  379. $result = '';
  380. for($i = 0 ;$i < $len; $i++) {
  381. //从个位开始加,缺的补0
  382. $temp = (empty($ar[$i]) ? 0 : $ar[$i]) + (empty($br[$i]) ? 0 : $br[$i]);
  383. if (!empty($apendOne)) {
  384. //当后一位进1时加1
  385. $temp += 1;
  386. }
  387. $apendOne = false;
  388. if ($temp > 9) {
  389. /// 如果结果大于9 向前进1 减10 做标记
  390. $apendOne = true;
  391. $temp -= 10;
  392. }
  393. $result = $temp . $result;
  394. }
  395. return (string)$result;
  396. }
  397. /**
  398. * 将订单改为支付中
  399. * @param $templateid []
  400. * @return $type 消息类型
  401. */
  402. public function dingdan_huidiao_one(){
  403. header('Content-Type:text/json;charset=utf-8');
  404. header('Access-Control-Allow-Origin:*');
  405. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  406. header('Access-Control-Allow-Methods:POST');
  407. header('Access-Control-Expose-Headers:*');
  408. // echo 'OK';
  409. if (!empty($_POST)) {
  410. $ttime = time();
  411. $pay_applydate = date("Y-m-d H:i:s",$ttime);;
  412. $wula['time'] = $pay_applydate;
  413. $wula['name'] = 'dingdan_huidiao_one';
  414. $wula['code'] = '成了';
  415. M("huidiao_test")->add($wula);
  416. }else{
  417. $ttime = time();
  418. $pay_applydate = date("Y-m-d H:i:s",$ttime);;
  419. $wula['time'] = $pay_applydate;
  420. $wula['name'] = 'dingdan_huidiao_one';
  421. $wula['code'] = '失败';
  422. M("huidiao_test")->add($wula);
  423. }
  424. //商户标号
  425. //订单号
  426. //订单金额
  427. //交易流水号
  428. //交易时间
  429. //交易状态
  430. //扩展返回
  431. //签名
  432. }
  433. /**
  434. * 接收支付最终回调
  435. * @param $templateid []
  436. * @return $type 消息类型
  437. */
  438. public function huidiao_two(){
  439. header('Content-Type:text/json;charset=utf-8');
  440. header('Access-Control-Allow-Origin:*');
  441. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  442. header('Access-Control-Allow-Methods:POST');
  443. header('Access-Control-Expose-Headers:*');
  444. if (!empty($_POST)) {
  445. echo "OK";
  446. $ttime = time();
  447. $pay_applydate = date("Y-m-d H:i:s",$ttime);;
  448. $wula['time'] = $pay_applydate;
  449. $wula['name'] = 'huidiao_two';
  450. $wula['code'] = '成了';
  451. M("huidiao_test")->add($wula);
  452. }else{
  453. echo "OK";
  454. $ttime = time();
  455. $pay_applydate = date("Y-m-d H:i:s",$ttime);;
  456. $wula['time'] = $pay_applydate;
  457. $wula['name'] = 'huidiao_two';
  458. $wula['code'] = '失败';
  459. M("huidiao_test")->add($wula);
  460. }
  461. }
  462. /**
  463. * 充值金币请求
  464. * @param $templateid []
  465. * @return $type 消息类型
  466. */
  467. public function new_pay(){
  468. header('Content-Type:text/json;charset=utf-8');
  469. header('Access-Control-Allow-Origin:*');
  470. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  471. header('Access-Control-Allow-Methods:POST');
  472. header('Access-Control-Expose-Headers:*');
  473. //用户id
  474. $uid = $_POST['uid'];
  475. //选择支付类型
  476. $type = $_POST['type'];
  477. $mo = $_POST['mo'];
  478. //1是没首充 有奖励
  479. $yn_first_pay = $_POST['yn_first_pay'];
  480. switch ($mo) {
  481. case '1':
  482. $pay_amount = 30;
  483. break;
  484. case '2':
  485. $pay_amount = 50;
  486. break;
  487. case '3':
  488. $pay_amount = 60;
  489. break;
  490. case '4':
  491. $pay_amount = 70;
  492. break;
  493. case '5':
  494. $pay_amount = 100;
  495. break;
  496. case '6':
  497. $pay_amount = 200;
  498. break;
  499. default:
  500. echo "type error";
  501. die();
  502. }
  503. switch ($type) {
  504. case '1':
  505. $pay_bankcode = M("td_save")->where("id=1")->getField("td_id");
  506. $beizhu =M("td_save")->where("id=1")->getField("td_str"); //ok
  507. break;
  508. case '2':
  509. $pay_bankcode = M("td_save")->where("id=2")->getField("td_id");
  510. $beizhu =M("td_save")->where("id=2")->getField("td_str"); //ok
  511. break;
  512. #微信支付需要判断
  513. case '3':
  514. $pay_bankcode = M("td_save")->where("id=3")->getField("td_id");
  515. $beizhu =M("td_save")->where("id=3")->getField("td_str"); //ok
  516. break;
  517. case '4':
  518. $pay_bankcode = M("td_save")->where("id=4")->getField("td_id");
  519. $beizhu =M("td_save")->where("id=4")->getField("td_str"); //ok
  520. break;
  521. case '5':
  522. $pay_bankcode = M("td_save")->where("id=5")->getField("td_id");
  523. $beizhu =M("td_save")->where("id=5")->getField("td_str"); //ok
  524. break;
  525. default:
  526. echo "type error";
  527. }
  528. $max=M("pay_test")->order("id desc")->limit(1)->find()['order_id'];
  529. if($max)
  530. {
  531. $number=$this->plus("$max","1");
  532. }else{
  533. $number='10000000000000000001';
  534. }
  535. //提交时间
  536. $ttime = time();
  537. $pay_applydate = date("Y-m-d H:i:s",$ttime);;
  538. //服务端通知
  539. $pay_notifyurl = 'https://www.aa9169.com/bibidd/MediaPayonesix/huidiao_gold_coins';
  540. //页面跳转通知
  541. $pay_callbackurl = 'https://www.aa9169.com/bibidd/MediaPayonesix/huidiao_gold_coins';
  542. //付款人 IP
  543. $pay_ip = $this->get_bb_ip();
  544. //商户号
  545. $pay_memberid = 230508633;
  546. //订单号
  547. $pay_orderid = "$number" ;
  548. //商品名称
  549. $pay_productname = $uid.$beizhu.$pay_bankcode;
  550. $dingdan['order_id'] = $number;
  551. $dingdan['uid'] = $uid;
  552. $dingdan['order_str'] = $pay_productname;
  553. $dingdan['order_ip'] = $pay_ip;
  554. $dingdan['apply_date'] = $pay_applydate;
  555. $dingdan['apply_time'] = $ttime;
  556. $dingdan['order_type'] = '待支付';
  557. $dingdan['amount'] = $pay_amount;
  558. $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" ;
  559. $sign1 = md5($stringSignTemp);
  560. $sign= strtoupper($sign1);
  561. M("pay_test")->add($dingdan);
  562. $post_data = array(
  563. 'pay_memberid' => $pay_memberid,
  564. 'pay_orderid' =>$pay_orderid,
  565. 'pay_applydate' => $pay_applydate,
  566. 'pay_bankcode' => $pay_bankcode,
  567. 'pay_notifyurl' => $pay_notifyurl,
  568. 'pay_callbackurl' => $pay_callbackurl,
  569. 'pay_amount' => $pay_amount,
  570. 'pay_md5sign' => $sign,
  571. 'pay_productname' => $pay_productname,
  572. 'pay_ip' => $pay_ip,
  573. 'pay_attach' => $yn_first_pay,
  574. );
  575. $rs= $this->send_post('http://apizf.mifeng.xiaomfzf.com/Pay_Index.html', $post_data);
  576. $new_rs = json_decode($rs,true);
  577. $new_rs['uid'] = $uid;
  578. if (empty($rs)) {
  579. $e_data['status'] = '0';
  580. $e_data['code'] = '204';//未携带参数,请求失败
  581. $e_data['pay_url'] = '';//未携带参数,请求失败
  582. $e_data['message'] = '请重试。';
  583. echo json_encode($e_data);
  584. }else{
  585. echo json_encode($new_rs);
  586. }
  587. }
  588. /**
  589. * 金币充值回调
  590. * @param $templateid []
  591. * @return $type 消息类型
  592. */
  593. public function huidiao_gold_coins(){
  594. header('Content-Type:text/json;charset=utf-8');
  595. header('Access-Control-Allow-Origin:*');
  596. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  597. header('Access-Control-Allow-Methods:POST');
  598. header('Access-Control-Expose-Headers:*');
  599. $post = $_POST;
  600. if ($post == null) {
  601. $post = file_get_contents("php://input");
  602. }
  603. $chenggong['name'] = $post['returncode'];
  604. //商户编号
  605. $memberid = $post['memberid'];
  606. //订单号
  607. $orderid = $post['orderid'];
  608. //订单金额
  609. $amount = $post['amount'];
  610. //交易流水号
  611. $transaction_id = $post['transaction_id'];
  612. //交易时间
  613. $datetime = $post['datetime'];
  614. //交易状态
  615. $returncode = $post['returncode'];
  616. //扩展返回
  617. $attach = $post['attach'];
  618. //attach 如果是0
  619. if ($chenggong['name']==00) {
  620. //交易成功 将用户改成会员
  621. $now_time_chuo = time();
  622. $chenggong['order_type'] = '已支付';
  623. $chenggong['pay_time'] = $now_time_chuo;
  624. $chenggong['amount_due'] =$amount;
  625. $chenggong['mifeng_id'] =$transaction_id;
  626. $uid = M("pay_test")->where("order_id='$orderid'")->getField("uid");
  627. //如果返回的值是1 说明是用户两小时内首充
  628. if ($attach==1) {
  629. $amount_gold_coins = $amount + ($amount * 0.2);
  630. M("user_info")->where("id=$uid")->setInc('gold_coins_number',$amount_gold_coins);
  631. }else{
  632. M("user_info")->where("id=$uid")->setInc('gold_coins_number',$amount);
  633. }
  634. M("user_info")->where("id=$uid")->setField('vip_money','1');
  635. // 146784 146784 146784
  636. //修改订单相关 并且添加支付表
  637. M("pay_test")->where("order_id='$orderid'")->save($chenggong);
  638. $post['uid'] = $uid;
  639. $post['time'] = time();
  640. M("huidiao_test")->add($post);
  641. //代理回调
  642. //查询当前用户是否是代理用户 是则进行
  643. $yn_agent = M("pop_user")->where("get_uid=$uid")->getField("uid");
  644. if (!empty($yn_agent)) {
  645. //是代理用户
  646. //更新代理详情列表
  647. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setInc('pay_money',$amount);
  648. $agent_money = $amount * 0.3;
  649. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setInc('pay_brokerage',$agent_money);
  650. //更新到用户表
  651. M('user_info')->where("id=$yn_agent")->setInc('agent_money',$agent_money);
  652. $agent_time = time();
  653. $agent_time_date = date("Y-m-d H:i:s",$agent_time);
  654. //新增 代理记录
  655. $data_agent_time_date = array('agent_money_time'=>"$agent_time",'agent_money_date'=>"$agent_time_date");
  656. M('pop_user')->where("get_uid=$uid and uid=$yn_agent")->setField($data_agent_time_date);
  657. $agent_jilu_add['uid'] = $yn_agent;
  658. $agent_jilu_add['get_uid'] = $uid;
  659. $agent_jilu_add['agent_money'] = $agent_money;
  660. $agent_jilu_add['pay_money'] = $amount;
  661. $agent_jilu_add['time'] = $agent_time;
  662. $agent_jilu_add['time_date'] = $agent_time_date;
  663. M("agent_money")->add($agent_jilu_add);
  664. }else{
  665. //不是 代理用户
  666. }
  667. exit('OK');
  668. }else{
  669. }
  670. }
  671. /**
  672. * 测试功能
  673. * @param $templateid []
  674. * @return $type 消息类型
  675. */
  676. public function add_coin_test(){
  677. $data = $this->returnData();
  678. if (!empty($_POST)){
  679. $attach = $_POST['attach'];
  680. $amount = $_POST['amount'];
  681. $uid = 1024;
  682. if ($attach==1) {
  683. $amount_gold_coins = $amount + ($amount * 0.2);
  684. M("user_info")->where("id=$uid")->setInc('gold_coins_number',$amount_gold_coins);
  685. }else{
  686. M("user_info")->where("id=$uid")->setInc('gold_coins_number',$amount);
  687. }
  688. }else{
  689. echo $this->returnData();
  690. }
  691. }
  692. /**
  693. * 开通会员
  694. *首先判断 是否是会员
  695. * 在判断 用户是否有足够金币
  696. *
  697. * @param $templateid []
  698. * @return $type 消息类型
  699. */
  700. public function user_vip_open(){
  701. header('Content-Type:text/json;charset=utf-8');
  702. header('Access-Control-Allow-Origin:*');
  703. header("Access-Control-Allow-Headers:token,Origin, X-Requested-With, Content-Type, Accept");
  704. header('Access-Control-Allow-Methods:POST');
  705. header('Access-Control-Expose-Headers:*');
  706. if (!empty($_POST)){
  707. $uid = $_POST['uid'];
  708. //1:68
  709. //2:58
  710. //3:48
  711. $mo = $_POST['mo'];
  712. $huiyuan_time_list =M("user_info")->where("id=$uid")->field("vip_over_time,gold_coins_number")->select();
  713. //
  714. $huiyuan_time = $huiyuan_time_list[0]['vip_over_time'];
  715. $user_coins_amount = $huiyuan_time_list[0]['gold_coins_number'];
  716. $now_time = time();
  717. if ($huiyuan_time>$now_time) {
  718. //是vip 输出结束
  719. $data['code'] = '200';
  720. $data['status'] = '1';
  721. $data['message'] = 'is_vip';
  722. echo json_encode($data);
  723. } else {
  724. //不是vip 判断剩余金币数
  725. switch ($mo) {
  726. case '1':
  727. $pay_amount = 68;
  728. //永久会员
  729. $vip_type = 1;
  730. break;
  731. case '2':
  732. $pay_amount = 58;
  733. //3月会员
  734. $vip_type = 2;
  735. break;
  736. case '3':
  737. $pay_amount = 48;
  738. //1月会员
  739. $vip_type = 3;
  740. break;
  741. default:
  742. echo "type error";
  743. die();
  744. }
  745. if ($user_coins_amount>=$pay_amount) {
  746. //有足够金币
  747. //交易成功 将用户改成会员
  748. $now_time_chuo = time();
  749. switch ($mo) {
  750. case '1':
  751. //永久会员
  752. $huiyuan['vip_over_time'] = '9999999999';
  753. $huiyuan['vip_yn'] = '1';
  754. break;
  755. case '2':
  756. //季度会员
  757. $over_time_chuo_jj = $now_time_chuo + (3600*24*90);
  758. $huiyuan['vip_over_time'] =$over_time_chuo_jj;
  759. $huiyuan['vip_yn'] = '2';
  760. break;
  761. case '3':
  762. //月度会员
  763. $over_time_chuo_yue = $now_time_chuo + (3600*24*30);
  764. $huiyuan['vip_over_time'] = $over_time_chuo_yue;
  765. $huiyuan['vip_yn'] = '3';
  766. break;
  767. default:
  768. echo "type error";
  769. die();
  770. }
  771. $vip_table_list['code'] = $mo;
  772. $vip_table_list['time'] =$now_time_chuo ;
  773. $vip_table_list['uid'] = $uid;
  774. $vip_table_list['amount'] = $pay_amount;
  775. $user_vip_fufei = M('user_info')->where("id=$uid")->setDec('gold_coins_number', $pay_amount);
  776. if (!$user_vip_fufei) {
  777. echo PHP_EOL.'付费失败结束';
  778. die();
  779. }else{
  780. M("vip_add_list")->add($vip_table_list);
  781. M("user_info")->where("id=$uid")->save($huiyuan);
  782. $data['code'] = '200';
  783. $data['status'] = '2';
  784. $data['message'] = 'ok';
  785. echo json_encode($data);
  786. }
  787. }else{
  788. //金币不足
  789. $data['code'] = '200';
  790. $data['status'] = '3';
  791. $data['message'] = 'not_sufficient_funds';
  792. echo json_encode($data);
  793. }
  794. }
  795. }else{
  796. echo $this->returnData();
  797. }
  798. }
  799. }