Я работаю с API, который задокументирован здесь: https://cutt.ly/BygHsPV
Документация немного тонкая, но я пытаюсь понять ее как можно лучше. До середины следующей недели не будет разработчика из создателя API, и я надеялся завершить работу до этого.
По сути, я пытаюсь обновить согласие клиент. Насколько я могу понять из документации в разделе API -> Customer, мне нужно отправить информацию через PUT в / customer / {customerId}. Этот объект имеет массив с именем "CommunicationChoices".
Переход в Объекты -> CustomerUpdate Я нахожу "CommunicationChoices", который указан как "Тип: список CommunicationChoiceRequest". Этот объект выглядит следующим образом:
{
"choice": true,
"typeCode": ""
}
Делая все возможное, понимаю это, я сделал эту функцию:
function update_customer_consent() {
global $userPhone, $username, $password;
// Use phone number to get correct user
$url = 'https://apiurlredacted.com/api/v1/customers/' . $userPhone .'?customeridtype=MOBILE';
// Initiate cURL.
$ch = curl_init( $url );
// Specify the username and password using the CURLOPT_USERPWD option.
curl_setopt( $ch, CURLOPT_USERPWD, $username . ":" . $password );
// Tell cURL to return the output as a string instead
// of dumping it to the browser.
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
// Data to send
$data = [
"communicationChoices" => [
"communicationChoiceRequest" => [
"choice" => true,
"typeCode" => "SMS"
]
]
];
$json_payload = json_encode($data);
print_r($json_payload);
// Set other options
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($json_payload)));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_payload);
// Execute the cURL request
$response = curl_exec($ch);
// Check for errors.
if( curl_errno( $ch ) ) :
// If an error occured, throw an Exception.
throw new Exception( curl_error( $ch ) );
endif;
if (!$response)
{
return false;
} else {
// Decode JSON
$obj = json_decode( $response );
}
print_r($response);
}
Я понимаю, что это очень трудно отладить, не зная, что в API и с ограниченной документацией, но я подумал, что спросить здесь все равно стоило.
По сути, $ json_payload, похоже, идеально подходит JSON объект. Ответ от API, однако, является кодом ошибки, который означает неизвестную ошибку. Поэтому я, должно быть, делаю что-то не так. Может быть, кто-то имеет больше опыта работы с API и такой документацией и может видеть, что я действительно должен отправлять и как.
Любая помощь или руководство будут высоко оценены!