fuc/vendor/alipaysdk/openapi/v3/src/Api/AlipayOpenPublicLifeMsgApi.php
2025-02-23 13:30:57 +08:00

986 lines
39 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* AlipayOpenPublicLifeMsgApi
* PHP version 7.4
*
* @category Class
* @package Alipay\OpenAPISDK
* @author OpenAPI Generator team
* @link https://openapi-generator.tech
*/
/**
* 支付宝开放平台API
*
* 支付宝开放平台v3协议文档
*
* The version of the OpenAPI document: 2024-05-20
* Generated by: https://openapi-generator.tech
* OpenAPI Generator version: 6.2.1
*/
/**
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
namespace Alipay\OpenAPISDK\Api;
use Alipay\OpenAPISDK\Util\AlipayConfigUtil;
use Alipay\OpenAPISDK\Util\AlipayLogger;
use Alipay\OpenAPISDK\Util\Model\CustomizedParams;
use GuzzleHttp\Client;
use GuzzleHttp\ClientInterface;
use GuzzleHttp\Exception\ConnectException;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Psr7\MultipartStream;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\RequestOptions;
use Alipay\OpenAPISDK\ApiException;
use Alipay\OpenAPISDK\Configuration;
use Alipay\OpenAPISDK\HeaderSelector;
use Alipay\OpenAPISDK\ObjectSerializer;
/**
* AlipayOpenPublicLifeMsgApi Class Doc Comment
*
* @category Class
* @package Alipay\OpenAPISDK
* @author OpenAPI Generator team
* @link https://openapi-generator.tech
*/
class AlipayOpenPublicLifeMsgApi
{
/**
* @var ClientInterface
*/
protected $client;
/**
* @var Configuration
*/
protected $config;
/**
* @var HeaderSelector
*/
protected $headerSelector;
/**
* @var int Host index
*/
protected $hostIndex;
/**
* @var AlipayConfigUtil
*/
protected $alipayConfigUtil;
/**
* @param ClientInterface $client
* @param Configuration $config
* @param HeaderSelector $selector
* @param int $hostIndex (Optional) host index to select the list of hosts if defined in the OpenAPI spec
* @param AlipayConfigUtil $alipayConfigUtil
*/
public function __construct(
ClientInterface $client = null,
Configuration $config = null,
HeaderSelector $selector = null,
$hostIndex = 0,
AlipayConfigUtil $alipayConfigUtil = null
) {
$this->client = $client ?: new Client();
$this->config = $config ?: new Configuration();
$this->headerSelector = $selector ?: new HeaderSelector();
$this->hostIndex = $hostIndex;
$this->alipayConfigUtil = $alipayConfigUtil ?: new AlipayConfigUtil();
}
/**
* @return AlipayConfigUtil
*/
public function getAlipayConfigUtil(): AlipayConfigUtil
{
return $this->alipayConfigUtil;
}
/**
* @param AlipayConfigUtil $alipayConfigUtil
*/
public function setAlipayConfigUtil(AlipayConfigUtil $alipayConfigUtil): void
{
$this->alipayConfigUtil = $alipayConfigUtil;
}
/**
* Set the host index
*
* @param int $hostIndex Host index (required)
*/
public function setHostIndex($hostIndex): void
{
$this->hostIndex = $hostIndex;
}
/**
* Get the host index
*
* @return int Host index
*/
public function getHostIndex()
{
return $this->hostIndex;
}
/**
* @return Configuration
*/
public function getConfig()
{
return $this->config;
}
/**
* Operation recall
*
* 生活号消息撤回接口
*
* @param \Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgRecallModel $alipayOpenPublicLifeMsgRecallModel alipayOpenPublicLifeMsgRecallModel (optional)
* @param CustomizedParams $customizedParams
*
* @throws \Alipay\OpenAPISDK\ApiException on non-2xx response
* @throws \InvalidArgumentException
* @return object|\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgRecallDefaultResponse
*/
public function recall($alipayOpenPublicLifeMsgRecallModel = null, CustomizedParams $customizedParams = null)
{
list($response) = $this->recallWithHttpInfo($alipayOpenPublicLifeMsgRecallModel, $customizedParams);
return $response;
}
/**
* Operation recallWithHttpInfo
*
* 生活号消息撤回接口
*
* @param \Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgRecallModel $alipayOpenPublicLifeMsgRecallModel (optional)
* @param CustomizedParams $customizedParams
*
* @throws \Alipay\OpenAPISDK\ApiException on non-2xx response
* @throws \InvalidArgumentException
* @return array of object|\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgRecallDefaultResponse, HTTP status code, HTTP response headers (array of strings)
*/
public function recallWithHttpInfo($alipayOpenPublicLifeMsgRecallModel = null, CustomizedParams $customizedParams = null)
{
$request = $this->recallRequest($alipayOpenPublicLifeMsgRecallModel, $customizedParams);
try {
$options = $this->createHttpClientOption();
try {
$response = $this->client->send($request, $options);
} catch (RequestException $e) {
if ($e->getResponse()) {
//验签
$this->alipayConfigUtil->verifyResponse((string)$e->getResponse()->getBody(),
$e->getResponse()->getHeaders(), true);
}
AlipayLogger::logBizError("code:{$e->getCode()}, message:{$e->getMessage()}");
throw new ApiException(
"[{$e->getCode()}] {$e->getMessage()}",
(int) $e->getCode(),
$e->getResponse() ? $e->getResponse()->getHeaders() : null,
$e->getResponse() ? (string) $e->getResponse()->getBody() : null
);
} catch (ConnectException $e) {
AlipayLogger::logBizError("code:{$e->getCode()}, message:{$e->getMessage()}");
throw new ApiException(
"[{$e->getCode()}] {$e->getMessage()}",
(int) $e->getCode(),
null,
null
);
}
$statusCode = $response->getStatusCode();
if ($statusCode < 200 || $statusCode > 299) {
//验签
$bodyStr = (string)$response->getBody();
$this->alipayConfigUtil->verifyResponse($bodyStr, $response->getHeaders(), true);
AlipayLogger::logBizError("code:{$statusCode}, message:{$bodyStr}");
throw new ApiException(
sprintf(
'[%d] Error connecting to the API (%s)',
$statusCode,
(string) $request->getUri()
),
$statusCode,
$response->getHeaders(),
$bodyStr
);
}
switch($statusCode) {
case 200:
if ('object' === '\SplFileObject') {
$content = $response->getBody(); //stream goes to serializer
} else {
$content = (string) $response->getBody();
//验签
$this->alipayConfigUtil->verifyResponse($content, $response->getHeaders(), false);
//解密
$content = $this->alipayConfigUtil->decrypt($content);
if ('object' !== 'string') {
$content = json_decode($content);
}
}
AlipayLogger::logBizResponseInfo($response->getStatusCode(), $content, $response->getHeaders());
return [
ObjectSerializer::deserialize($content, 'object', []),
$response->getStatusCode(),
$response->getHeaders()
];
default:
if ('\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgRecallDefaultResponse' === '\SplFileObject') {
$content = $response->getBody(); //stream goes to serializer
} else {
$content = (string) $response->getBody();
//验签
$this->alipayConfigUtil->verifyResponse($content, $response->getHeaders(), true);
if ('\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgRecallDefaultResponse' !== 'string') {
$content = json_decode($content);
}
}
AlipayLogger::logBizResponseInfo($response->getStatusCode(), $content, $response->getHeaders());
return [
//ObjectSerializer::deserialize($content, '\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgRecallDefaultResponse', []),
$content,
$response->getStatusCode(),
$response->getHeaders()
];
}
$returnType = 'object';
if ($returnType === '\SplFileObject') {
$content = $response->getBody(); //stream goes to serializer
} else {
$content = (string) $response->getBody();
//验签
$this->alipayConfigUtil->verifyResponse($content, $response->getHeaders(), false);
//解密
$content = $this->alipayConfigUtil->decrypt($content);
if ($returnType !== 'string') {
$content = json_decode($content);
}
}
AlipayLogger::logBizResponseInfo($response->getStatusCode(), $content, $response->getHeaders());
return [
ObjectSerializer::deserialize($content, $returnType, []),
$response->getStatusCode(),
$response->getHeaders()
];
} catch (ApiException $e) {
switch ($e->getCode()) {
case 200:
$data = ObjectSerializer::deserialize(
$e->getResponseBody(),
'object',
$e->getResponseHeaders()
);
$e->setResponseObject($data);
break;
default:
//$data = ObjectSerializer::deserialize(
// $e->getResponseBody(),
// '\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgRecallDefaultResponse',
// $e->getResponseHeaders()
//);
//$e->setResponseObject($data);
break;
}
throw $e;
}
}
/**
* Operation recallAsync
*
* 生活号消息撤回接口
*
* @param \Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgRecallModel $alipayOpenPublicLifeMsgRecallModel (optional)
* @param CustomizedParams $customizedParams
*
* @throws \InvalidArgumentException
* @return \GuzzleHttp\Promise\PromiseInterface
* @deprecated
*/
public function recallAsync($alipayOpenPublicLifeMsgRecallModel = null, CustomizedParams $customizedParams = null)
{
return $this->recallAsyncWithHttpInfo($alipayOpenPublicLifeMsgRecallModel, $customizedParams)
->then(
function ($response) {
return $response[0];
}
);
}
/**
* Operation recallAsyncWithHttpInfo
*
* 生活号消息撤回接口
*
* @param \Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgRecallModel $alipayOpenPublicLifeMsgRecallModel (optional)
* @param CustomizedParams $customizedParams
*
* @throws \InvalidArgumentException
* @return \GuzzleHttp\Promise\PromiseInterface
* @deprecated
*/
public function recallAsyncWithHttpInfo($alipayOpenPublicLifeMsgRecallModel = null, CustomizedParams $customizedParams = null)
{
$returnType = 'object';
$request = $this->recallRequest($alipayOpenPublicLifeMsgRecallModel, $customizedParams);
return $this->client
->sendAsync($request, $this->createHttpClientOption())
->then(
function ($response) use ($returnType) {
if ($returnType === '\SplFileObject') {
$content = $response->getBody(); //stream goes to serializer
} else {
$content = (string) $response->getBody();
//验签
$this->alipayConfigUtil->verifyResponse($content, $response->getHeaders(), false);
//解密
$content = $this->alipayConfigUtil->decrypt($content);
if ($returnType !== 'string') {
$content = json_decode($content);
}
}
return [
ObjectSerializer::deserialize($content, $returnType, []),
$response->getStatusCode(),
$response->getHeaders()
];
},
function ($exception) {
$response = $exception->getResponse();
$statusCode = $response->getStatusCode();
//验签
$this->alipayConfigUtil->verifyResponse((string)$response->getBody(), $response->getHeaders(), true);
throw new ApiException(
sprintf(
'[%d] Error connecting to the API (%s)',
$statusCode,
$exception->getRequest()->getUri()
),
$statusCode,
$response->getHeaders(),
(string) $response->getBody()
);
}
);
}
/**
* Create request for operation 'recall'
*
* @param \Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgRecallModel $alipayOpenPublicLifeMsgRecallModel (optional)
* @param CustomizedParams $customizedParams
*
* @throws \InvalidArgumentException
* @return \GuzzleHttp\Psr7\Request
*/
public function recallRequest($alipayOpenPublicLifeMsgRecallModel = null, CustomizedParams $customizedParams = null)
{
$resourcePath = '/v3/alipay/open/public/life/msg/recall';
$formParams = [];
$queryParams = [];
$headerParams = [];
$httpBody = '';
$multipart = false;
$signContent = '';
$isEncrypt = $this->alipayConfigUtil->isEncrypt();
$headers = $this->headerSelector->selectHeaders(
['application/json'],
['application/json']
);
if ($headers['Content-Type'] === 'multipart/form-data') {
$multipart = true;
unset($headers['Content-Type']);
}
// for model (json/xml)
//自定义body内容
if (($customizedParams != null && !$this->getAlipayConfigUtil()->checkEmpty($customizedParams->getBodyContent()))
&& ($headers['Content-Type'] === 'application/json' || $isEncrypt)) {
$signContent = $this->alipayConfigUtil->encrypt($customizedParams->getBodyContent(), $headers, $multipart);
$httpBody = $signContent;
} elseif (isset($alipayOpenPublicLifeMsgRecallModel)) {
$signContent = \GuzzleHttp\json_encode(ObjectSerializer::sanitizeForSerialization($alipayOpenPublicLifeMsgRecallModel), JSON_UNESCAPED_UNICODE);
if ($headers['Content-Type'] === 'application/json' || $isEncrypt) {
$signContent = $this->alipayConfigUtil->encrypt($signContent, $headers, $multipart);
$httpBody = $signContent;
} else {
$httpBody = $alipayOpenPublicLifeMsgRecallModel;
}
} elseif (count($formParams) > 0) {
if ($multipart) {
$multipartContents = [];
foreach ($formParams as $formParamName => $formParamValue) {
$formParamValueItems = is_array($formParamValue) ? $formParamValue : [$formParamValue];
foreach ($formParamValueItems as $formParamValueItem) {
if (is_string($formParamValueItem)) {
$signContent = $formParamValueItem;
}
//加密时非文件字段对应的Content-Type类型为text/plain
if ($isEncrypt && is_string($formParamValueItem)) {
$signContent = $this->alipayConfigUtil->encrypt($formParamValueItem, $headers, true);
$multipartContents[] = [
'name' => $formParamName,
'contents' => $signContent,
'headers' => ['Content-Type' => 'text/plain']
];
} else {
$multipartContents[] = [
'name' => $formParamName,
'contents' => $formParamValueItem,
'headers' => ['Content-Type' => 'application/json']
];
}
}
}
// for HTTP post (form)
$httpBody = new MultipartStream($multipartContents);
} elseif ($headers['Content-Type'] === 'application/json') {
$signContent = $this->alipayConfigUtil->encrypt(\GuzzleHttp\json_encode($formParams, JSON_UNESCAPED_UNICODE), $headers);
$httpBody = $signContent;
} else {
// for HTTP post (form)
$signContent = $this->alipayConfigUtil->encrypt(ObjectSerializer::buildQuery($formParams), $headers);
$httpBody = $signContent;
}
}
if ($isEncrypt) {
$headers['alipay-encrypt-type'] = $this->alipayConfigUtil->getEncryptType();
//除文件上传接口,加密后Content-Type均为"text/plain"
if (!$multipart) {
$headers['Content-Type'] = 'text/plain';
}
}
if ($customizedParams != null) {
//额外query参数
if (is_array($customizedParams->getQueryParams()) && count($customizedParams->getQueryParams()) >= 0) {
foreach ($customizedParams->getQueryParams() as $k => $v) {
if (is_array($v)) {
$v = ObjectSerializer::serializeCollection($v, 'form');
}
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue($v, $k) ?? []);
}
}
if (!$this->alipayConfigUtil->checkEmpty($customizedParams->getAppAuthToken())) {
$headerParams["alipay-app-auth-token"] = $customizedParams->getAppAuthToken();
}
//额外非全局header参数
if (is_array($customizedParams->getHeaderParams()) && count($customizedParams->getHeaderParams()) >= 0) {
foreach ($customizedParams->getHeaderParams() as $k => $v) {
if (is_array($v)) {
$v = ObjectSerializer::serializeCollection($v, 'form');
}
$headerParams[$k] = ObjectSerializer::toHeaderValue($v);
}
}
}
$defaultHeaders = [];
if ($this->config->getUserAgent()) {
$defaultHeaders['User-Agent'] = $this->config->getUserAgent();
}
if ($this->config->getSdkVersion()) {
$defaultHeaders['alipay-sdk-version'] = $this->config->getSdkVersion();
}
$headers = array_merge(
$defaultHeaders,
$headerParams,
$headers
);
if (!array_key_exists('alipay-request-id', $headers)) {
$headers['alipay-request-id'] = $this->alipayConfigUtil->createUuid();
}
$query = ObjectSerializer::buildQuery($queryParams);
$url = $resourcePath . ($query ? "?{$query}" : '');
//加签
$this->alipayConfigUtil->sign('POST', $url, $signContent, $headers);
$basePath = $this->alipayConfigUtil->checkEmpty($this->alipayConfigUtil->getServerUrl()) ? $this->config->getHost() : $this->alipayConfigUtil->getServerUrl();
AlipayLogger::logBizInfo($basePath . $url, $signContent, 'POST', $multipart ? "multipart/form-data" : $headers['Content-Type'], $headers['alipay-request-id']);
return new Request(
'POST',
$basePath . $url,
$headers,
$httpBody
);
}
/**
* Operation send
*
* 生活号广播消息发送接口
*
* @param \SplFileObject $cover cover (optional)
* @param \Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendModel $data data (optional)
* @param CustomizedParams $customizedParams
*
* @throws \Alipay\OpenAPISDK\ApiException on non-2xx response
* @throws \InvalidArgumentException
* @return \Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendResponseModel|\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendDefaultResponse
*/
public function send($cover = null, $data = null, CustomizedParams $customizedParams = null)
{
list($response) = $this->sendWithHttpInfo($cover, $data, $customizedParams);
return $response;
}
/**
* Operation sendWithHttpInfo
*
* 生活号广播消息发送接口
*
* @param \SplFileObject $cover (optional)
* @param \Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendModel $data (optional)
* @param CustomizedParams $customizedParams
*
* @throws \Alipay\OpenAPISDK\ApiException on non-2xx response
* @throws \InvalidArgumentException
* @return array of \Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendResponseModel|\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendDefaultResponse, HTTP status code, HTTP response headers (array of strings)
*/
public function sendWithHttpInfo($cover = null, $data = null, CustomizedParams $customizedParams = null)
{
$request = $this->sendRequest($cover, $data, $customizedParams);
try {
$options = $this->createHttpClientOption();
try {
$response = $this->client->send($request, $options);
} catch (RequestException $e) {
if ($e->getResponse()) {
//验签
$this->alipayConfigUtil->verifyResponse((string)$e->getResponse()->getBody(),
$e->getResponse()->getHeaders(), true);
}
AlipayLogger::logBizError("code:{$e->getCode()}, message:{$e->getMessage()}");
throw new ApiException(
"[{$e->getCode()}] {$e->getMessage()}",
(int) $e->getCode(),
$e->getResponse() ? $e->getResponse()->getHeaders() : null,
$e->getResponse() ? (string) $e->getResponse()->getBody() : null
);
} catch (ConnectException $e) {
AlipayLogger::logBizError("code:{$e->getCode()}, message:{$e->getMessage()}");
throw new ApiException(
"[{$e->getCode()}] {$e->getMessage()}",
(int) $e->getCode(),
null,
null
);
}
$statusCode = $response->getStatusCode();
if ($statusCode < 200 || $statusCode > 299) {
//验签
$bodyStr = (string)$response->getBody();
$this->alipayConfigUtil->verifyResponse($bodyStr, $response->getHeaders(), true);
AlipayLogger::logBizError("code:{$statusCode}, message:{$bodyStr}");
throw new ApiException(
sprintf(
'[%d] Error connecting to the API (%s)',
$statusCode,
(string) $request->getUri()
),
$statusCode,
$response->getHeaders(),
$bodyStr
);
}
switch($statusCode) {
case 200:
if ('\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendResponseModel' === '\SplFileObject') {
$content = $response->getBody(); //stream goes to serializer
} else {
$content = (string) $response->getBody();
//验签
$this->alipayConfigUtil->verifyResponse($content, $response->getHeaders(), false);
//解密
$content = $this->alipayConfigUtil->decrypt($content);
if ('\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendResponseModel' !== 'string') {
$content = json_decode($content);
}
}
AlipayLogger::logBizResponseInfo($response->getStatusCode(), $content, $response->getHeaders());
return [
ObjectSerializer::deserialize($content, '\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendResponseModel', []),
$response->getStatusCode(),
$response->getHeaders()
];
default:
if ('\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendDefaultResponse' === '\SplFileObject') {
$content = $response->getBody(); //stream goes to serializer
} else {
$content = (string) $response->getBody();
//验签
$this->alipayConfigUtil->verifyResponse($content, $response->getHeaders(), true);
if ('\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendDefaultResponse' !== 'string') {
$content = json_decode($content);
}
}
AlipayLogger::logBizResponseInfo($response->getStatusCode(), $content, $response->getHeaders());
return [
//ObjectSerializer::deserialize($content, '\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendDefaultResponse', []),
$content,
$response->getStatusCode(),
$response->getHeaders()
];
}
$returnType = '\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendResponseModel';
if ($returnType === '\SplFileObject') {
$content = $response->getBody(); //stream goes to serializer
} else {
$content = (string) $response->getBody();
//验签
$this->alipayConfigUtil->verifyResponse($content, $response->getHeaders(), false);
//解密
$content = $this->alipayConfigUtil->decrypt($content);
if ($returnType !== 'string') {
$content = json_decode($content);
}
}
AlipayLogger::logBizResponseInfo($response->getStatusCode(), $content, $response->getHeaders());
return [
ObjectSerializer::deserialize($content, $returnType, []),
$response->getStatusCode(),
$response->getHeaders()
];
} catch (ApiException $e) {
switch ($e->getCode()) {
case 200:
$data = ObjectSerializer::deserialize(
$e->getResponseBody(),
'\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendResponseModel',
$e->getResponseHeaders()
);
$e->setResponseObject($data);
break;
default:
//$data = ObjectSerializer::deserialize(
// $e->getResponseBody(),
// '\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendDefaultResponse',
// $e->getResponseHeaders()
//);
//$e->setResponseObject($data);
break;
}
throw $e;
}
}
/**
* Operation sendAsync
*
* 生活号广播消息发送接口
*
* @param \SplFileObject $cover (optional)
* @param \Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendModel $data (optional)
* @param CustomizedParams $customizedParams
*
* @throws \InvalidArgumentException
* @return \GuzzleHttp\Promise\PromiseInterface
* @deprecated
*/
public function sendAsync($cover = null, $data = null, CustomizedParams $customizedParams = null)
{
return $this->sendAsyncWithHttpInfo($cover, $data, $customizedParams)
->then(
function ($response) {
return $response[0];
}
);
}
/**
* Operation sendAsyncWithHttpInfo
*
* 生活号广播消息发送接口
*
* @param \SplFileObject $cover (optional)
* @param \Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendModel $data (optional)
* @param CustomizedParams $customizedParams
*
* @throws \InvalidArgumentException
* @return \GuzzleHttp\Promise\PromiseInterface
* @deprecated
*/
public function sendAsyncWithHttpInfo($cover = null, $data = null, CustomizedParams $customizedParams = null)
{
$returnType = '\Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendResponseModel';
$request = $this->sendRequest($cover, $data, $customizedParams);
return $this->client
->sendAsync($request, $this->createHttpClientOption())
->then(
function ($response) use ($returnType) {
if ($returnType === '\SplFileObject') {
$content = $response->getBody(); //stream goes to serializer
} else {
$content = (string) $response->getBody();
//验签
$this->alipayConfigUtil->verifyResponse($content, $response->getHeaders(), false);
//解密
$content = $this->alipayConfigUtil->decrypt($content);
if ($returnType !== 'string') {
$content = json_decode($content);
}
}
return [
ObjectSerializer::deserialize($content, $returnType, []),
$response->getStatusCode(),
$response->getHeaders()
];
},
function ($exception) {
$response = $exception->getResponse();
$statusCode = $response->getStatusCode();
//验签
$this->alipayConfigUtil->verifyResponse((string)$response->getBody(), $response->getHeaders(), true);
throw new ApiException(
sprintf(
'[%d] Error connecting to the API (%s)',
$statusCode,
$exception->getRequest()->getUri()
),
$statusCode,
$response->getHeaders(),
(string) $response->getBody()
);
}
);
}
/**
* Create request for operation 'send'
*
* @param \SplFileObject $cover (optional)
* @param \Alipay\OpenAPISDK\Model\AlipayOpenPublicLifeMsgSendModel $data (optional)
* @param CustomizedParams $customizedParams
*
* @throws \InvalidArgumentException
* @return \GuzzleHttp\Psr7\Request
*/
public function sendRequest($cover = null, $data = null, CustomizedParams $customizedParams = null)
{
$resourcePath = '/v3/alipay/open/public/life/msg/send';
$formParams = [];
$queryParams = [];
$headerParams = [];
$httpBody = '';
$multipart = false;
$signContent = '';
$isEncrypt = $this->alipayConfigUtil->isEncrypt();
// form params
if ($cover !== null) {
$multipart = true;
$formParams['cover'] = [];
$paramFiles = is_array($cover) ? $cover : [$cover];
foreach ($paramFiles as $paramFile) {
$formParams['cover'][] = \GuzzleHttp\Psr7\Utils::tryFopen(
ObjectSerializer::toFormValue($paramFile),
'rb'
);
}
}
// form params
if ($data !== null) {
$formParams['data'] = \GuzzleHttp\json_encode(ObjectSerializer::sanitizeForSerialization($data), JSON_UNESCAPED_UNICODE);
}
//自定义body内容
if ($customizedParams != null && !$this->getAlipayConfigUtil()->checkEmpty($customizedParams->getBodyContent())) {
$formParams['data'] = $customizedParams->getBodyContent();
}
$headers = $this->headerSelector->selectHeaders(
['application/json'],
['multipart/form-data']
);
if ($headers['Content-Type'] === 'multipart/form-data') {
$multipart = true;
unset($headers['Content-Type']);
}
// for model (json/xml)
if (count($formParams) > 0) {
if ($multipart) {
$multipartContents = [];
foreach ($formParams as $formParamName => $formParamValue) {
$formParamValueItems = is_array($formParamValue) ? $formParamValue : [$formParamValue];
foreach ($formParamValueItems as $formParamValueItem) {
if (is_string($formParamValueItem)) {
$signContent = $formParamValueItem;
}
//加密时非文件字段对应的Content-Type类型为text/plain
if ($isEncrypt && is_string($formParamValueItem)) {
$signContent = $this->alipayConfigUtil->encrypt($formParamValueItem, $headers, true);
$multipartContents[] = [
'name' => $formParamName,
'contents' => $signContent,
'headers' => ['Content-Type' => 'text/plain']
];
} else {
$multipartContents[] = [
'name' => $formParamName,
'contents' => $formParamValueItem,
'headers' => ['Content-Type' => 'application/json']
];
}
}
}
// for HTTP post (form)
$httpBody = new MultipartStream($multipartContents);
} elseif ($headers['Content-Type'] === 'application/json') {
$signContent = $this->alipayConfigUtil->encrypt(\GuzzleHttp\json_encode($formParams, JSON_UNESCAPED_UNICODE), $headers);
$httpBody = $signContent;
} else {
// for HTTP post (form)
$signContent = $this->alipayConfigUtil->encrypt(ObjectSerializer::buildQuery($formParams), $headers);
$httpBody = $signContent;
}
}
if ($isEncrypt) {
$headers['alipay-encrypt-type'] = $this->alipayConfigUtil->getEncryptType();
//除文件上传接口,加密后Content-Type均为"text/plain"
if (!$multipart) {
$headers['Content-Type'] = 'text/plain';
}
}
if ($customizedParams != null) {
//额外query参数
if (is_array($customizedParams->getQueryParams()) && count($customizedParams->getQueryParams()) >= 0) {
foreach ($customizedParams->getQueryParams() as $k => $v) {
if (is_array($v)) {
$v = ObjectSerializer::serializeCollection($v, 'form');
}
$queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue($v, $k) ?? []);
}
}
if (!$this->alipayConfigUtil->checkEmpty($customizedParams->getAppAuthToken())) {
$headerParams["alipay-app-auth-token"] = $customizedParams->getAppAuthToken();
}
//额外非全局header参数
if (is_array($customizedParams->getHeaderParams()) && count($customizedParams->getHeaderParams()) >= 0) {
foreach ($customizedParams->getHeaderParams() as $k => $v) {
if (is_array($v)) {
$v = ObjectSerializer::serializeCollection($v, 'form');
}
$headerParams[$k] = ObjectSerializer::toHeaderValue($v);
}
}
}
$defaultHeaders = [];
if ($this->config->getUserAgent()) {
$defaultHeaders['User-Agent'] = $this->config->getUserAgent();
}
if ($this->config->getSdkVersion()) {
$defaultHeaders['alipay-sdk-version'] = $this->config->getSdkVersion();
}
$headers = array_merge(
$defaultHeaders,
$headerParams,
$headers
);
if (!array_key_exists('alipay-request-id', $headers)) {
$headers['alipay-request-id'] = $this->alipayConfigUtil->createUuid();
}
$query = ObjectSerializer::buildQuery($queryParams);
$url = $resourcePath . ($query ? "?{$query}" : '');
//加签
$this->alipayConfigUtil->sign('POST', $url, $signContent, $headers);
$basePath = $this->alipayConfigUtil->checkEmpty($this->alipayConfigUtil->getServerUrl()) ? $this->config->getHost() : $this->alipayConfigUtil->getServerUrl();
AlipayLogger::logBizInfo($basePath . $url, $signContent, 'POST', $multipart ? "multipart/form-data" : $headers['Content-Type'], $headers['alipay-request-id']);
return new Request(
'POST',
$basePath . $url,
$headers,
$httpBody
);
}
/**
* Create http client option
*
* @throws \RuntimeException on file opening failure
* @return array of http client options
*/
protected function createHttpClientOption()
{
$options = [];
if ($this->config->getDebug()) {
$options[RequestOptions::DEBUG] = fopen($this->config->getDebugFile(), 'a');
if (!$options[RequestOptions::DEBUG]) {
throw new \RuntimeException('Failed to open the debug file: ' . $this->config->getDebugFile());
}
}
return $options;
}
}