MembersController.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562
  1. <?php
  2. namespace App\Http\Controllers\Member\Front;
  3. use App\Http\Controllers\FrontController;
  4. use App\Http\Requests\Front\MessagesModifyPasswordRequest;
  5. use App\Http\Requests\Front\MessagesModifyPayPasswordRequest;
  6. use App\Http\Requests\Front\YQH\AttestApiRequest;
  7. use App\Http\Requests\Front\YQH\AttestRequest;
  8. use App\Http\Requests\Front\YQH\UserNameRequest;
  9. use App\Jobs\AttestApiJob;
  10. use App\Jobs\AttestContributionJob;
  11. use App\Jobs\MachineReceiveJob;
  12. use App\Models\AliBinding;
  13. use App\Models\Bonu;
  14. use App\Models\Config;
  15. use App\Models\IndentNum;
  16. use App\Models\KeyWord;
  17. use App\Models\Levels;
  18. use App\Models\Machine;
  19. use App\Models\Member;
  20. use App\Models\MemberAddress;
  21. use App\Models\MemberClans;
  22. use App\Models\MemberIdcard;
  23. use App\Models\MemberMachine;
  24. use App\Models\MemberNumber;
  25. use App\Models\Members;
  26. use App\Models\MemberTeam;
  27. use App\Models\MemberVote;
  28. use App\Models\MoneyDetail;
  29. use App\Models\Nytr;
  30. use App\Models\Order;
  31. use App\Models\Star;
  32. use App\Servers\BonusServer;
  33. use App\Servers\CidServer;
  34. use App\Servers\MachineServer;
  35. use App\Servers\MemberLogsServer;
  36. use App\Servers\MemberNumberServer;
  37. use App\Servers\MemberServer;
  38. use App\Servers\MoneyDetailServer;
  39. use App\Servers\NytrServer;
  40. use App\Servers\PassServer;
  41. use App\Servers\PayServer;
  42. use App\Servers\RegisterServer;
  43. use App\Servers\SmsServer;
  44. use App\Servers\StarServer;
  45. use App\Servers\TipServer;
  46. use Carbon\Carbon;
  47. use Illuminate\Http\Request;
  48. use Illuminate\Support\Facades\DB;
  49. use Illuminate\Support\Facades\Hash;
  50. use Illuminate\Support\Facades\Redis;
  51. use Illuminate\Support\Facades\Storage;
  52. use SimpleSoftwareIO\QrCode\Facades\QrCode;
  53. class MembersController extends FrontController
  54. {
  55. public function __construct()
  56. {
  57. parent::__construct();
  58. }
  59. function index()
  60. {
  61. dd(1);
  62. }
  63. /**
  64. * 会员注册
  65. */
  66. function register()
  67. {
  68. //redis访问频率限制
  69. $redis_on_name = 'register_member' . session_id();
  70. $redis_time = Redis::get($redis_on_name);
  71. $time=time();
  72. if(!empty($redis_time) && $redis_time >$time-3){
  73. return $this->apiResponseError([], '会员信息正在注册中...');
  74. }
  75. Redis::set($redis_on_name, $time);
  76. $invite_code = request()->input('invite_code', '');
  77. if (empty($invite_code)) {
  78. return $this->apiResponseError([], 'member.no_invite_code');
  79. }
  80. $mobile = request()->input('mobile', '');
  81. $mobile = $mobile + time();
  82. if (empty($mobile)) {
  83. return $this->apiResponseError([], 'member.no_mobile');
  84. }
  85. // 手机号码判断
  86. if (!preg_match('#^[\d]{11,11}$#', $mobile)) {
  87. return response()->json([
  88. 'msg' => '手机号码格式错误',
  89. 'data' => [],
  90. 'code' => 0,
  91. ]);
  92. }
  93. $password = request()->input('password', '');
  94. $password=str_replace(' ','',$password);
  95. if (empty($password)) {
  96. return $this->apiResponseError([], 'member.no_password');
  97. }
  98. if(strlen($password)<6){
  99. return $this->apiResponseError([], '登录密码最低6位');
  100. }
  101. $type = request()->input('type', '');
  102. $sms = request()->input('sms', '');
  103. // 短信验证码是否通过
  104. $result = (new SmsServer)->checkSms($sms, $mobile, $type);
  105. if ($result['errcode'] === false) {
  106. return response()->json([
  107. 'msg' => $result['errmsg'],
  108. 'data' => [],
  109. 'code' => 0,
  110. ]);
  111. }
  112. $is_mobile = Members::where('mobile', $mobile)->count();
  113. if ($is_mobile > 0) {
  114. return $this->apiResponseError([], 'member.mobile_register');
  115. }
  116. $p_member = Members::where('invite_code', $invite_code)->first();
  117. if (empty($p_member)) {
  118. return $this->apiResponseError([], 'member.no_p_member');
  119. }
  120. $ret = MemberServer::register($mobile, $p_member, $password);
  121. if (empty($ret)) {
  122. return $this->apiResponseError([], 'member.no_register');
  123. } else {
  124. MemberLogsServer::write($ret['m_id'], '会员注册成功');
  125. return $this->apiResponseSuccess($ret, 'member.yes_register');
  126. }
  127. }
  128. /**
  129. * 会员登录
  130. * @return \Illuminate\Http\JsonResponse
  131. */
  132. function login()
  133. {
  134. $mobile = request()->input('mobile', '');
  135. if (empty($mobile)) {
  136. return $this->apiResponseError([], 'member.no_mobile');
  137. }
  138. $password = request()->input('password', '');
  139. if (empty($password)) {
  140. return $this->apiResponseError([], 'member.no_password');
  141. }
  142. // $type = request()->input('type', '');
  143. // $sms = request()->input('sms', '');
  144. // // 短信验证码是否通过
  145. // $result = (new SmsServer)->checkSms($sms, $mobile, $type);
  146. // if ($result['errcode'] === false) {
  147. // return response()->json([
  148. // 'msg' => $result['errmsg'],
  149. // 'data' => [],
  150. // 'code' => 0,
  151. // ]);
  152. // }
  153. $member = Members::where('mobile', $mobile)->select(['id', 'password', 'encrypt'])->first();
  154. if (empty($member)) {
  155. return $this->apiResponseError([], 'member.no_member');
  156. }
  157. if (!PassServer::verifyPass($password, $member->{'encrypt'}, $member->{'password'})) {
  158. return $this->apiResponseError([], 'member.password_error');
  159. }
  160. $token_str = PassServer::getMemberToken($member->{'id'});
  161. Members::where('id', $member->{'id'})->update(['token_str' => $token_str]);
  162. MemberLogsServer::write($member->{'id'}, '会员登录成功');
  163. return $this->apiResponseSuccess(['m_id' => $member->{'id'}, 'token' => $token_str], 'member.yes_login');
  164. }
  165. /**
  166. * 修改登录密码
  167. * @return \Illuminate\Http\JsonResponse
  168. */
  169. function oldPassUpdatePass()
  170. {
  171. $old_pass = request()->input('old_pass', '');
  172. if (empty($old_pass)) {
  173. return $this->apiResponseError([], 'member.no_old_pass');
  174. }
  175. $password = request()->input('new_password', '');
  176. if (empty($password)) {
  177. return $this->apiResponseError([], 'member.no_password');
  178. }
  179. $two_password = request()->input('two_password', '');
  180. if (empty($two_password)) {
  181. return $this->apiResponseError([], '请再次输入密码');
  182. }
  183. if ($password != $two_password) {
  184. return $this->apiResponseError([], '两次密码输入不一致');
  185. }
  186. $member = Members::where('id', $this->member->{'id'})->select(['id', 'password', 'encrypt'])->first();
  187. if (empty($member)) {
  188. return $this->apiResponseError([], 'member.no_member');
  189. }
  190. if (!PassServer::verifyPass($old_pass, $member->{'encrypt'}, $member->{'password'})) {
  191. return $this->apiResponseError([], 'member.old_password_error');
  192. }
  193. Members::where('id', $member->{'id'})->update(['m_p' => $password, 'password' => PassServer::memberPassword($password, $member->{'encrypt'})]);
  194. MemberLogsServer::write($member->{'id'}, '会员修改登录密码');
  195. return $this->apiResponseSuccess([], '登录密码修改成功');
  196. }
  197. /**
  198. * 修改登录密码
  199. * @return \Illuminate\Http\JsonResponse
  200. */
  201. function updatePass()
  202. {
  203. $mobile = request()->input('mobile', '');
  204. if (empty($mobile)) {
  205. return $this->apiResponseError([], 'member.no_mobile');
  206. }
  207. $password = request()->input('password', '');
  208. if (empty($password)) {
  209. return $this->apiResponseError([], 'member.no_password');
  210. }
  211. $type = request()->input('type', '');
  212. $sms = request()->input('sms', '');
  213. // 短信验证码是否通过
  214. $result = (new SmsServer)->checkSms($sms, $mobile, $type);
  215. if ($result['errcode'] === false) {
  216. return response()->json([
  217. 'msg' => $result['errmsg'],
  218. 'data' => [],
  219. 'code' => 0,
  220. ]);
  221. }
  222. $member = Members::where('mobile', $mobile)->select(['id', 'password', 'encrypt'])->first();
  223. if (empty($member)) {
  224. return $this->apiResponseError([], 'member.no_member');
  225. }
  226. Members::where('id', $member->{'id'})->update(['password' => PassServer::memberPassword($password, $member->{'encrypt'})]);
  227. MemberLogsServer::write($member->{'id'}, '会员修改登录密码');
  228. return $this->apiResponseSuccess([], 'member.yes_pass');
  229. }
  230. /**
  231. * 修改支付密码
  232. * @return \Illuminate\Http\JsonResponse
  233. */
  234. function updatePayPass()
  235. {
  236. $mobile = request()->input('mobile', '');
  237. if (empty($mobile)) {
  238. return $this->apiResponseError([], 'member.no_mobile');
  239. }
  240. $password = request()->input('password', '');
  241. if (empty($password)) {
  242. return $this->apiResponseError([], '请输入支付密码');
  243. }
  244. $type = request()->input('type', '');
  245. $sms = request()->input('sms', '');
  246. // 短信验证码是否通过
  247. $result = (new SmsServer)->checkSms($sms, $mobile, $type);
  248. if ($result['errcode'] === false) {
  249. return response()->json([
  250. 'msg' => $result['errmsg'],
  251. 'data' => [],
  252. 'code' => 0,
  253. ]);
  254. }
  255. // $member = Members::where('mobile', $mobile)->select(['id', 'password', 'encrypt'])->first();
  256. if (empty($member)) {
  257. // return $this->apiResponseError([], 'member.no_member');
  258. }
  259. Members::where('id', $this->member->{'id'})->update(['pay_pass' => PassServer::memberPassword($password, $this->member->{'encrypt'})]);
  260. MemberLogsServer::write($this->member->{'id'}, '会员修改支付密码');
  261. return $this->apiResponseSuccess([], 'member.yes_pay_pass');
  262. }
  263. /**
  264. * 获取登录信息
  265. * @return \Illuminate\Http\JsonResponse
  266. */
  267. function getMemberInfo()
  268. {
  269. if (empty($this->member->id)) {
  270. return $this->apiResponseSuccess([], 'member.yes');
  271. }
  272. $member_info = Members::where('id', $this->member->{'id'})->select(['id','money','total_money', 'invite_code','recom_mobile', 'nickname', 'mobile', 'level_id'])->first();
  273. if (empty($member_info)) return $this->apiResponseSuccess([], 'member.yes');
  274. $is_certification = MemberIdcard::where('member_id', $this->member->{'id'})->where('status', '>=', 0)->count();
  275. $member_info->{'is_ok'} = $is_certification;
  276. $lang = request()->get('lang', 'zh');
  277. if ($lang == 'zh') {
  278. $member_info->{'level_name'} = Levels::where('id', $member_info->{'level_id'})->value('name');
  279. } else {
  280. $member_info->{'level_name'} = Levels::where('id', $member_info->{'level_id'})->value('name_en');
  281. }
  282. return $this->apiResponseSuccess($member_info, '获取信息成功');
  283. }
  284. /**
  285. * 获取分享信息
  286. * @return \Illuminate\Http\JsonResponse
  287. */
  288. function getShareInfo()
  289. {
  290. $member = Members::where('id', $this->member->{'id'})->select(['id', 'invite_code'])->first();
  291. $app_url = 'http://'.env('APP_HOST_DOWN_WEB');
  292. $share_img = public_path('code_img/code/' . $this->member->{'id'} . 'share_img.png');
  293. if (!is_file($share_img)) {
  294. file_put_contents($share_img, QrCode::format('png')->size(169)->margin(1)->generate($app_url . '/register?code=' . $member->{'invite_code'}));
  295. }
  296. $member->{'share_img'} = $app_url . '/code_img/code/' . $this->member->{'id'} . 'share_img.png';
  297. return $this->apiResponseSuccess($member, 'member.yes');
  298. }
  299. /**
  300. * 推荐列表
  301. * @return \Illuminate\Http\JsonResponse
  302. */
  303. function getShareList()
  304. {
  305. $direct_ids = Members::where('recom_id', $this->member->{'id'})->pluck('id')->toArray();
  306. $m_ids = MemberClans::where('m_id', $this->member->{'id'})->value('m_ids');
  307. if (empty($direct_ids)) {
  308. $direct_num = 0;
  309. } else {
  310. $direct_num = 0;
  311. }
  312. if (empty($m_ids)) {
  313. $total_num = 0;
  314. } else {
  315. $m_ids = array_filter(explode(',', $m_ids));
  316. $total_num = 0;
  317. }
  318. $share_list = Members::where('recom_id', $this->member->{'id'})->select(['id', 'invite_code', 'mobile', 'created_at', 'level_id'])->get();
  319. foreach ($share_list as &$share) {
  320. $t_m_ids = MemberClans::where('m_id', $share->{'id'})->value('m_ids');
  321. $t_m_ids = explode(',', $t_m_ids);
  322. $t_m_ids[] = $share->{'id'};
  323. $t_m_ids = array_unique(array_filter($t_m_ids));
  324. $share->{'t_num'} = count($t_m_ids);
  325. $share->{'contract_num'} = 0;
  326. $share->{'level_name'} = Levels::where('id', $share->{'level_id'})->value('name');
  327. // $share->{'mobile'} = substr($share->{'mobile'}, 0, 3) . '****' . substr($share->{'mobile'}, 7);
  328. }
  329. return $this->apiResponseSuccess(['list' => $share_list, 'total_num' => $total_num, 'direct_num' => $direct_num], 'member.yes');
  330. }
  331. // 上传图片接口
  332. public function oneImage(Request $request)
  333. {
  334. $result = $this->base64ToImage($request->input('image', ""), 'attest');
  335. if ($result['code'] === false) {
  336. return $this->apiResponseError([], 'member.no');
  337. } else {
  338. if ($result) {
  339. return $this->apiResponseSuccess(['url' => $result['url']], 'member.yes');
  340. // return response()->json([
  341. // 'msg' => "成功",
  342. // 'data' => [
  343. // 'url' => $result['url'],
  344. // ],
  345. // 'code' => 1,
  346. // ]);
  347. } else {
  348. return $this->apiResponseError([], 'member.no');
  349. // return response()->json([
  350. // 'msg' => "失败",
  351. // 'data' => [],
  352. // 'code' => 0,
  353. // ]);
  354. }
  355. }
  356. }
  357. // base64图片保存
  358. protected function base64ToImage($base64ImageContent, $path)
  359. {
  360. $base64_image_content = $base64ImageContent;
  361. if (!empty($base64_image_content)) {
  362. $upload_path = "storage" . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR . date('Ymd', time()) . DIRECTORY_SEPARATOR;
  363. $img_url = md5(uniqid() . time()) . '.jpg';
  364. $upload_path1 = public_path($upload_path);
  365. if (!is_dir($upload_path1)) {
  366. mkdir($upload_path1, 0777, true);
  367. }
  368. try {
  369. $base64_image_content = str_replace('[removed]', '', $base64_image_content);
  370. preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result);
  371. // oss 上传
  372. $oss = Storage::disk('oss');
  373. $pathA = "{$upload_path}{$img_url}";
  374. if (empty($result[1])) {
  375. $update = $oss->put($pathA, base64_decode($base64_image_content));
  376. if (!$update) { // 如果失败上传本地
  377. file_put_contents($upload_path1 . $img_url, base64_decode($base64_image_content));
  378. }
  379. } else {
  380. $update = $oss->put($pathA, base64_decode(str_replace($result[1], '', $base64_image_content)));
  381. if (!$update) { // 如果失败上传本地
  382. file_put_contents($upload_path1 . $img_url, base64_decode(str_replace($result[1], '', $base64_image_content)));
  383. }
  384. }
  385. return [
  386. 'code' => true,
  387. // 'url' => $update ? $oss->url($pathA).'?x-oss-process=image/auto-orient,1/resize,p_50/quality,q_60' : asset($pathA),
  388. // 'url' => $update ? $oss->url($pathA) . '?x-oss-process=image/auto-orient,1/resize,p_20/quality,q_30' : asset($pathA),
  389. 'url' => $update ? $oss->url($pathA) : asset($pathA),
  390. ];
  391. } catch (\Exception $e) {
  392. return [
  393. 'code' => false,
  394. 'msg' => "图片错误" . $e->getMessage() . " " . $e->getLine(),
  395. ];
  396. }
  397. } else {
  398. return [
  399. 'code' => false,
  400. 'msg' => "请上传图片",
  401. ];
  402. }
  403. }
  404. /**
  405. * 获取用户地址
  406. */
  407. function getMemberAddress()
  408. {
  409. $addresslist = MemberAddress::where('member_id', $this->member->{'id'})->where('is_del', '0')->orderBy('is_default', 'asc')->orderBy('id', 'desc')->get();
  410. return $this->apiResponseSuccess($addresslist, '获取成功');
  411. }
  412. /**
  413. * 删除地址
  414. */
  415. function delMemberAddress()
  416. {
  417. $a_id = request()->get('a_id', '1');
  418. if (empty($a_id)) return $this->apiResponseError([], '缺少必要参数');
  419. $row = MemberAddress::where([['id', $a_id], ['member_id', $this->member->{'id'}]])->update(['is_del' => 1]);
  420. if ($row) {
  421. return $this->apiResponseSuccess([], '删除成功');
  422. } else {
  423. return $this->apiResponseError([], '删除失败');
  424. }
  425. }
  426. /**
  427. * 编辑用户地址
  428. */
  429. function editAddress()
  430. {
  431. $addressid = request()->get('addressid', '1');//地址id
  432. $data['member_id'] = $this->member['id'];//用户id
  433. $data['consignee'] = request()->get('consignee', '张三3242');//收货人
  434. $data['phone'] = request()->get('phone', '13600136001');//收货人手机号
  435. $data['is_default'] = request()->get('is_default', '1');//是否默认 1:是\r\n2:否
  436. $data['address'] = request()->get('address', '第三方都是');//详细地址
  437. $data['area'] = request()->get('area', '2');//区
  438. $data['city'] = request()->get('city', '3');//市
  439. $data['province'] = request()->get('province', '1');//省
  440. $data['city_names'] = request()->get('city_names', '北京市东城区');//省
  441. if (empty($data['member_id'])) return $this->apiResponseError([], '用户标识不能为空');
  442. if (empty($data['province']) || empty($data['city']) || empty($data['area'])) return $this->apiResponseError([], '省市区不能为空');
  443. $data['consignee'] = strip_tags($data['consignee']);
  444. if (empty($data['consignee'])) return $this->apiResponseError([], '姓名不能为空');
  445. if (mb_strlen($data['consignee'], 'UTF-8') > 10) return $this->apiResponseError([], '姓名过长');
  446. if (empty($data['phone'])) return $this->apiResponseError([], '手机号不能为空');
  447. $data['address'] = strip_tags($data['address']);
  448. if (empty($data['address'])) return $this->apiResponseError([], '请输入详细地址');
  449. if (mb_strlen($data['address'], 'UTF-8') > 25) $this->apiResponseError([], '地址过长');
  450. if (!MemberServer::verifyMobile($data['phone'])) $this->apiResponseError([], '手机格式不正确');
  451. if ($data['is_default'] == 1) {
  452. MemberAddress::where('member_id', $this->member->{'id'})->update(['is_default' => 2]);
  453. }
  454. if (!empty($addressid)) MemberAddress::where('id', $addressid)->update($data);
  455. else MemberAddress::create($data);
  456. return $this->apiResponseSuccess([], '编辑成功');
  457. }
  458. /**
  459. * 设置默认收货地址
  460. */
  461. function setDefaultAddress()
  462. {
  463. $address_id = request()->get('address_id', '2');//地址id
  464. if (empty($address_id)) return $this->apiResponseError([], '缺少必要参数');
  465. $info = MemberAddress::where([['member_id', $this->member['id']], ['id', $address_id]])->first();
  466. if (empty($info)) return $this->apiResponseError([], '信息错误');
  467. if ($info['is_default'] == 1) {
  468. MemberAddress::where('member_id', $this->member->{'id'})->where('id', $address_id)->update(['is_default' => 2]);
  469. return $this->apiResponseError([], '取消成功');
  470. } else {
  471. MemberAddress::where('member_id', $this->member->{'id'})->update(['is_default' => 2]);
  472. MemberAddress::where('member_id', $this->member->{'id'})->where('id', $address_id)->update(['is_default' => 1]);
  473. return $this->apiResponseSuccess([], '设置成功');
  474. }
  475. }
  476. /**
  477. * 获取用户地址
  478. */
  479. function getDefaultAddress()
  480. {
  481. $address_id = request()->get('address_id', '');
  482. $where = [['member_id', $this->member->{'id'}], ['is_del', '0']];
  483. if ($address_id) $where[] = ['id', $address_id];
  484. $addresslist = MemberAddress::where($where)->orderBy('is_default', 'asc')->orderBy('id', 'desc')->first()->toArray();
  485. if (empty($addresslist)) $addresslist = [];
  486. return $this->apiResponseSuccess($addresslist, '获取成功');
  487. }
  488. /**
  489. * 获取实名认证支付信息
  490. * @return \Illuminate\Http\JsonResponse
  491. */
  492. function getAliBindingPay()
  493. {
  494. if ($this->member->{'status'} != '1') {
  495. return $this->apiResponseError([], '当前已完成绑定');
  496. }
  497. $attestation_sn = IndentNum::getIndentNum(3);
  498. $pay_money=Config::where('key','attestation_money')->value('value');
  499. if(empty($pay_money))$pay_money=1.68;
  500. $aliPay = new PayServer();
  501. $notify='http://'.env('APP_HOST_WEB').'/notify';
  502. $pay_info=$aliPay->appAliPay($attestation_sn,'实名认证',$pay_money,$notify);
  503. if(!empty($pay_info)){
  504. AliBinding::where('m_id',$this->member->{'id'})->update(['status'=>5]);
  505. AliBinding::create(['m_id'=>$this->member->{'id'},'money'=>$pay_money,'attestation_sn'=>$attestation_sn,'pay_sn'=>'','pay_content'=>'','status'=>1,'ali_open_id'=>'']);
  506. return $this->apiResponseSuccess(['pay_info'=>$pay_info,'mobile'=>$this->member->{'mobile'},'money'=>$pay_money,'attestation_sn'=>$attestation_sn],'获取信息成功');
  507. }else{
  508. return $this->apiResponseError([],'支付信息创建失败');
  509. }
  510. }
  511. // 支付回调
  512. public function notifyUrl()
  513. {
  514. $aliPay = new PayServer();
  515. $aliPay->notifyUrl();
  516. }
  517. }