2017-08-05 5 views
1

私はMemberMouse購読Wordpress Webサイトで作業しています。ユーザーがメンバーシップのためにWebフォームを介してサインアップした後、ダブルオプトインでMailchimpメーリングリストにユーザーを追加するスクリプトを呼びたいと思います。 MembermouseはMailchimpによる統合を提供していますが、オプトインは1つだけです。したがって、政府の法律のために、私は二重オプトインを使用する必要があります。Wordpressユーザーが購読した後、通知スクリプトによるMailchimpユーザーの追加(Membermouse)PHPとAPI

私はメンバーが追加されると、それは次のPHP sriptを送ることを条件と呼ばれるべき次のスクリプト、書いた:

<?php 

require_once("wp-load.php"); 
require_once("wp-content/plugins/membermouse/includes/mm-constants.php"); 
require_once("wp-content/plugins/membermouse/includes/init.php"); 


// Your Membermouse API URL 
$apiUrl = "MYDOMAIN/wp-content/plugins/membermouse/api/request.php"; 

// Your API key 
$apiKey = "my API key"; 

// Your API secret 
$apiSecret = "my API secret"; 


// ---- GET EVENT TYPE ---- 
if(!isset($_GET["mm_member_add"])) 
{ 
    // event type was not found, so exit 
    exit; 
} 


// ---- ACCESS DATA ---- 
// member data 
$username = $_GET["username"]; 
$email = $_GET["email"]; 


      $apiKey1 = 'my Mailchimp API key'; 
      $listID1 = 'my Mailchimp list ID'; 

      // MailChimp API URL 
      $memberID1 = md5(strtolower($email)); 
      $dataCenter1 = substr($apiKey1,strpos($apiKey1,'-')+1); 
      $url1 = 'https://' . $dataCenter1 . '.api.mailchimp.com/3.0/lists/' . $listID1 . '/members/' . $memberID1; 

      // member information 
      $json = json_encode([ 
        'email_address' => $email, 
        'status'  => 'pending',    
      ]); 

      // send a HTTP POST request with curl 
      $ch1 = curl_init($url1); 
      curl_setopt($ch1, CURLOPT_USERPWD, 'user:' . $apiKey1); 
      curl_setopt($ch1, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); 
      curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); 
      curl_setopt($ch1, CURLOPT_TIMEOUT, 10); 
      curl_setopt($ch1, CURLOPT_CUSTOMREQUEST, 'PUT'); 
      curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, false); 
      curl_setopt($ch1, CURLOPT_POSTFIELDS, $json); 
      $result1 = curl_exec($ch1); 
      $httpCode = curl_getinfo($ch1, CURLINFO_HTTP_CODE); 
      curl_close($ch1); 
     break; 

echo "<pre>".print_r($result1, true)."</pre>"; 

?> 

をしかし、それが応答しません。スクリプトが実行されます。

これまでのところとても良いです。しかし、私は数日から、このPHPを書くためにこれを動作させる方法を試しています。また、PHPコードが正しいかどうかはわかりません。これはちょうど前提でした。参照の場合

私はmembermouseからこのスクリプトを見つけました:https://dl.dropboxusercontent.com/u/265387542/files/member_notification_script.php

そしてMailchimpため、このスクリプト:https://www.codexworld.com/add-subscriber-to-list-mailchimp-api-php/

私は成功せず、しかし、これまでこれらの2を、結合しようとしました。あなたの現在のコードと

答えて

0

問題は、次のとおりです。

1)あなたがURLにMEMBERIDを供給している - これは、新しいユーザーを作成するには、POSTのために欲しいものではありません。そうする代わりに

$url1 = 'https://' . $dataCenter1 . '.api.mailchimp.com/3.0/lists/' . $listID1 . '/members/'; 

の代わりに。

2)あなたのcURL設定の一部が間違っています。あなたは

curl_setopt($ch1, CURLOPT_USERPWD, 'api_v3:' . $apiKey1); 
curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, true); 

は、高速応答@scottcwilsonため

curl_setopt($ch1, CURLOPT_CUSTOMREQUEST, 'PUT'); 
curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, false); 
1

感謝を取り除くしたいあなたのPOSTのフィールドでは、しかし、私はこのPHPファイルから応答はないます。

これが今どのように見えるかです:あなたが正しい、とどのように正しい

<?php 

require_once("wp-load.php"); 
require_once("wp-content/plugins/membermouse/includes/mm-constants.php"); 
require_once("wp-content/plugins/membermouse/includes/init.php"); 


// Your API URL 
$apiUrl = "MYDOMAIN/wp-content/plugins/membermouse/api/request.php"; 

// Your API key 
$apiKey = "My API key"; 

// Your API secret 
$apiSecret = "My API secret"; 


// ---- GET EVENT TYPE ---- 
if(!isset($_GET["mm_member_add"])) 
{ 
    // event type was not found, so exit 
    exit; 
} 


// ---- ACCESS DATA ---- 
// member data 
$username = $_GET["username"]; 
$email = $_GET["email"]; 


      $apiKey1 = 'Mailchimp API'; 
      $listID1 = 'Mailchimp List ID'; 

      // MailChimp API URL 
      $memberID1 = md5(strtolower($email)); 
      $dataCenter1 = substr($apiKey1,strpos($apiKey1,'-')+1); 
      $url1 = 'https://' . $dataCenter1 . '.api.mailchimp.com/3.0/lists/' . $listID1 . '/members/'; 

      // member information 
      $json = json_encode([ 
        'email_address' => $email, 
        'status'  => 'pending',    
      ]); 

      // send a HTTP POST request with curl 
      $ch1 = curl_init($url1); 
      curl_setopt($ch1, CURLOPT_USERPWD, 'api_v3:' . $apiKey1); 
      curl_setopt($ch1, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); 
      curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); 
      curl_setopt($ch1, CURLOPT_TIMEOUT, 10); 
      curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, true); 
      curl_setopt($ch1, CURLOPT_POSTFIELDS, $json); 
      $result1 = curl_exec($ch1); 
      $httpCode = curl_getinfo($ch1, CURLINFO_HTTP_CODE); 
      curl_close($ch1); 
     break; 

echo "<pre>".print_r($result1, true)."</pre>"; 

?> 

関連する問題