Index.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace app\index\controller;
  3. use app\common\controller\Frontend;
  4. use think\Db;
  5. class Index extends Frontend
  6. {
  7. protected $noNeedLogin = '*';
  8. protected $noNeedRight = '*';
  9. protected $layout = '';
  10. public function index()
  11. {
  12. return $this->view->fetch();
  13. }
  14. public function login()
  15. {
  16. $id=input('id',1);
  17. if(!$id){
  18. $this->error(__('邀请码不对'));
  19. }
  20. $appid = 'wx2a2d24fbe2383604';
  21. $cmurl = "jy.chengwuwa.cn/index/index/gzhop/id/".$id;//接口地址
  22. #你的公众号appid
  23. $url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=https%3a%2f%2f".$cmurl."&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
  24. //$url='/login.html';
  25. #redirect_uri改为你的网页授权域名和刚刚跳转到的显示页面,比如我的是getinfoDetail.php
  26. header('location:'.$url);
  27. }
  28. public function gzhop()
  29. {
  30. $ids=input('id',1);
  31. if(!$ids){
  32. $this->error(__('邀请码不对'));
  33. }
  34. $appid = "wx2a2d24fbe2383604";
  35. $secret = "07b59b4bac2f17edc9e121e3dba6d0b3";
  36. $cmurl = "https://jy.chengwuwa.cn/d/index.html";//前端地址
  37. $code = $_GET["code"];
  38. $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';
  39. $ch = curl_init();
  40. curl_setopt($ch,CURLOPT_URL,$get_token_url);
  41. curl_setopt($ch,CURLOPT_HEADER,0);
  42. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
  43. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  44. $res = curl_exec($ch);
  45. curl_close($ch);
  46. $json_obj = json_decode($res,true);
  47. //根据openid和access_token查询用户信息
  48. $access_token = $json_obj['access_token'];
  49. $openid = $json_obj['openid'];
  50. $get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';
  51. $ch = curl_init();
  52. curl_setopt($ch,CURLOPT_URL,$get_user_info_url);
  53. curl_setopt($ch,CURLOPT_HEADER,0);
  54. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
  55. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  56. $res = curl_exec($ch);
  57. curl_close($ch);
  58. //解析json
  59. $user_obj = json_decode($res,true);
  60. $openid=isset($user_obj['openid'])?$user_obj['openid']:null;
  61. $unionid=isset($user_obj['unionid'])?$user_obj['unionid']:null;
  62. $nikname=isset($user_obj['nickname'])?$user_obj['nickname']:null;
  63. $headimgurl=isset($user_obj['headimgurl'])?$user_obj['headimgurl']:null;
  64. $userfxid=Db::name('userfxid')->where('unionid',$unionid)->find();
  65. if($userfxid){
  66. Db::name('userfxid')->where('unionid',$unionid)->update(['fid'=>$ids,'openid'=>$openid,'unionid'=>$unionid]);
  67. }else{
  68. Db::name('userfxid')->insertGetId(['fid'=>$ids,'openid'=>$openid,'unionid'=>$unionid]);
  69. }
  70. $urls=$cmurl.'?iswx=1';
  71. header('location:'.$urls);
  72. }
  73. public function pay()
  74. {
  75. $site=config('site');
  76. require_once $_SERVER['DOCUMENT_ROOT']."/wxpay/lib/WxPay.Api.php";
  77. require_once $_SERVER['DOCUMENT_ROOT']."/wxpay/example/WxPay.JsApiPay.php";
  78. require_once $_SERVER['DOCUMENT_ROOT']."/wxpay/example/WxPay.Config.php";
  79. require_once $_SERVER['DOCUMENT_ROOT']."/wxpay/example/log.php";
  80. //初始化日志
  81. $logHandler= new \CLogFileHandler($_SERVER['DOCUMENT_ROOT']."/wxpay/logs/".date('Y-m-d').'.log');
  82. $log = \Log::Init($logHandler, 15);
  83. //打印输出数组信息
  84. function printf_info($data)
  85. {
  86. foreach($data as $key=>$value){
  87. echo "<font color='#00ff55;'>$key</font> : ".htmlspecialchars($value, ENT_QUOTES)." <br/>";
  88. }
  89. }
  90. $data=[];
  91. $jsApiParameters=[];
  92. $editAddress=[];
  93. if(input('id',0)>0){
  94. $data=Db::name('paylog')->where('id',input('id'))->find();
  95. if($data){
  96. if($data['type']==2){
  97. $this->error(__('已经购买'));
  98. }
  99. }else{
  100. $this->error(__('查询补单订单信息'));
  101. }
  102. $data['member']=Db::name('user')->where('id',$data['uid'])->find();
  103. }
  104. $notifyurl=$site['imgurl'].'/api/paywx/notifwxh5';
  105. $Total=isset($data['amount'])?$data['amount']*100:0.01;
  106. $data['type']=isset($data['type'])?$data['type']:0;
  107. if($data['type']==1){
  108. try{
  109. $tools = new \JsApiPay();
  110. $openId = $tools->GetOpenid();
  111. $jsApiParameters=[];
  112. $editAddress=[];
  113. if($openId){
  114. //②、统一下单
  115. $input = new \WxPayUnifiedOrder();
  116. $input->SetBody("商城订单");
  117. $input->SetAttach("商城订单");
  118. $input->SetOut_trade_no($data['out_trade_no']);
  119. $input->SetTotal_fee($Total);
  120. $input->SetTime_start(date("YmdHis"));
  121. $input->SetTime_expire(date("YmdHis", time() + 600));
  122. $input->SetGoods_tag("商城订单");
  123. $input->SetNotify_url($notifyurl);
  124. $input->SetTrade_type("JSAPI");
  125. $input->SetOpenid($openId);
  126. $config = new \WxPayConfig();
  127. $order = \WxPayApi::unifiedOrder($config, $input);
  128. //echo '<font color="#f00"><b>统一下单支付单信息</b></font><br/>';
  129. //printf_info($order);
  130. $jsApiParameters = $tools->GetJsApiParameters($order);
  131. //获取共享收货地址js函数参数
  132. $editAddress = $tools->GetEditAddressParameters();
  133. }
  134. } catch(Exception $e) {
  135. //Log::ERROR(json_encode($e));
  136. }
  137. }else{
  138. }
  139. $zt=['1'=>'未付款','2'=>'已付款'];
  140. $this->assign('jsApiParameters', $jsApiParameters);
  141. $this->assign('editAddress', $editAddress);
  142. $this->assign('data', $data);
  143. $this->assign('url',$site['imgurl']);
  144. $this->assign('zt', $zt);
  145. //var_dump($data);
  146. if($jsApiParameters and $data){
  147. return $this->fetch();
  148. }else{
  149. //header('Location: '.$data['url'].'/index.php/shop/pay/index?id='.input('id').'&');
  150. }
  151. }
  152. }