WIN-2308041133\Administrator 1 year ago
parent
commit
40d784ecba
2 changed files with 153 additions and 7 deletions
  1. 151 7
      application/api/controller/Wechat.php
  2. 2 0
      application/route.php

+ 151 - 7
application/api/controller/Wechat.php

@@ -1,10 +1,14 @@
 <?php
+
 namespace app\api\controller;
+
+use app\admin\model\WechatPlan;
 use app\common\model\UserRelation;
 use app\common\controller\Api;
 use app\common\library\Auth;
 use liuniu\WechatService;
 use app\common\model\User;
+use Overtrue\Socialite\AuthorizeFailedException;
 use think\Exception;
 use think\Hook;
 use think\Request;
@@ -12,6 +16,7 @@ use think\Request;
 class Wechat extends Api
 {
     protected $noNeedLogin = ['*'];
+
     /**
      * 微信公众号服务
      * @return \think\Response
@@ -28,7 +33,7 @@ class Wechat extends Api
     public function notify()
     {
         ob_clean();
-        WechatService::handleNotify(input('cid',0));
+        WechatService::handleNotify(input('cid', 0));
     }
 
     /**
@@ -53,13 +58,13 @@ class Wechat extends Api
     {
         $spreadId = intval($request->param('spread'));
         $login_type = $request->param('login_type', 1);
-        @file_put_contents("auth.txt",json_encode(input()));
+        @file_put_contents("auth.txt", json_encode(input()));
         try {
             $wechatInfo = WechatService::oauthService($this->cid)->user()->getOriginal();
         } catch (\Exception $e) {
             $this->error(['message' => $e->getMessage(), 'line' => $e->getLine()]);
         }
-        @file_put_contents("auth.txt","\r\n".json_encode($wechatInfo),8);
+        @file_put_contents("auth.txt", "\r\n" . json_encode($wechatInfo), 8);
         try {
             if (!isset($wechatInfo['nickname'])) {
                 try {
@@ -90,11 +95,150 @@ class Wechat extends Api
             // 设置推广关系
             User::setSpread(intval($spreadId), $user->id);
             return $this->success('登录成功', $this->auth->getUserinfo());
-        }catch (Exception $e)
-        {
-            @file_put_contents("error.txt",$e->getFile().'-',$e->getLine(),'-'.$e->getMessage());
+        } catch (Exception $e) {
+            @file_put_contents("error.txt", $e->getFile() . '-', $e->getLine(), '-' . $e->getMessage());
         }
     }
-
+//    /**
+//     * 扣款服务
+//     * @param Request $request
+//     * @return mixed
+//     * @throws \think\db\exception\DataNotFoundException
+//     * @throws \think\db\exception\ModelNotFoundException
+//     * @throws \think\exception\DbException
+//     */
+//    public function signing(Request $request)
+//    {
+//        $peice = intval($request->param('peice'));
+//        $uid = intval($request->param('uid'));
+//        $plan_id = WechatPlan::where('price',$peice)->value('plan_id');
+//        $login_type = $request->param('login_type', 1);
+//        @file_put_contents("auth.txt", json_encode(input()));
+//        try {
+//
+////            $notify_url=Request::instance()->domain() . "/api/wechat/notify/" . $cid; //回调接口
+//            $app_id='wx5681205d1ef4d9d3';
+//            $mch_id ='';
+//            $sub_mch_id ='';
+//            $contract_code =$this->generateRandomString(6);
+//            $notify_url=Request::instance()->domain() . "/api/wechat/notify/" . 12; //回调接口  $cid 企业id
+////            $num = time() + mt_rand(10, 999999) . '' . substr($msec, 2, 3);//生成随机数
+//            $request_serial=$this->generateUniqueSerialNumber();
+//            $contract_display_account='咸宁红十字';
+//            $timestamp=time();
+//            $version=1.0;
+//            $array = array(
+//                'appid' => $app_id,
+//                'mch_id' => $mch_id,
+//                'plan_id' => $plan_id,
+//                'sub_mch_id' => $sub_mch_id,
+//                'contract_code' => $contract_code,
+//                'notify_url' => $notify_url,
+//                'contract_display_account' => $contract_display_account,
+//                'request_serial' => $request_serial,
+//                'timestamp' => $timestamp,
+//               'version' => $version,
+//
+//            );
+//            $arr=ksort($array);
+//            $sign=$this->md5_sign($arr,'');
+//            $url=$this->OfficialAccountSigning($app_id,$mch_id,$plan_id,$sub_mch_id,$contract_code,$request_serial,$contract_display_account,$notify_url,$version,$sign,$timestamp);
+//            return $url;
+//        } catch (Exception $e) {
+//            @file_put_contents("error.txt", $e->getFile() . '-', $e->getLine(), '-' . $e->getMessage());
+//        }
+//    }
+//
+//    public function generateRandomString($length) {
+//        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
+//        $charactersLength = strlen($characters);
+//        $randomString = '';
+//        for ($i = 0; $i < $length; $i++) {
+//            $randomString .= $characters[rand(0, $charactersLength - 1)];
+//        }
+//        return $randomString;
+//    }
+////    生成唯一序列号
+//    public function generateUniqueSerialNumber() {
+//        // 使用uniqid生成一个唯一ID,并去除前缀的'0'
+//        $uniqueId = ltrim(uniqid('', true), '0');
+//
+//        // 确保生成的ID不以0开头且长度不超过19位(int64的最大长度)
+//        while (strlen($uniqueId) > 19 || substr($uniqueId, 0, 1) === '0') {
+//            $uniqueId = ltrim(uniqid('', true), '0');
+//        }
+//
+//        // 将生成的ID转换为纯数字
+//        $serialNumber = preg_replace('/\D/', '', $uniqueId);
+//
+//        // 确保生成的序列号不以0开头
+//        if (substr($serialNumber, 0, 1) === '0') {
+//            $serialNumber = generateUniqueSerialNumber(); // 递归调用以重新生成
+//        }
+//
+//        return $serialNumber;
+//    }
+//
+//
+//    public function curl_post($url = '', $name = array(), $timeout = 100)
+//    {
+//        // var_dump($url);die();
+//        $ch = curl_init();
+//        curl_setopt($ch, CURLOPT_URL, $url);
+//        curl_setopt($ch, CURLOPT_HEADER, false); //是否显示头部
+//        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//是否直接输出到屏幕
+//        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
+//        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
+//        curl_setopt($ch, CURLOPT_POST, true); //是否以post方式
+//        //设置post数据
+//        $post_data = json_encode($name);
+//        // curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
+//        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
+//        $content = curl_exec($ch);
+//        // var_dump($content);die();
+//        curl_close($ch);
+//        $content = json_decode($content, true);
+//        return $content;
+//
+//    }
+//    public function md5_sign($data, $key){
+//        $stringSignTemp=$data."&key=$key"; //注:key为商户平台设置的密钥key
+//
+//        $sign=MD5($stringSignTemp); //MD5加密
+//        $sign=strtoupper($sign); //大写
+//        return $sign;
+//    }
+//
+//    /**
+//     * 公众号签约
+//     * see:https://pay.weixin.qq.com/wiki/doc/api/wxpay_v2/papay/chapter5_1.shtml
+//     * @param array $data
+//     *
+//     * @return array
+//     * @throws AuthorizeFailedException
+//     */
+//    public function OfficialAccountSigning(string $appid,string $mch_id, string $plan_id,string $sub_mch_id, string $contract_code, string $request_serial, string $contract_display_account, string $notify_url, string $version, string $sign,string $timestamp): array
+//    {
+//
+//        $url = 'https://api.mch.weixin.qq.com/papay/partner/entrustweb';
+//        $info = [
+//            'appid' => $appid,  //应用ID
+//            'mch_id' => $mch_id,  //商户号
+//            'plan_id' => $plan_id,  //子商户号
+//            'sub_mch_id' => $sub_mch_id,  //模板id
+//            'contract_code' => $contract_code, //签约协议号
+//            'request_serial' => $request_serial, //请求序列号
+//            'contract_display_account' => $contract_display_account, //用户账户展示名称
+//            'notify_url' => $notify_url, //回调通知url
+//            'version' => $version, //版本号 固定值1.0
+//            'sign' => $sign, //签名
+//            'timestamp' => $timestamp
+//        ];
+//        $response = $this->curl_post($url, $info);
+//        return $response;
+//    }
+    public function test() {
+        return '123456';
+    }
 
 }

+ 2 - 0
application/route.php

@@ -44,6 +44,8 @@ Route::group('api', function () {
     Route::group('wechat', function () {
         Route::get('auth', 'api/wechat/auth');
         Route::get('wxconfig', 'api/Index/wxconfig');
+//        Route::get('signing', 'api/wechat/signing');
+        Route::get('test', 'api/wechat/test');
     });
     Route::group('mini', function () {
         Route::post('auth', 'api/MiniProgram/mp_auth');