|
|
@@ -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';
|
|
|
+ }
|
|
|
|
|
|
}
|