是否可以通过新闻稿2go的REST API添加新收件人?
我这样试过(片段):
public function subscribeAction()
{
$this->init();
$email = $this->getRequest()->getParam('email');
$gender = $this->getRequest()->getParam('gender');
$first_name = $this->getRequest()->getParam('first_name');
$last_name = $this->getRequest()->getParam('last_name');
$endpoint = "/recipients";
$data = array(
"list_id" => $this->listId,
"email" => $email,
"gender" => $gender,
"first_name" => $first_name,
"last_name" => $last_name,
);
$response = $this->curl($endpoint, $data);
var_dump($response);
}
/**
* @param $endpoint string the endpoint to call (see docs.newsletter2go.com)
* @param $data array tha data to submit. In case of POST and PATCH its submitted as the body of the request. In case of GET and PATCH it is used as GET-Params. See docs.newsletter2go.com for supported parameters.
* @param string $type GET,PATCH,POST,DELETE
* @return \stdClass
* @throws \Exception
*/
public function curl($endpoint, $data, $type = "GET")
{
if (!isset($this->access_token) || strlen($this->access_token) == 0) {
$this->getToken();
}
if (!isset($this->access_token) || strlen($this->access_token) == 0) {
throw new \Exception("Authentication failed");
}
return $this->_curl('Bearer ' . $this->access_token, $endpoint, $data, $type);
}
private function _curl($authorization, $endpoint, $data, $type = "GET")
{
$ch = curl_init();
$data_string = json_encode($data);
$get_params = "";
if ($type == static::METHOD_POST || $type == static::METHOD_PATCH) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
if ($type == static::METHOD_POST) {
curl_setopt($ch, CURLOPT_POST, true);
}
} else {
if ($type == static::METHOD_GET || $type == static::METHOD_DELETE) {
$get_params = "?" . http_build_query($data);
} else {
throw new \Exception("Invalid HTTP method: " . $type);
}
}
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $type);
curl_setopt($ch, CURLOPT_URL, static::BASE_URL . $endpoint . $get_params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Authorization: ' . $authorization,
'Content-Length: ' . ($type == static::METHOD_GET || $type == static::METHOD_DELETE) ? 0 : strlen($data_string)
));
if (!$this->sslVerification) {
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response);
}
https://docs.newsletter2go.com/#!/Recipient/createRecipient
但是我得到了一个大的响应对象,即使我只尝试添加一个收件人,而新的收件人没有添加到列表中。
object(stdClass)#188 (3) {
["status"]=>
int(200)
["info"]=>
object(stdClass)#169 (3) {
["links"]=>
object(stdClass)#43 (3) {
["_href"]=>
string(60) "https://api.newsletter2go.com/recipients?_limit=50&_offset=0"
["_next"]=>
string(61) "https://api.newsletter2go.com/recipients?_limit=50&_offset=50"
["_last"]=>
string(63) "https://api.newsletter2go.com/recipients?_limit=50&_offset=3433"
}
["count"]=>
int(3483)
["additional"]=>
object(stdClass)#167 (1) {
["active"]=>
int(0)
}
}
["value"]=>
array(50) {
[0]=>
object(stdClass)#85 (2) {
["_href"]=>
string(49) "https://api.newsletter2go.com/recipients/n9yldrar"
["id"]=>
string(8) "n9yldrar"
}
[1]=>
object(stdClass)#185 (2) {
["_href"]=>
string(49) "https://api.newsletter2go.com/recipients/pgwvgwmr"
["id"]=>
string(8) "pgwvgwmr"
}
...
[49]=>
object(stdClass)#87 (2) {
["_href"]=>
string(49) "https://api.newsletter2go.com/recipients/usa0dx4n"
["id"]=>
string(8) "usa0dx4n"
}