2017-09-07 7 views
0

私はWordPress WebサイトにサインアップしてMailChimpメーリングリストにサインアップしようとしています。ここで私が使用している機能は次のとおりです。curlとphpを使用してMailChimpメーリングリストに電子メールを登録するには

function rb_signup_mailing_list($email, $username, $fname, $lname){ 
$api_key  = '<my_api_key>'; 
$datacenter  = '<my_data_center>'; 
$list_id  = '<my_list_id>'; 
$auth   = base64_encode('user:'. $api_key); 
$member_id  = md5(strtolower($email)); 
$status   = 'subscribed'; 
$merge_fields = ['FNAME' => $fname, 'LNAME' => $lname]; 

$data = array(
    //'apikey'  => $api_key, 
    'email_address' => $email, 
    'status'  => $status, 
    'merge_fields' => $merge_fields, 
); 
$data_string = json_encode($data); 

//$url = 'https://' . substr($api_key, strpos($api_key, '-')+1) . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/' .md5(strtolower($email)); 
//$url = 'https://' . substr($api_key, strpos($api_key, '-')+1) . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/'; 
$url = 'https://' . $datacenter . '.api.mailchimp.com/3.0/lists/' . $list_id . '/members/'; 


$ch = curl_init($url); 
// curl_setopt($ch, CURLOPT_URL, $url); 
// curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_HTTPHEADER, 
    array(
     'Content-Type: application/json', 
     'Authorization: Basic ' . $auth, 
     //'Content-Length: ' . strlen($data_string), 
    ) 
); 
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0'); 
curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $api_key); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
curl_setopt($ch, CURLOPT_POST, true); 
// curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $datastring); 



$result = curl_exec($ch); 
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

curl_close($ch); 

}

私はこのような関数を呼び出す:

rb_signup_mailing_list('[email protected]', 'my_username', 'Hans', 'Meyer'); 

$結果はcurl_exec後、次のものが含まれます

{"type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/","title":"Invalid Resource","status":400,"detail":"The resource submitted could not be validated. For field-specific details, see the 'errors' array.","instance":"","errors":[{"field":"","message":"Schema describes object, NULL found instead"}]} 

MailChimpにリクエストが表示されているのを見ることができますが、電子メールをリストに追加することはありません。私は間違って何をしていますか?

+0

'CURLOPT_USERAGENT'を 'MailChimp-API/3.0'に変更してみてください – Spartacus

+0

私はそれを試みましたが、結果は同じです。 –

答えて

2

変数$data_stringはサブスクライバデータを保持すると宣言していますが、CURLリクエストでは$datastringを使用しています。それらを同じ名前に更新してみてください。正常に動作するはずです。

+0

こんにちはJoel、$ data_stringはjson_encode($ data)です。 JSON形式でデータを送信する必要がありますか?いずれにしても、私は$ data_stringの代わりに$ dataを送信しようとしました。これは同じ結果です。 –

+0

@RobertBethgeはい、データ文字列変数の宣言にはその名前にアンダースコアが含まれていますが、CURLリクエストの変数には含まれていません。それは単純なエラーです。 :) –

+0

おっと!確かに!あなたはそれを持っています!今それは動作します!ありがとう、トン!午前2時にコーディングが大変.... –

関連する問題