#php #paypal #paypal-adaptive-payments #adaptive-parallel-payment
#php #paypal #paypal-адаптивные платежи #адаптивный-параллельный-платеж
Вопрос:
Я произвел платеж через paypal adaptive payment и его успешно
затем я отправляю запрос на проверку, и я получил статус = ПРОВЕРЕНО
вот код :
function process_new() {
$req = 'cmd=_notify-validateamp;'.file_get_contents("php://input");
$ipnmsg=$this->decodePayPalIPN($req);
$ch = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
$res=curl_exec($ch);
curl_close($ch);
//if ($this->InstantPaymentNotification->is_valid($req))
if($res=='VERIFIED') // i got verified here
{
$txnIds=array();
$notifications = $this->InstantPaymentNotification->buildAssociationsFromIPN_new($ipnmsg);
foreach($notifications as $notification){
$this->IpnNotification->create();
$this->IpnNotification->save($notification);
$txnIds[]=$this->IpnNotification->id;
}
//$this->InstantPaymentNotificationNew->saveAll($notification);
$this->__processTransactionNew($txnIds);
}
//$this->redirect('/');
}
не удается найти причину, по которой notify_url продолжает нажимать.
Если потребуется дополнительная информация, я тоже ее опубликую…
Это история IPN :
`$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);`
он возвращает 200, но paypal по-прежнему показывает код состояния HTTP: 500
и URL-адрес уведомления:http://example.com/instant_payment_notifications/process_new не возвращает код состояния HTTP: 500
Спасибо.
Ответ №1:
Посмотрите внимательно на скриншот вашего PayPal: ваш сервер возвращает HTTP-код 500 на эти запросы, что означает, что PayPal интерпретирует это как плохую вещь и что HTTP-транзакция не была завершена успешно, и он будет повторять попытку, пока не получит 200 OK.
Проверьте конфигурацию вашего сервера. Вносили ли вы недавно изменения в конфигурацию вашего сервера? Если вы создадите свою собственную публикацию по URL-адресу конечной точки, вернет ли она вам код статуса 500? Был ли он отключен на техническое обслуживание в течение того времени, когда были отправлены эти запросы? Настройте некоторый мониторинг API, чтобы убедиться, что эти 500 ошибок не возникают часто.
Комментарии:
1. как я проверю это СООБЩЕНИЕ на ваш URL-адрес конечной точки, возвращающий код состояния http 500.
curl_setopt($curl, CURLOPT_URL, END_POINT_URL . $APIName . '/' . $APIOperation); where
END_POINT_URL=’ svcs.sandbox.paypal.com ‘; $APIName=’Адаптивные платежи’; $APIName=’Оплатить’;2. Просто создайте запрос, который имитирует запрос IPN PayPal, и получите код состояния. Я понятия не имею, почему вы просто вставили этот код туда…
3. URL-адрес конечной точки, на который я ссылаюсь, указан как «URL-адрес уведомления» на вашем скриншоте.
4. Создайте HTML-форму с действием, установленным для вашего IPN-URL, и включите скрытые поля, соответствующие параметрам, которые вы ожидаете получить от PayPal в IPN. Таким образом, вы можете загрузить его в браузере и отправить напрямую, чтобы увидеть результат на экране и избавиться от любых возникающих ошибок. Имейте в виду, что он не будет проверяться, когда вы делаете это таким образом, потому что данные поступили не от PayPal.
5. Вы также можете просто проверить журналы своего веб-сервера, которые должны содержать ту же информацию, которую вы увидите на экране в браузере. Вероятно, у вас просто какая-то синтаксическая ошибка или что-то происходит в вашем скрипте IPN.