WechatMpController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\common\controllers;
  8. use yii\web\Controller;
  9. use app\modules\admin\models\wechat_mp\CardForm;
  10. use \EasyWeChat\Kernel\Support\XML;
  11. class WechatMpController extends Controller
  12. {
  13. public $wechat_mp;
  14. public function init() {
  15. parent::init();
  16. $form = new CardForm();
  17. $this->wechat_mp = $form->wechat_mp;
  18. }
  19. public function actionIndex() {
  20. $server = $this->wechat_mp->server;
  21. $server->push(function($message){
  22. return $this->_message($message);
  23. });
  24. $response = $server->serve();
  25. // 将响应输出
  26. $response->send();
  27. }
  28. private function _message($message){
  29. $MsgType = $message['MsgType'];
  30. //e.g. _message_event
  31. $action = '_message_' . $MsgType;
  32. if($this->hasMethod($action)){
  33. try{
  34. $actionRes = $this->$action($message);
  35. } catch (\Exception $e){
  36. \Yii::error([__METHOD__, $message, $e->getTrace()]);
  37. return "";
  38. }
  39. \Yii::error([__METHOD__, $message, $actionRes]);
  40. return $actionRes ? $actionRes : "";
  41. }
  42. return "";
  43. }
  44. private function _message_event($message){
  45. $event = $message['Event'];
  46. $action = 'event_' . $event;
  47. if($this->hasMethod($action)){
  48. try{
  49. $actionRes = $this->$action($message);
  50. } catch (\Exception $e){
  51. \Yii::error([__METHOD__, $message, $e->getTrace()]);
  52. return "";
  53. }
  54. \Yii::error([__METHOD__, $message, $actionRes]);
  55. return $actionRes ? $actionRes : "";
  56. }
  57. return "";
  58. }
  59. public function actionTest() {
  60. $xml = '<xml>
  61. <ToUserName> <![CDATA[gh_fc0a06a20993]]> </ToUserName>
  62. <FromUserName> <![CDATA[oBolB1pon-jHiNVRZ8fgD8NMfxHg]]> </FromUserName>
  63. <CreateTime>1472551036</CreateTime>
  64. <MsgType> <![CDATA[event]]> </MsgType>
  65. <Event> <![CDATA[user_get_card]]> </Event>
  66. <CardId> <![CDATA[pBolB1muXbHzW0xjoGonZ_okhVzo]]> </CardId>
  67. <IsGiveByFriend>0</IsGiveByFriend>
  68. <UserCardCode> <![CDATA[416008848346]]> </UserCardCode>
  69. <FriendUserName> <![CDATA[]]> </FriendUserName>
  70. <OuterId>0</OuterId>
  71. <OldUserCardCode> <![CDATA[]]> </OldUserCardCode>
  72. <OuterStr> <![CDATA[2]]> </OuterStr>
  73. <IsRestoreMemberCard>0</IsRestoreMemberCard>
  74. <IsRecommendByFriend>0</IsRecommendByFriend>
  75. <UnionId>o6_bmasdasdsad6_2sgVt7hMZOPfL</UnionId>
  76. </xml>';
  77. $message = XML::parse($xml);
  78. $this->event_user_get_card($message);
  79. return "";
  80. }
  81. public function event_user_get_card($message) {
  82. $fromUser = trim($message['FromUserName']);
  83. $CardId = trim($message['CardId']);
  84. $OuterStr = trim($message['OuterStr']);
  85. $code = trim($message['UserCardCode']);
  86. $form = new CardForm();
  87. $res = $form->bindSaas($code, $CardId, $fromUser, $OuterStr);
  88. \Yii::error([__METHOD__, $message, $res]);
  89. return '';
  90. }
  91. }