Есть локальный Виртуальный сервер. К нему прокинут тунель через ngrok.
В настройках бизнес аккаунта
https://www.sandbox.paypal.com включено Мгновенное платежное уведомление (IPN). Адрес указан. Через Instant Payment Notification (IPN) simulator спокойно приходят уведомления.
Но. создаю платеж. Получаю ApprovedLink. Из аккаунта покупателя подтверждаю платеж. Переходит на страницу confirm. Уведомления не приходят.
public function actionPayment(): string
{
$paypal = new PaypalForm();
if ($paypal->load(Yii::$app->request->post()) && $paypal->validate()) {
$apiContext = new ApiContext(
new OAuthTokenCredential(
'-----', // ClientID
'-----' // ClientSecret
)
);
$apiContext->setConfig(
array(
'mode' => 'sandbox',
)
);
$payer = new Payer();
$payer->setPaymentMethod('paypal');
$item = new Item();
$item->setName('test pro 1')
->setCurrency('RUB')
->setQuantity(1)
->setSku("testpro1_01")
->setPrice(1000);
$itemList = new ItemList();
$itemList->setItems(array($item));
$payerInfo = new PayerInfo();
$payerInfo->setEmail('адрес@personal.example.com');
$payerInfo->setFirstName('Достоевский');
$payerInfo->setLastName('Александр');
$payer->setPayerInfo($payerInfo);
$amount = new Amount();
$amount->setTotal('1000.00');
$amount->setCurrency('RUB');
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription("Payment description");
$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl("/client/paypal/confirm")
->setCancelUrl("/client/paypal/cancel");
$payment = new Payment();
$payment->setIntent('sale')
->setPayer($payer)
->setTransactions(array($transaction))
->setRedirectUrls($redirectUrls);
try {
$payment->create($apiContext);
$billingService = new BillingService(Yii::$app->user->identity->id);
$billingService->createPayment($payment);
echo "<pre>";
echo $payment;
echo "\n\nRedirect user to approval_url: " . $payment->getApprovalLink() . "\n";
echo "</pre>";
die;
}
catch (PayPalConnectionException $ex) {
// This will print the detailed information on the exception.
//REALLY HELPFUL FOR DEBUGGING
echo "<pre>";
echo $ex->getData();
echo "</pre>";
die;
}
}
return $this->render('payment', [
'paypal' => $paypal,
]);
}
Может я не все данные отправляю?