Как использовать API Constant Contact? - PullRequest
4 голосов
/ 22 сентября 2009

Я хочу использовать API постоянного контакта и хочу вставлять электронную почту пользователя с помощью PHP при регистрации пользователя на сайте.

Пожалуйста, ответьте, если есть какая-либо помощь.

Заранее спасибо.

Ответы [ 3 ]

10 голосов
/ 07 октября 2009
// fill in your Constant Contact login and API key
$ccuser = 'USERNAME_HERE';
$ccpass = 'PASS_HERE';
$cckey  = 'APIKEY_HERE';

// fill in these values 
$firstName  = "";
$lastName   = "";
$emailAddr  = "";
$zip        = "";

// represents the contact list identification number(s)
$contactListId = INTEGER_OR_ARRAY_OF_INTEGERS_HERE;
$contactListId = (!is_array($contactListId)) ? array($contactListId) : $contactListId;

$post = new SimpleXMLElement('<entry></entry>');
$post->addAttribute('xmlns', 'http://www.w3.org/2005/Atom');

$title = $post->addChild('title', "");
$title->addAttribute('type', 'text');

$post->addChild('updated', date('c'));
$post->addChild('author', "");
$post->addChild('id', 'data:,none');

$summary = $post->addChild('summary', 'Contact');
$summary->addAttribute('type', 'text');

$content = $post->addChild('content');
$content->addAttribute('type', 'application/vnd.ctct+xml');

$contact = $content->addChild('Contact');
$contact->addAttribute('xmlns', 'http://ws.constantcontact.com/ns/1.0/');

$contact->addChild('EmailAddress', $emailAddr);
$contact->addChild('FirstName', $firstName);
$contact->addChild('LastName', $lastName);
$contact->addChild('PostalCode', $zip);
$contact->addChild('OptInSource', 'ACTION_BY_CUSTOMER');

$contactlists = $contact->addChild('ContactLists');

// loop through each of the defined contact lists
foreach($contactListId AS $listId) {
    $contactlist = $contactlists->addChild('ContactList');
    $contactlist->addAttribute('id', 'http://api.constantcontact.com/ws/customers/' . $ccuser . '/lists/' . $listId);
}

$posturl = "https://api.constantcontact.com/ws/customers/{$ccuser}/contacts";
$authstr = $cckey . '%' . $ccuser . ':' . $ccpass;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $posturl);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $authstr);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post->asXML());
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type:application/atom+xml"));
curl_setopt($ch, CURLOPT_HEADER, false); // Do not return headers
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); // If you set this to 0, it will take you to a page with the http response

$response = curl_exec($ch);

curl_close($ch);

// returns true on success, false on error
return (!is_numeric($response));
2 голосов
/ 22 августа 2013

Разработчики ConstantContact запустили PHP-библиотеку для решения подобных задач.

Следующая версия предназначена для более старых версий PHP (5.2 или ниже). Скачать код отсюда: https://github.com/constantcontact/ctct_php_library

Ниже приведен пример добавления электронной почты подписчика в постоянные списки контактов.

После загрузки вышеуказанной библиотеки используйте следующий код, чтобы добавить электронное письмо в списки постоянных контактов.

<code>session_start();
include_once('ConstantContact.php'); // Set path accordingly
$username = 'YOUR_CONSTANT_CONTACT_USER_NAME';
$apiKey = 'YOUR_API_KEY';
$password = 'YOUR_CONSTANT_CONTACT_PASSWORD';

$ConstantContact = new Constantcontact("basic", $apiKey, $username, $password);

$emailAddress = "new_email@test.com";

// Search for our new Email address
$search = $ConstantContact->searchContactsByEmail($emailAddress);

// If the search did not return a contact object
if($search == false){

    $Contact = new Contact();
    $Contact->emailAddress = $emailAddress;
    //$Contact->firstName = $firstName;
    //$Contact->lastName = $lastName;
    // represents the contact list identification link(s)
    $contactList = LINK_OR_ARRAY_OF_LINKS_HERE;
    // For example, 
    // "http://api.constantcontact.com/ws/customers/USER_NAME/lists/14"; 
    $Contact->lists = (!is_array($contactList)) ? array($contactList) : $contactList;


    $NewContact = $ConstantContact->addContact($Contact);
    if($NewContact){
        echo "Contact Added. This is your newly created contact's information<br /><pre>";
        print_r($NewContact);
        echo "
"; } } еще { echo "Контакт уже существует."; }

Примечание. Последнюю версию можно найти по ссылкам GitHub, указанным в следующем URL: http://developer.constantcontact.com/libraries/sample-code.html Но я не уверен, работает ли приведенный выше пример кода с более новой библиотекой.

1 голос
/ 15 декабря 2011

Если вы не можете заставить это работать, вам, возможно, придется добавить это curl_setopt:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
...