#paypal #paypal-sandbox #paypal-rest-sdk
Вопрос:
Я пытаюсь реализовать интеграцию сервера с PayPal-PHP-SDK. При нажатии кнопки PayPal это называется API создания платежей . и когда $payment->create($apiContext); выполняется, консоль показывает ошибку -**
Route::post('create-payment',function (){
$apiContext = new PayPalRestApiContext(
new PayPalAuthOAuthTokenCredential(
'AUxYffBkrIrNeBizbjL9K7_XvlxTSeRnsWx_Uq6xJYZ66QsB00AiGvvZRuTIIJ1XqXEvjo8S4X9zSm-5', // ClientID
'ELLhNBC11ecv0yNP27nss5Z5VVHxAhqhGFfyzAn21y5V0a2QWRODVATxC5xSOE08MUDkSPMwY1JhGRkf' // ClientSecret
)
);
$payer = new Payer();
$payer->setPaymentMethod("paypal");
$item1 = new Item();
$item1->setName('Ground Coffee 40 oz')
->setCurrency('USD')
->setQuantity(1)
->setSku("123123") // Similar to `item_number` in Classic API
->setPrice(7.5);
$item2 = new Item();
$item2->setName('Granola bars')
->setCurrency('USD')
->setQuantity(5)
->setSku("321321") // Similar to `item_number` in Classic API
->setPrice(2);
$itemList = new ItemList();
$itemList->setItems(array($item1, $item2));
$details = new Details();
$details->setShipping(1.2)
->setTax(1.3)
->setSubtotal(17.50);
$amount = new Amount();
$amount->setCurrency("USD")
->setTotal(20)
->setDetails($details);
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription("Payment description")
->setInvoiceNumber(uniqid());
$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl("http://127.0.0.1:8000/checkout?success=true")
->setCancelUrl("http://127.0.0.1:8000/checkout?success=false");
$payment = new Payment();
$payment->setIntent("sale")
->setPayer($payer)
->setRedirectUrls($redirectUrls)
->setTransactions(array($transaction));
$request = clone $payment;
$payment->create($apiContext);
});
Я вызвал этот код из route/api.php страница.таким образом, проблемы csrf нет.
Когда я собираюсь выполнить create payment API, модальный PayPal возвращается с этой ошибкой, идентификатор которой неизвестен, я понятия не имею об этой ошибке. Кто-нибудь может помочь ?
Ответ №1:
Не знаю, что конкретно идет не так, не видя полной и точной информации об ошибке, а также кода для кнопки PayPal, которую вы используете.
Однако PayPal-PHP-SDK устарел и использует устаревший API v1/платежей, поэтому я могу рассказать вам об интеграции, которую вы должны выполнять вместо этого, используя текущий Checkout-PHP-SDK
для v2/оформления заказа/заказов
Следуйте руководству по настройке стандартных платежей и создайте 2 маршрута на своем сервере, один для «Создания заказа» и один для «Заказа на захват», описанного здесь. Оба маршрута должны возвращать только данные JSON (без HTML или текста). Внутри 2-го маршрута, когда API захвата будет успешным , вы должны сохранить полученные в результате платежные данные в своей базе данных (в частности purchase_units[0].payments.captures[0].id
, идентификатор транзакции PayPal) и выполнить любую необходимую бизнес-логику (например, отправить электронное письмо с подтверждением или зарезервировать продукт) непосредственно перед отправкой возвращаемого JSON вызывающему интерфейсу.
Свяжите эти 2 маршрута с потоком утверждения интерфейса: https://developer.paypal.com/demo/checkout/#/pattern/server