Я новичок в веб-сервисах php, и я задал этот вопрос раньше, но не смог получить полезные решения, поэтому я попытался перефразировать его. Я пытаюсь выслушать ответ от API и обновить мою базу данных, как то, что сделано службой IPN PayPal. Сценарий, который я до сих пор хорошо работает, когда вы запускаете его в браузере, и я получаю ответ json обратно через POST, но API позже отправляет другой ответ без участия браузера/клиента, и я хочу, чтобы он общался на мой php-скрипт на сервере и обновить базу данных. API имеет поле notifyURL, которое требуется для отправки этих уведомлений, и я установил его в тот же файл, который отправляет запрос. Ниже приведен код, который я до сих пор:Создал службу прослушивания ответа с php и curl так же, как paypal IPN
if($ch !== false){
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
//Attach our encoded JSON string to the POST fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//Set the content type to application/json
// curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json;odata=verbose',
'Content-length:' . strlen($jsonDataEncoded))
);
}
//Execute the request
$result = curl_exec($ch);
if ($result === false){
curl_close($ch);
echo "Error".curl_errno($ch). "\n";
}else {
curl_close($ch);
$decoded = json_decode($result, true);
// echo '<pre>';
// var_dump($decoded["paymentAmount"]["totalAmountCharged"]);
// die;
$data['unique_id'] = $decoded["clientCorrelator"];
$data['subscriber_number'] = $decoded["endUserId"];
$data['payment_status'] = $decoded["transactionOperationStatus"];
$data['payment_gross'] = $decoded["paymentAmount"]["totalAmountCharged"];
$data['txn_id'] = $decoded["ecocashReference"];
$this->payments->insertTransaction($data);
die;
Что мне нужно добавить в сценарий для меня, чтобы достичь своей цели с помощью завиток и PHP. API возвращает ответ json ниже, и я пытаюсь его прослушать и обновлять определенные поля в базе данных.
{"id":71109,"version":0,"clientCorrelator":"58ada3aec8615","endTime":null,"startTime":1487774641697,"notifyUrl":"http://website/ecocash_send/transaction","referenceCode":"17589","endUserId":"774705932","serverReferenceCode":"2202201716440169792864","transactionOperationStatus":"PENDING SUBSCRIBER VALIDATION","paymentAmount":{"id":71110,"version":0,"charginginformation":{"id":71112,"version":0,"amount":1,"currency":"USD","description":" Bulk Sms Online payment"},"chargeMetaData":{"id":71111,"version":0,"channel":"WEB","purchaseCategoryCode":"Online Payment","onBeHalfOf":"PAMONMEFT","serviceId":null},"totalAmountCharged":null},"ecocashReference":"MP170222.1644.A00059","merchantCode":"0000","merchantPin":"000","merchantNumber":"771999313","notificationFormat":null,"serviceId":null,"originalServerReferenceCode":null}"
спасибо. Итак, вы говорите, что этого сценария php и curl достаточно, чтобы получить ответ от API? – tendaitakas
Должен признаться, я не уверен, почему вы используете cURL, конечно, API передаст вам некоторые данные, описывающие то, что он говорит вам. Все, что вам нужно сделать, это изменить свою базу данных с помощью этой информации. – RiggsFolly
Я использую curl для отправки моего json и получаю ответ на: ** $ result = curl_exec ($ ch); ** – tendaitakas