qfapp_pay.inc.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <?php
  2. /**
  3. * [超级活动(xj_event.{modulename})] (C)2012-2099 Powered by 逍遥工作室.
  4. * Version: 1.0
  5. * Date: 2012-9-15 10:27
  6. */
  7. if(!defined('IN_DISCUZ')) {
  8. exit('Access Denied');
  9. }
  10. //调用核心类
  11. include 'source/plugin/xj_event/include/core.class.php';
  12. $eventcore = new xj_eventcore();
  13. if($_GET['action'] == 'full'){
  14. include 'include/sms_func.php';
  15. $tradeno = $_GET['tradeno'];
  16. $paylog = DB::fetch_first("SELECT * FROM ".DB::table('xj_eventpay_log')." WHERE tradeno='".$tradeno."'");
  17. if($paylog['paystate'] != 3){
  18. $data = array();
  19. $data['paystate'] = 3;
  20. $data['orderid'] = $_GET['orderid'];
  21. $data['pay_time'] = $_G['timestamp'];
  22. $data['notify_time'] = $_G['timestamp'];
  23. DB::update("xj_eventpay_log",$data,"tradeno='".$tradeno."'");
  24. $paylog = DB::fetch_first("SELECT applyid,uid,tid FROM ".DB::table('xj_eventpay_log')." WHERE tradeno='".$tradeno."'");
  25. $tid = $paylog['tid'];
  26. $uid = $paylog['uid'];
  27. $data = array();
  28. $data['pay_state'] = 1;
  29. $data['verify'] = 1;
  30. DB::update("xj_eventapply",$data,"tid=$tid AND uid=$uid");
  31. paysmssend($tid,$uid);
  32. //微信消息
  33. $event_uid = DB::result_first("SELECT authorid FROM ".DB::table('forum_thread')." WHERE tid=$tid");
  34. loadcache('plugin');
  35. if($_G['cache']['plugin']['xj_wxmessage']['wxlogin']){
  36. require_once DISCUZ_ROOT . './source/plugin/xj_wxmessage/class/core.class.php';
  37. $xj_wxmessagecore = new xj_wxmessagecore();
  38. $xj_wxmessagecore->send_eventmessage($uid,$tid,1);
  39. $xj_wxmessagecore->send_eventapplymessage($paylog['applyid'],$event_uid,2);
  40. }
  41. }
  42. $return = array();
  43. $return['return_code'] = 'SUCCESS'; //SUCCESS/FAIL SUCCESS表示商户接收通知成功并校验成功
  44. $return['return_msg'] = 'ok'; //返回信息,如非空,为错误原因
  45. echo json_encode($return);
  46. exit;
  47. }
  48. $applyid = intval($_GET['applyid']);
  49. $apply = DB::fetch_first("SELECT tid,applyid,applynumber FROM ".DB::table('xj_eventapply')." WHERE applyid = $applyid and uid=".$_G['uid']);
  50. $tid = $apply['tid'];
  51. $items = DB::fetch_first("SELECT A.*,B.subject FROM ".DB::table('xj_event')." A,".DB::table('forum_thread')." B WHERE A.tid = $tid and A.tid=B.tid");
  52. $setting = unserialize($items['setting']);
  53. $pay_subject = $items['subject'];
  54. $pay_price = $items['use_cost'];
  55. $pay_number = DB::result_first("SELECT sum(applynumber) FROM ".DB::table('xj_eventapply')." WHERE tid = '$tid' and uid=".$_G['uid']);
  56. //判断报名名额是否够,不够就不让支付
  57. if($items['event_number']>0){
  58. $applycountnumber = DB::result_first("SELECT SUM(applynumber) FROM ".DB::table('xj_eventapply')." WHERE tid='$tid' and verify=1");
  59. if($pay_number > ($items['event_number']-$applycountnumber)){
  60. showmessage(lang('plugin/xj_event','baomrsym'));
  61. exit();
  62. }
  63. }
  64. $pay_totalprice = $pay_price * $pay_number;
  65. if($_G['charset']=='gbk'){
  66. $pay_subject = cutstr($pay_subject,20,'');
  67. $pay_subject = iconv('GBK','UTF-8',$pay_subject);
  68. }
  69. //如果是多种报名
  70. if($setting['cost']){
  71. if($setting['nodaibaoming']){
  72. $capply = DB::fetch_first("SELECT * FROM ".DB::table('xj_eventapply')." WHERE tid = '$tid' and uid=".$_G['uid']);
  73. $capply['ufielddata'] = unserialize($capply['ufielddata']);
  74. $price = 0;
  75. $paytext = '';
  76. foreach($setting['cost'] as $value){
  77. $paytext = $paytext.$value['cost_name'].' '.$capply['ufielddata']['cost'.$value['id']].' x &yen;'.$value['cost_price'].'<br>';
  78. $price = $price+$capply['ufielddata']['cost'.$value['id']]*$value['cost_price'];
  79. }
  80. }else{
  81. $capply = DB::fetch_all("SELECT * FROM ".DB::table('xj_eventapply')." WHERE tid = '$tid' and uid=".$_G['uid']);
  82. $price = 0;
  83. $paytext = '';
  84. foreach($capply as $value){
  85. $value['ufielddata'] = unserialize($value['ufielddata']);
  86. $paytext = $paytext.$setting['cost'][$value['ufielddata']['costclass']]['cost_name'].' 1 x &yen;'.$setting['cost'][$value['ufielddata']['costclass']]['cost_price'].'<br>';
  87. $price = $price + $setting['cost'][$value['ufielddata']['costclass']]['cost_price'];
  88. }
  89. }
  90. $pay_totalprice = $price;
  91. }
  92. //VIP折扣
  93. if(file_exists(DISCUZ_ROOT.'./source/plugin/xj_event/module/vip/wxpay.php')) {
  94. @include 'module/vip/wxpay.php';
  95. }
  96. if($setting['app_benefit']>0){
  97. $pay_totalprice = $pay_totalprice - $setting['app_benefit'];
  98. }
  99. if(file_exists($xj_event_wxset = DISCUZ_ROOT.'./data/sysdata/cache_xj_event_wxset.php')) {
  100. @include $xj_event_wxset;
  101. }
  102. $tradeno = date('Ymd',$_G['timestamp']).getRandChar(12);
  103. //数据库生成支付记录
  104. $paylog = array();
  105. $paylog['applyid'] = $apply['applyid'];
  106. $paylog['uid'] = $_G['uid'];
  107. $paylog['tid'] = $tid;
  108. $paylog['tradeno'] = $tradeno;
  109. $paylog['paytype'] = 'qfapppay';
  110. $paylog['subject'] = $items['subject'];
  111. $paylog['price'] = $pay_price;
  112. $paylog['buyer_email'] = '';
  113. $paylog['total_fee'] = $pay_totalprice;
  114. $paylog['create_time'] = $_G['timestamp'];
  115. $paylog['paystate'] = 1;
  116. DB::insert("xj_eventpay_log",$paylog);
  117. $result['full'] = 1;
  118. $result['price'] = $pay_totalprice;
  119. $result['tradeno'] = $tradeno;
  120. $result['pay_subject'] = $pay_subject;
  121. echo json_encode($result);
  122. exit;
  123. function get($url) {
  124. $ch = curl_init();
  125. curl_setopt($ch, CURLOPT_URL, $url);
  126. # curl_setopt($ch, CURLOPT_HEADER, 1);
  127. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  128. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  129. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  130. if (!curl_exec($ch)) {
  131. error_log(curl_error($ch));
  132. $data = '';
  133. } else {
  134. $data = curl_multi_getcontent($ch);
  135. }
  136. curl_close($ch);
  137. return $data;
  138. }
  139. function getRandChar($length){
  140. $str = null;
  141. $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
  142. $max = strlen($strPol)-1;
  143. for($i=0;$i<$length;$i++){
  144. $str.=$strPol[rand(0,$max)];//rand($min,$max)生成介于min和max两个数之间的一个随机整数
  145. }
  146. return $str;
  147. }
  148. function paysmssend($tid,$uid){
  149. global $_G;
  150. //调试记录开始
  151. //$log_name="./alipay.txt";//log文件路径
  152. //log_result($log_name,"【接收到的notify通知】:\r\n".$xml."\r\n【返回的信息】:\r\n");
  153. //调试记录结束
  154. $apply = DB::fetch_first("SELECT * FROM ".DB::table('xj_eventapply')." WHERE first=1 AND tid=$tid AND uid=$uid");
  155. $thread = DB::fetch_first("SELECT authorid,userfield,setting,subject,starttime,event_address FROM ".DB::table('forum_thread')." A,".DB::table('xj_event')." B WHERE A.tid=$tid and A.tid = B.tid");
  156. $setting = unserialize($thread['setting']);
  157. $event_starttime = dgmdate($thread['starttime'],'dt');
  158. if($setting['seccode'] == 1){
  159. $message = cutstr($thread['subject'],30).'活动报名成功,人数:'.$apply['applynumber'].'人 验证码:'.$apply['seccode'].' 活动时间:'.$event_starttime;
  160. $sendtype = '报名验证码短信';
  161. if($_G[charset]=='gbk'){
  162. $message = diconv($message,'UTF-8','GBK');
  163. $sendtype = diconv($sendtype,'UTF-8','GBK');
  164. }
  165. sendsms_vcode($apply['mobile'],$thread['subject'],$apply['applynumber'],$apply['seccode']);
  166. //xjsendsms(array($apply['mobile']),$message,$sendtype);
  167. sendpm($apply['uid'],'',$message,$thread['authorid']);
  168. }elseif($setting['success_sms'] == 1){
  169. sendsms_success($apply['mobile'],$thread['subject'],$event_starttime);
  170. //易活动短信
  171. //$smsuid = DB::result_first("SELECT uid FROM ".DB::table('common_member')." WHERE username='".$setting['event_admin'][0]."'");
  172. //$smsmobile = DB::result_first("SELECT mobile FROM ".DB::table('common_member_profile')." WHERE uid=$smsuid");
  173. //sendsms_notice_yhd($apply['mobile'],$thread['subject'],$event_starttime,$thread['event_address'],$smsmobile);
  174. }
  175. }
  176. ?>