123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- <?php
- /*
- * This file is part of the overtrue/wechat.
- *
- * (c) overtrue <i@overtrue.me>
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
- namespace EasyWeChat\MiniProgram\UniformMessage;
- use EasyWeChat\Kernel\Exceptions\InvalidArgumentException;
- use EasyWeChat\OfficialAccount\TemplateMessage\Client as BaseClient;
- class Client extends BaseClient
- {
- const API_SEND = 'cgi-bin/message/wxopen/template/uniform_send';
- /**
- * {@inheritdoc}.
- *
- * @var array
- */
- protected $message = [
- 'touser' => '',
- ];
- /**
- * Weapp Attributes.
- *
- * @var array
- */
- protected $weappMessage = [
- 'template_id' => '',
- 'page' => '',
- 'form_id' => '',
- 'data' => [],
- 'emphasis_keyword' => '',
- ];
- /**
- * Official account attributes.
- *
- * @var array
- */
- protected $mpMessage = [
- 'appid' => '',
- 'template_id' => '',
- 'url' => '',
- 'miniprogram' => [],
- 'data' => [],
- ];
- /**
- * Required attributes.
- *
- * @var array
- */
- protected $required = ['touser', 'template_id', 'form_id', 'miniprogram', 'appid'];
- /**
- * @param array $data
- *
- * @return array
- *
- * @throws InvalidArgumentException
- */
- protected function formatMessage(array $data = [])
- {
- $params = array_merge($this->message, $data);
- if (empty($params['touser'])) {
- throw new InvalidArgumentException(sprintf('Attribute "touser" can not be empty!'));
- }
- if (!empty($params['weapp_template_msg'])) {
- $params['weapp_template_msg'] = $this->formatWeappMessage($params['weapp_template_msg']);
- }
- if (!empty($params['mp_template_msg'])) {
- $params['mp_template_msg'] = $this->formatMpMessage($params['mp_template_msg']);
- }
- return $params;
- }
- /**
- * @param array $data
- *
- * @return array
- *
- * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
- */
- protected function formatWeappMessage(array $data = [])
- {
- $params = $this->baseFormat($data, $this->weappMessage);
- $params['data'] = $this->formatData($params['data'] ?? []);
- return $params;
- }
- /**
- * @param array $data
- *
- * @return array
- *
- * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
- */
- protected function formatMpMessage(array $data = [])
- {
- $params = $this->baseFormat($data, $this->mpMessage);
- if (empty($params['miniprogram']['appid'])) {
- $params['miniprogram']['appid'] = $this->app['config']['app_id'];
- }
- $params['data'] = $this->formatData($params['data'] ?? []);
- return $params;
- }
- /**
- * @param array $data
- * @param array $default
- *
- * @return array
- *
- * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
- */
- protected function baseFormat($data = [], $default = [])
- {
- $params = array_merge($default, $data);
- foreach ($params as $key => $value) {
- if (in_array($key, $this->required, true) && empty($value) && empty($default[$key])) {
- throw new InvalidArgumentException(sprintf('Attribute "%s" can not be empty!', $key));
- }
- $params[$key] = empty($value) ? $default[$key] : $value;
- }
- return $params;
- }
- }
|