init
This commit is contained in:
226
vendor/overtrue/wechat/src/OfficialAccount/TemplateMessage/Client.php
vendored
Normal file
226
vendor/overtrue/wechat/src/OfficialAccount/TemplateMessage/Client.php
vendored
Normal file
@@ -0,0 +1,226 @@
|
||||
<?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\OfficialAccount\TemplateMessage;
|
||||
|
||||
use EasyWeChat\Kernel\BaseClient;
|
||||
use EasyWeChat\Kernel\Exceptions\InvalidArgumentException;
|
||||
use ReflectionClass;
|
||||
|
||||
/**
|
||||
* Class Client.
|
||||
*
|
||||
* @author overtrue <i@overtrue.me>
|
||||
*/
|
||||
class Client extends BaseClient
|
||||
{
|
||||
public const API_SEND = 'cgi-bin/message/template/send';
|
||||
|
||||
/**
|
||||
* Attributes.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $message = [
|
||||
'touser' => '',
|
||||
'template_id' => '',
|
||||
'url' => '',
|
||||
'data' => [],
|
||||
'miniprogram' => '',
|
||||
];
|
||||
|
||||
/**
|
||||
* Required attributes.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $required = ['touser', 'template_id'];
|
||||
|
||||
/**
|
||||
* Set industry.
|
||||
*
|
||||
* @param int $industryOne
|
||||
* @param int $industryTwo
|
||||
*
|
||||
* @return \Psr\Http\Message\ResponseInterface|\EasyWeChat\Kernel\Support\Collection|array|object|string
|
||||
*
|
||||
* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function setIndustry($industryOne, $industryTwo)
|
||||
{
|
||||
$params = [
|
||||
'industry_id1' => $industryOne,
|
||||
'industry_id2' => $industryTwo,
|
||||
];
|
||||
|
||||
return $this->httpPostJson('cgi-bin/template/api_set_industry', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get industry.
|
||||
*
|
||||
* @return \Psr\Http\Message\ResponseInterface|\EasyWeChat\Kernel\Support\Collection|array|object|string
|
||||
*
|
||||
* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function getIndustry()
|
||||
{
|
||||
return $this->httpPostJson('cgi-bin/template/get_industry');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a template and get template ID.
|
||||
*
|
||||
* @param string $shortId
|
||||
*
|
||||
* @return \Psr\Http\Message\ResponseInterface|\EasyWeChat\Kernel\Support\Collection|array|object|string
|
||||
*
|
||||
* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function addTemplate($shortId)
|
||||
{
|
||||
$params = ['template_id_short' => $shortId];
|
||||
|
||||
return $this->httpPostJson('cgi-bin/template/api_add_template', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get private templates.
|
||||
*
|
||||
* @return \Psr\Http\Message\ResponseInterface|\EasyWeChat\Kernel\Support\Collection|array|object|string
|
||||
*
|
||||
* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function getPrivateTemplates()
|
||||
{
|
||||
return $this->httpPostJson('cgi-bin/template/get_all_private_template');
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete private template.
|
||||
*
|
||||
* @param string $templateId
|
||||
*
|
||||
* @return \Psr\Http\Message\ResponseInterface|\EasyWeChat\Kernel\Support\Collection|array|object|string
|
||||
*
|
||||
* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function deletePrivateTemplate($templateId)
|
||||
{
|
||||
$params = ['template_id' => $templateId];
|
||||
|
||||
return $this->httpPostJson('cgi-bin/template/del_private_template', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a template message.
|
||||
*
|
||||
* @return \Psr\Http\Message\ResponseInterface|\EasyWeChat\Kernel\Support\Collection|array|object|string
|
||||
*
|
||||
* @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
|
||||
* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function send(array $data = [])
|
||||
{
|
||||
$params = $this->formatMessage($data);
|
||||
|
||||
$this->restoreMessage();
|
||||
|
||||
return $this->httpPostJson(static::API_SEND, $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send template-message for subscription.
|
||||
*
|
||||
* @return \Psr\Http\Message\ResponseInterface|\EasyWeChat\Kernel\Support\Collection|array|object|string
|
||||
*
|
||||
* @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
|
||||
* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
|
||||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||
*/
|
||||
public function sendSubscription(array $data = [])
|
||||
{
|
||||
$params = $this->formatMessage($data);
|
||||
|
||||
$this->restoreMessage();
|
||||
|
||||
return $this->httpPostJson('cgi-bin/message/template/subscribe', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*
|
||||
* @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
|
||||
*/
|
||||
protected function formatMessage(array $data = [])
|
||||
{
|
||||
$params = array_merge($this->message, $data);
|
||||
|
||||
foreach ($params as $key => $value) {
|
||||
if (in_array($key, $this->required, true) && empty($value) && empty($this->message[$key])) {
|
||||
throw new InvalidArgumentException(sprintf('Attribute "%s" can not be empty!', $key));
|
||||
}
|
||||
|
||||
$params[$key] = empty($value) ? $this->message[$key] : $value;
|
||||
}
|
||||
|
||||
$params['data'] = $this->formatData($params['data'] ?? []);
|
||||
|
||||
return $params;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
protected function formatData(array $data)
|
||||
{
|
||||
$formatted = [];
|
||||
|
||||
foreach ($data as $key => $value) {
|
||||
if (is_array($value)) {
|
||||
if (\array_key_exists('value', $value)) {
|
||||
$formatted[$key] = $value;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (count($value) >= 2) {
|
||||
$value = [
|
||||
'value' => $value[0],
|
||||
'color' => $value[1],
|
||||
];
|
||||
}
|
||||
} else {
|
||||
$value = [
|
||||
'value' => strval($value),
|
||||
];
|
||||
}
|
||||
|
||||
$formatted[$key] = $value;
|
||||
}
|
||||
|
||||
return $formatted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore message.
|
||||
*/
|
||||
protected function restoreMessage()
|
||||
{
|
||||
$this->message = (new ReflectionClass(static::class))->getDefaultProperties()['message'];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user