Official.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php namespace App\Servers\Wechat;
  2. use EasyWeChat\Factory;
  3. /**
  4. * 微信公众号
  5. *
  6. */
  7. class Official
  8. {
  9. // 工作列表
  10. protected \EasyWeChat\OfficialAccount\Application $app;
  11. // 构造函数
  12. public function __construct(){
  13. // 应用实例
  14. $this->app = $this->getApp();
  15. }
  16. /**
  17. * 获取应用实例
  18. *
  19. * @return \EasyWeChat\OfficialAccount\Application
  20. *
  21. */
  22. public function getApp(){
  23. // 获取配置
  24. $this->app = Factory::officialAccount(config('wechat.official',[]));
  25. // 返回结果
  26. return $this->app;
  27. }
  28. /**
  29. * 获取user
  30. * @param string $code 通过 前端授权code获取用户openid
  31. *
  32. *
  33. */
  34. public function userFromCode($code){
  35. // 获取手机号
  36. $result = $this->app->oauth->userFromCode($code);
  37. // 判断结果
  38. if( !empty($result['errcode']) ) return ['error'=>$result['errcode'].'=>'.$result['errmsg']];
  39. // 获取不包含区号的手机号(因为绑定手机号字段会有国际区号)
  40. return $result;
  41. }
  42. /**
  43. * 获取JSSDK的配置数组
  44. * @return array
  45. */
  46. public function getJssdkConfig($url=''){
  47. // 如果指定路径的话
  48. if( $url ) $this->app->jssdk->setUrl($url);
  49. // 获取JSSDK的配置对象
  50. $config = $this->app->jssdk->buildConfig(['updateAppMessageShareData','updateTimelineShareData'],false,false,false);
  51. // 获取JSSDK的配置数组
  52. return $config;
  53. }
  54. /**
  55. * 发送一次性订阅消息
  56. * @param array $params
  57. *
  58. */
  59. public function sendSubscription($params){
  60. // 获取手机号
  61. $result = $this->app->template_message->sendSubscription([
  62. 'touser' => $params['openid'],
  63. 'template_id' => 'template-id',
  64. 'url' => $params['url'],
  65. 'scene' => 1000,
  66. 'data' => $params['data'],
  67. ]);
  68. // 判断结果
  69. if( !empty($result['errcode']) ) return ['error'=>$result['errcode'].'=>'.$result['errmsg']];
  70. // 获取不包含区号的手机号(因为绑定手机号字段会有国际区号)
  71. return $result;
  72. }
  73. /**
  74. * 发送模板消息
  75. * @param array $params
  76. *
  77. */
  78. public function send($params){
  79. // 获取手机号
  80. $result = $this->app->template_message->send([
  81. 'touser' => $params['openid'],
  82. 'template_id' => 'template-id',
  83. 'url' => $params['url'],
  84. 'scene' => 1000,
  85. 'data' => $params['data'],
  86. ]);
  87. // 判断结果
  88. if( !empty($result['errcode']) ) return ['error'=>$result['errcode'].'=>'.$result['errmsg']];
  89. // 获取不包含区号的手机号(因为绑定手机号字段会有国际区号)
  90. return $result;
  91. }
  92. }