Я знаю, что есть несколько вопросов, касающихся интеграции PayPal, но я пытаюсь внедрить PayPal Express Оформление заказа с помощью смарт-кнопок и REST API, но безуспешно.
Я хочу сделать следующее:
Создание авторизации платежа (с payid
и orderid
)
Отправьте это payid
клиенту (javascript) для быть утвержденным.
Перенаправить после оплаты на страницу подтверждения.
Я уже создал Авторизацию Платежа с кодом ниже:
<?php
// 1. Autoload the SDK Package. This will include all the files and classes to your autoloader
// Used for composer based installation
require __DIR__ . '/PayPal-PHP-SDK/autoload.php';
// Use below for direct download installation
// require __DIR__ . '/PayPal-PHP-SDK/autoload.php';
// After Step 1
$apiContext = new \PayPal\Rest\ApiContext(
new \PayPal\Auth\OAuthTokenCredential(
'client id', // ClientID
'cliente secret' // ClientSecret
)
);
// After Step 2
$payer = new \PayPal\Api\Payer();
$payer->setPaymentMethod('paypal');
$amount = new \PayPal\Api\Amount();
$amount->setTotal('1.00');
$amount->setCurrency('USD');
$transaction = new \PayPal\Api\Transaction();
$transaction->setAmount($amount);
$redirectUrls = new \PayPal\Api\RedirectUrls();
$redirectUrls->setReturnUrl("https://example.com/your_redirect_url.html")
->setCancelUrl("https://example.com/your_cancel_url.html");
$payment = new \PayPal\Api\Payment();
$payment->setIntent('sale')
->setPayer($payer)
->setTransactions(array($transaction))
->setRedirectUrls($redirectUrls);
// After Step 3
try {
$payment->create($apiContext);
echo $payment;
echo "\n\nRedirect user to approval_url: " . $payment->getApprovalLink() . "\n";
echo $data= json_encode($payment->id, JSON_PRETTY_PRINT), "\n";
echo "</br>";echo "</br>";
echo $data= $payment->id;
}
catch (\PayPal\Exception\PayPalConnectionException $ex) {
// This will print the detailed information on the exception.
//REALLY HELPFUL FOR DEBUGGING
echo json_encode($ex->getData()->id, JSON_PRETTY_PRINT), "\n";
echo "</br>";echo "</br>";
echo $ex->getData()->id;
}
?>
Мои настройки следующие (Пожалуйста, исправьте, если это не так):
Пользователь выбирает элемент и отправляет форму.
Пользователь перенаправляется на новую страницу с новой формой, затем заполняет форму своим именем и другой личной информацией, а затем отправляет форму для сохранения в базу данных и создает разрешение на оплату.
Пользователь должен быть перенаправлен на последнюю страницу с умными кнопками, чтобы Заполните платеж.
Пользователь должен быть перенаправлен на страницу подтверждения, подтверждающую успешность его платежа.
Проблема в том, что я ' Я застрял на шаге 2, потому что после того, как я сгенерирую Авторизацию Платежа, я не знаю, как передать этот идентификатор (и другие необходимые параметры) клиенту, на этой новой странице, которая должна показывать Кнопки Smart Payment для завершения сделка.
Я следую инструкциям в документации PayPal, но не могу понять.
JavaScript делает вызовы на мой сервер, чтобы получить payid
, это работает , но он генерирует новый payid
и новый Платежное поручение, я хочу использовать тот, который был создан ранее, когда пользователь отправил форму, а затем каким-то образом передать ее на последнюю страницу с помощью смарт-кнопок для завершения транзакции и перенаправить на страницу подтверждения.
Мой Javascript:
<script>
paypal.Button.render({
onApprove: function(data) {
return fetch('/my-server/get-paypal-transaction', {
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
orderID: data.orderID
})
}).then(function(res) {
return res.json();
}).then(function(details) {
alert('Transaction approved by ' + details.payer_given_name);
}, '#paypal-button');
</script>
Проблема в том, что он генерирует новую orderID
, новую транзакцию, и я хочу получить транзакцию это было сгенерировано, когда пользователь отправил форму на шаге 2, но я не знаю, что мне делать.
В конечном итоге мне нужно:
Получить Авторизация платежа и передача ее Клиенту (последняя страница с кнопками)
Перенаправление пользователей после завершения оплаты.