MsgsController.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace App\Http\Controllers\Wechat\ThirdWx;
  3. use App\Http\Controllers\WechatController;
  4. use App\Http\Requests;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Http\Response;
  7. use EasyWeChat\Foundation\Application;
  8. use WechatOP;
  9. use Cookie;
  10. /**
  11. * 维护第三方平台的基础配置
  12. * @author zhoulingjie
  13. *
  14. */
  15. class MsgsController extends WechatController
  16. {
  17. /**
  18. * 接收微信的第三方平台信息推送
  19. * grep -nr component_verify_ticket storage/*
  20. * @param Request $request
  21. */
  22. function receive_component_verify_ticket(Request $request){
  23. v('receive_tickt_start');
  24. v($request->all());
  25. $server = WechatOP::server();
  26. v('start_setmessage');
  27. if(env('DEVELOP_MODE') == 'local'){
  28. v('local_test');
  29. $message = $this->get_fake_data();
  30. $res = $this->deal_callback($message);
  31. }else{
  32. v('online_test');
  33. $server->setMessageHandler(function($message) {
  34. $res = $this->deal_callback($message);
  35. });
  36. }
  37. v('receive_tickt_end');
  38. return $server->serve();
  39. }
  40. function deal_callback($message){
  41. v('thirdwx_deal_callback');v($message);
  42. v('InfoType:'.$message->get('InfoType'));
  43. switch ($message->get('InfoType')) {
  44. case "component_verify_ticket":
  45. v('save_ticket:'.$message->get('ComponentVerifyTicket'));
  46. // 保存开放平台 ticket
  47. $save_ticket_res = app('wechat_op')->saveTicket($message->get('ComponentVerifyTicket'));
  48. v('save_ticket_res');v($save_ticket_res);
  49. break;
  50. case "unauthorized":
  51. // 公众号取消授权记录
  52. $appid = $message->get('AuthorizerAppid');
  53. v('gzh_unauthorized:'.$appid);
  54. parent::__construct($appid);
  55. $this->WechatApi->cancel_oauth_official_account($appid);
  56. break;
  57. case "authorized":
  58. // 公众号授权
  59. v('gzh_authorized');
  60. break;
  61. default:
  62. break;
  63. }
  64. }
  65. // {"\u0000*\u0000items":{
  66. // "AppId":"wx46d3ea76723d890c","CreateTime":"1506602969","InfoType":"component_verify_ticket","ComponentVerifyTicket":"ticket@@@MX6T2u23fgQ6BWYyU5dteplNwP_Nu-HEjoVhzmjSIKeTNu8dTVUfdCjdJqVGX4uF5ODSJKJMRqH1blDFUYgpSw"}
  67. // }
  68. function get_fake_data(){
  69. $message = new \stdClass();
  70. $test = 'ticket';
  71. if($test == 'ticket'){
  72. $message->InfoType = 'EVENT_UNAUTHORIZED';
  73. $message->AuthorizationCode = '200';
  74. }
  75. return $message;
  76. }
  77. }