2016-06-17 1 views
0

Я разрабатываю код, который отправляет электронное письмо с нашего сайта через Infusionsoft API & XMLRPC.Нет методов, соответствующих аргументам: java.lang.String, java.util.HashMap XMLRPC infusionsoft

Вот мой код:

$email = $user_rec['email']; 
    $contactID=$user_rec['client_infusionid'];  
    echo $contactID; 

    $Subject = 'Your reset password request at GIC Deal Finders'; 

    $From = $this->GetFromAddress(); 

    $link = 'http://dashboard.gicdealfinders.info/resetpwd.php?email='. 
      urlencode($email).'&code='. 
      urlencode($this->GetResetPasswordCode($email)); 

    $htmlBody ='Hello '.$user_rec["name"].'<br/><br/>'. 
    'There was a request to reset your password at GIC Deal Finders<br/>'. 
    'Please click the link below to complete the request: <br/><a href="'.$link.'">'.$link.'</a><br/><br/>'. 
    '<br/>'. 
    'Regards,<br/>'. 
    'Toyin Dawodu, MBA<br/>'. 
    'Founder and Chief Relationship Officer'; 

    $clients = new xmlrpc_client("https://ze214.infusionsoft.com/api/xmlrpc"); 
    $clients->return_type = "phpvals"; 
    $clients->setSSLVerifyPeer(FALSE); 
    ###Build a Key-Value Array to store a contact### 
    $emailI = array(
    'contactList' => $contactID, 
    'fromAddress' => $From, 
    'toAddress' => $email, 
    'ccAddresses' => '[email protected]', 
    'bccAddresses' =>'[email protected]', 
    'contentType' => 'HTML', 
    'subject' => $Subject, 
    'htmlBody' => $htmlBody, 
    'textBody' => 'test'); 
    //$check=$myApp->sendEmail($clist,"[email protected]","~Contact.Email~", "","","Text","Test Subject","","This is the body"); 

    ###Set up the call### 
     $calls = new xmlrpcmsg("APIEmailService.sendEmail", array(
     php_xmlrpc_encode($this->infusion_api),   #The encrypted API key 
     php_xmlrpc_encode($emailI)  #The contact array 

     )); 

     ###Send the call### 
     $results = $clients->send($calls); 
     //$conID = $results->value(); 
     /*###Check the returned value to see if it was successful and set it to a variable/display the results###*/ 
     if(!$results->faultCode()) { 
      return true; 
      } else { 
       print $results->faultCode() . "<BR>"; 
       print $results->faultString() . "<BR>"; 
      return false; 
      } 

Захваченная ошибка показывает:

-1 
No method matching arguments: java.lang.String, java.util.HashMap 

Может кто-нибудь проверить свой код и показать мне путь, чтобы исправить это?

ответ

0

Как говорится в возвращенной ошибке, неправильные параметры отправляются в Infusionsoft API.

Список допустимых параметров приведен в Infusionsoft API documentation.

Прежде всего, вам нужно добавить ключ API как первого значения в $ emailI массива.

Кроме того, Infusionsoft API ожидает, что второй параметр будет списком контактных идентификаторов, что означает, что второй параметр $ ContactID должна быть отправлена ​​из стороны PHP как массив.

Следующий код показывает исправление:

$emailI = array(
    'yourApiKey', 
    array($contactID), 
    $From, 
    $email, 
    '[email protected]', 
    '[email protected]', 
    'HTML', 
    $Subject, 
    $htmlBody, 
    'test' 
); 
$calls = new xmlrpcmsg(
    "APIEmailService.sendEmail", 
    array_map('php_xmlrpc_encode', $emailI) 
); 

Пожалуйста, обратите внимание, что если у вас есть больше, чем просто один или два API вызовов Infusionsoft в вашем коде, то целесообразно использовать API Helper Libraries. Также вы можете найти другие обертки для Infusionsoft API по адресу github.com, если текущие официальные библиотеки-помощники не работают для вас.

+0

### Настройка вызова ### $ звонки = новый xmlrpcmsg ("APIEmailService.sendEmail", массив ( php_xmlrpc_encode ($ this-> infusion_api), #The зашифрованы API ключ php_xmlrpc_encode ($ emailI) # Контактная матрица )); в моем коде php_xmlrpc_encode ($ this-> infusion_api) хранить ключ api –

+0

Да, я это видел. Мой ответ устраняет ваши проблемы. Используйте свой $ this-> infusion_api вместо 'yourApiKey' – yuga

+0

, я проверю с ним и дам вам знать –