ipn.php не вызывается Sandbox Paypal - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть учетная запись PayPal, и я хочу осуществлять транзакции PayPal на своем сайте.Для тестового платежа я использую среду Sandbox.

Я могу перенаправить пользователя на страницу PayPal в песочнице, я могу заплатить с помощью учетной записи покупателя по умолчанию в песочнице и, в конце концов, я также перенаправлен обратно на свой сайт.Это здорово.

Проблема в том, что ipn.php (URL уведомления) не вызывается в песочнице PayPal.Я бы знал, если это называется, потому что файл отправляет мне письмо в начале.Я сделал все, что знал.

Странно, что из IPN Simulator вызывается ipn.php.

Я также создал новые учетные записи Sandbox из developer.paypal.com/developer/accounts/create, но даже не получилподтверждение по электронной почте, чтобы подтвердить их.И все же, ipn.php не вызывался Sandbox PayPal при использовании новых учетных записей песочницы.

Я пробовал несколько дней, но больше ничего не могу попробовать.Интернет и PayPal песочница Документация говорит, что учетные записи песочницы по умолчанию уже подтверждены.Поэтому теоретически пришлось вызвать ipn.php file.

Вам не нужно беспокоиться о пути ipn.php.Я проверял много раз.Это хороший.

Это код:

$exCheckout = new \PaypalExpressCheckout\Request\SetExpressCheckout();
$exCheckout->setUsername($_config['apikeys']['paypal_username'])
           ->setPassword($_config['apikeys']['paypal_password'])
           ->setSignature($_config['apikeys']['paypal_signature'])
           ->setSandbox()

            ->setQueryParameter('NOTIFYURL', $_base . 'models/paypal/ipn.php')
            ->setQueryParameter('RETURNURL', route('hotel-thank-you', $_id_booking))
            ->setQueryParameter('CANCELURL', (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http" . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"))

            ->setQueryParameter('PAYMENTREQUEST_0_PAYMENTACTION', 'Sale')
            ->setQueryParameter('PAYMENTREQUEST_0_AMT', $_card_price)
            ->setQueryParameter('PAYMENTREQUEST_0_CURRENCYCODE', 'EUR')

            ->setQueryParameter('NOSHIPPING', '1')
            ->setQueryParameter('LOGOIMG', $_base.'static/img/logo.png');

if (!$exCheckout->isValid()) {
    throw new Exception('Missing Parameters: ' . implode(', ', $exCheckout->determineMissingFields()));
}
$paypalResponse = $exCheckout->send();
if ($paypalResponse->isSuccess()) {
    db_query('UPDATE booking SET paypal_token = ? WHERE id_booking = ?',
        $paypalResponse->getParameter('TOKEN'),
        $_id_booking
    );

    $paypalResponse->setSandbox();
    $paypalResponse->authorize();
}
else {
    die('No Success PayPal checkout');
}

Можете ли вы помочь мне?

1 Ответ

0 голосов
/ 27 сентября 2018

Сначала убедитесь, что у вас есть бизнес-аккаунт в Sandbox или на рабочем месте.

Затем выполните следующие шаги, и PayPal попадет на ваш URL для уведомления.

  1. Войдите в свой бизнес PayPal.аккаунт на www.paypal.com.
  2. В меню «Профиль» в правом верхнем углу нажмите «Профиль и настройки».

Нажмите «Мои инструменты продаж».

Примечание.Если вы не видите значок профиля в правом верхнем углу, выберите «Моя учетная запись»> «Профиль»> «Мои инструменты продаж».

Нажмите ссылку «Обновить» в строке «Уведомления о мгновенных платежах» в разделе «Получение оплаты и управление моим риском». Нажмите «Выбор параметров IPN», чтобы указать URL-адрес слушателя и активировать его.Откроется следующая страница

enter image description here

Укажите URL-адрес слушателя в поле URL-адрес уведомления. Нажмите «Принимать сообщения IPN» (включено), чтобы включить прослушиватель. Нажмите «Сохранить».

Вы должны указать тот же URL-адрес уведомления в запросе, что и в настройках.

...