targito / targito-api
Targito API 实现
Requires
- php: ^7.2 | ^8.0
- ext-json: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.18
- guzzlehttp/psr7: ^1.8
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^8.5
Suggests
- ext-curl: Install curl for a better http implementation
- psr/http-message-implementation: A StreamInterface implementation for using attachments in transact files
README
如果你使用 Symfony 4 或 5,可以使用我们的 Symfony 扩展包。
安装
composer require targito/targito-api
使用
通过创建一个新的 \Targito\Api\TargitoApi
实例并提供正确的凭证来访问 API。
<?php use Targito\Api\TargitoApi; $api = new TargitoApi($credentials); // do stuff with api
获取凭证
凭证通过实现 \Targito\Api\Credentials\CredentialsInterface
的对象提供。
默认情况下有两个这样的类,分别是 \Targito\Api\Credentials\Credentials
和 \Targito\Api\Credentials\EnvironmentCredentials
。
Credentials
类接受您的账户 ID 和 API 密码作为构造函数参数,而 EnvironmentCredentials
从环境变量中获取它们(默认为 TARGITO_ACCOUNT_ID
和 TARGITO_API_PASSWORD
)。
<?php use Targito\Api\TargitoApi; use Targito\Api\Credentials\Credentials; use Targito\Api\Credentials\EnvironmentCredentials; // provide the credentials in constructor $credentials = new Credentials('my-account-id', 'my-api-password'); $api = new TargitoApi($credentials); // get them automatically from environment variables using default TARGITO_ACCOUNT_ID and TARGITO_API_PASSWORD variables $credentials = new EnvironmentCredentials(); $api = new TargitoApi($credentials); // customize the environment variables $credentials = new EnvironmentCredentials('MY_CUSTOM_ACCOUNT_ID_VARIABLE', 'MY_CUSTOM_API_PASSWORD_VARIABLE'); $api = new TargitoApi($credentials);
发送请求
HTTP 请求是通过实现 \Targito\Api\Http\HttpRequestInterface
的对象发送的。
有两个类实现了该接口,分别是 \Targito\Api\Http\Request\CurlHttpRequest
和 \Targito\Api\Http\Request\StreamHttpRequest
。
如果您没有提供 HTTP 请求的对象,则默认使用根据您的 PHP 设置选择的对象 - 如果启用了 curl
扩展,则使用 CurlHttpRequest
,否则使用 StreamHttpRequest
。
注意:如果可能的话,应始终使用 CurlHttpRequest
,因为 StreamHttpRequest
只是一个后备实现。
注意:该接口被认为是半内部接口 - 如果您提供自己的实现,请注意,可能会定期添加新方法,这可能会破坏您的实现。否则将保持向后兼容。
TargitoApi
类包含访问单个 API 模块(例如联系人、交易等)的方法,这些模块反过来包含发送 API 请求的方法。
<?php use Targito\Api\TargitoApi; use Targito\Api\Credentials\EnvironmentCredentials; use Targito\Api\DTO\Request\Contact\DeleteContactRequest; // get credentials from env variables and use the default http request implementation $api = new TargitoApi(new EnvironmentCredentials()); // get the contacts API module $contactsApi = $api->contacts(); $result = $contactsApi->deleteContact(DeleteContactRequest::fromArray([ 'id' => 'contact_id', 'origin' => 'contact_origin' ])); echo $result->jobId;
每个 API 方法都接受数据作为数组或相应的 DTO 对象。每个 DTO 对象也可以从数组创建。这些都是有效且功能等效的。
<?php use Targito\Api\TargitoApi; use Targito\Api\Credentials\EnvironmentCredentials; use Targito\Api\DTO\Request\Contact\DeleteContactRequest; $api = new TargitoApi(new EnvironmentCredentials()); // provide data as array $api->contacts()->deleteContact([ 'id' => 'contact_id', 'origin' => 'contact_origin' ]); // create the DeleteContactRequest from array $api->contacts()->deleteContact(DeleteContactRequest::fromArray([ 'id' => 'contact_id', 'origin' => 'contact_origin' ])); // create the DeleteContactRequest manually $deleteRequest = new DeleteContactRequest(); $deleteRequest->id = 'contact_id'; $deleteRequest->origin = 'contact_origin'; $api->contacts()->deleteContact($deleteRequest);
每个方法返回特定于该方法的结果(例如 AddContactResponse
、DeleteContactResponse
等)。请参阅各个类以获取可用属性的列表。
模块
联系人
通过在 API 对象上调用 contacts()
或手动构建 \Targito\Api\Endpoint\TargitoContactEndpoint
来访问该模块。
方法
添加联系人
- 请求数据:
\Targito\Api\DTO\Request\Contact\AddContactRequest
- 属性
- string
email
- 要添加的联系人的电子邮件 - string
origin
- 联系人来源 - bool
isOptedIn
- 联系人是否已注册 - bool
forbidReOptIn
(可选)- 是否禁止再次注册,如果联系人在数据库中已存在且已取消注册 - bool
forceDoubleReOptIn
(可选)- 是否强制注册,如果联系人在数据库中已存在 - array
consents
(可选)- 包含联系人已给予的同意的字符串数组 - array
columns
(可选)- 任何其他列(必须在 Targito 中定义),其中数组键是列名
- string
- 返回值
- class:
\Targito\Api\DTO\Response\Contact\AddContactResponse
- 属性
- string
id
- 联系人的 ID - bool
isOptedIn
- 联系人是否已注册 - bool
isOptedOut
- 联系人是否已取消注册 - bool
isNew
- 联系人是否是新创建的还是之前就存在的 - object
previousState
- 如果联系人在之前存在,此属性将是\Targito\Api\DTO\Contact\AddContactHistory
的实例,否则为 null。AddContactHistory
包含以下属性:bool isOptedIn
和bool isOptedOut
- string
- class:
- 请求数据:
addContactWithCheck
- 请求数据:
\Targito\Api\DTO\Request\Contact\AddContactWithCheckRequest
- 属性
- 与
addContact
相同的属性 - 字符串
contactListId
- 要检查联系人是否已存在的联系人列表的 UUID - 字符串
isInContactListMailingId
- 要发送给在contactListId
中已存在的联系人的交易消息的 UUID
- 与
- 返回值
- 类:
\Targito\Api\DTO\Response\Contact\AddContactWithCheckResponse
- 属性
- 与
addContact
相同的属性 - bool
isInContactList
- 联系人是否在请求中指定的联系人列表中
- 与
- 类:
- 请求数据:
editContact
- 请求数据:
\Targito\Api\DTO\Request\Contact\EditContactRequest
- 属性
- 字符串
email
- 正在编辑的联系人邮箱 - string
origin
- 联系人来源 - bool
isOptedIn
(可选)- 联系人是否已订阅 - array
consents
(可选)- 包含联系人已给予的同意的字符串数组 - array
columns
(可选)- 任何其他列(必须在 Targito 中定义),其中数组键是列名
- 字符串
- 返回值
- 类:
\Targito\Api\DTO\Response\Contact\EditContactResponse
- 属性
- bool
success
- 编辑是否成功
- bool
- 类:
- 请求数据:
deleteContact
- 请求数据:
\Targito\Api\DTO\Request\Contact\DeleteContactRequest
- 属性
- 字符串
id
- 联系人 ID - string
origin
- 联系人来源
- 字符串
- 返回值
- 类:
\Targito\Api\DTO\Response\Contact\DeleteContactResponse
- 属性
- 字符串
jobId
- 执行删除操作的作业 ID
- 字符串
- 类:
- 请求数据:
optOutContact
- 请求数据:
\Targito\Api\DTO\Request\Contact\OptOutContactRequest
- 属性
- 字符串
email
- 正在删除的联系人邮箱 - string
origin
- 联系人来源
- 字符串
- 返回值
- 类:
\Targito\Api\DTO\Response\Contact\OptOutContactResponse
- 属性
- bool
success
- 取消订阅是否成功
- bool
- 类:
- 请求数据:
exportContactById
- 请求数据:
\Targito\Api\DTO\Request\Contact\ExportContactByIdRequest
- 属性
- 字符串
id
- 联系人 ID - string
origin
- 联系人来源
- 字符串
- 返回值
- 类:
\Targito\Api\DTO\Response\Contact\ExportContactByIdResponse
- 属性
- 字符串
jobId
- 执行导出的作业 ID
- 字符串
- 类:
- 请求数据:
changeContactEmailAddress
- 请求数据:
\Targito\Api\DTO\Request\Contact\ChangeContactEmailAddressRequest
- 属性
- string
origin
- 联系人来源 - 字符串
oldEmail
- 原始邮箱地址 - 字符串
newEmail
- 新邮箱地址 - bool
mergeIfExists
- 如果设置为 true,并且新邮箱地址已存在,则将旧联系人和新联系人的所有事件合并为一个
- string
- 返回值
- 类:
\Targito\Api\DTO\Response\Contact\ChangeContactEmailAddressResponse
- 属性
- bool
success
- 更改邮箱是否成功
- bool
- 类:
- 请求数据:
Transact
通过在 api 对象上调用 transact()
或手动构造 \Targito\Api\Endpoint\TargitoTransactEndpoint
来访问此模块。
方法
sendEmail
- 请求数据:
\Targito\Api\DTO\Request\Transact\SendEmailRequest
- 属性
- 字符串
origin
- 网站源 - 字符串
email
- 收件人邮箱 - 字符串
mailingId
- 来自 Targito 的邮件 ID - 字符串
fromName
(可选)- 发件人姓名 - 字符串
fromEmail
(可选)- 发件人邮箱地址 - 字符串
replyTo
(可选)- 在邮件中用作 Reply-To 的邮箱地址 - DateTime
sendDateTime
(可选)- 邮件发送的日期和时间 - 数组
columns
(可选)- 变量名 => 值对的哈希表 - 数组
attachments
-(可选)要么是数组的数组,要么是\Targito\Api\DTO\Transact\Attachment
类的实例数组- Attachment 类构造函数参数
- 字符串
name
- 文件名 - 字符串
mediaType
- 文件的媒体类型(也称为 MIME 类型) - StreamInterface|stream|string - 文件内容,可以是字符串(文件的原始内容)、PHP 流(例如使用
fopen()
打开的文件)或 StreamInterface 的实例(如果您的应用程序使用 PSR-7 流的实现)
- 字符串
- 如果您以数组的形式提供附件,其结构如下
- 字符串
name
- 文件名 - 字符串
type
- 文件的媒体类型 - 字符串
data
- 文件内容的 base64 编码
- 字符串
- Attachment 类构造函数参数
- 字符串
- 返回值
- 类:
\Targito\Api\DTO\Response\Transact\SendEmailResponse
- 属性
- bool
success
- 操作是否成功
- bool
- 类:
- 请求数据:
sendMassEmail
- 请求数据:
\Targito\Api\DTO\Request\Transact\SendMassEmailRequest
- 属性
- 字符串
origin
- 网站源 - 数组
recipients
- 可以是数组数组的数组或者\Targito\Api\DTO\Transact\Recipient
类的实例数组- 收件人属性
- 字符串
email
- 收件人的电子邮件地址 - 数组
columns
(可选)- 变量名 => 值对的哈希表
- 字符串
- 收件人属性
- 字符串
mailingId
- 来自 Targito 的邮件 ID - 字符串
fromName
(可选)- 发件人姓名 - 字符串
fromEmail
(可选)- 发件人邮箱地址 - 字符串
replyTo
(可选)- 在邮件中用作 Reply-To 的邮箱地址 - DateTime
sendDateTime
(可选)- 邮件发送的日期和时间
- 字符串
- 返回值
- 类:
\Targito\Api\DTO\Response\Transact\SendMassEmailResponse
- 属性
- bool
success
- 操作是否成功
- bool
- 类:
- 请求数据: