WxService.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Service;
  3. use Illuminate\Support\Facades\Cache;
  4. class WxService extends Service
  5. {
  6. private $appID = 'wx8c710e2210bee651';
  7. private $appSecret = 'd98ec1fb5b9c9de648f12d1a38db227e';
  8. public function getToken($cacheKey){
  9. if(Cache::has($cacheKey)){
  10. $accessToken = Cache::get($cacheKey);
  11. }else{
  12. // 获取访问令牌(Access Token)
  13. $apiURL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appID}&secret={$this->appSecret}";
  14. $response = file_get_contents($apiURL);
  15. $result = json_decode($response, true);
  16. if(isset($result['errcode'])){
  17. return [false,"错误码:{$result['errcode']} 详细信息:{$result['errmsg']}"];
  18. }
  19. $accessToken = $result['access_token'];
  20. }
  21. return [true,$accessToken];
  22. }
  23. public function sendToWx($accessToken,$code){
  24. // 发送模板消息
  25. $sendURL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=$accessToken";
  26. $userOpenID = '';
  27. $template_id = '';
  28. // 准备模板消息的数据
  29. $templateData = array(
  30. 'touser' => $userOpenID,
  31. 'template_id' => $template_id,
  32. 'data' => array(
  33. 'code' => array(
  34. 'value' => $code,
  35. ),
  36. ),
  37. );
  38. $sendData = json_encode($templateData);
  39. $ch = curl_init();
  40. curl_setopt($ch, CURLOPT_URL, $sendURL);
  41. curl_setopt($ch, CURLOPT_POST, 1);
  42. curl_setopt($ch, CURLOPT_POSTFIELDS, $sendData);
  43. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  44. $response = curl_exec($ch);
  45. curl_close($ch);
  46. // 处理发送结果
  47. $result = json_decode($response, true);
  48. if ($result['errcode'] == 0) {
  49. return [true,'验证码已成功发送到微信用户!'];
  50. } else {
  51. return [false, '发送验证码时出错:' . $result['errmsg']] ;
  52. }
  53. }
  54. }