я использую PayPal Rest API и получаю ошибку - PullRequest
0 голосов
/ 25 сентября 2018
    $payer = new Payer();
    $payer->setPaymentMethod("paypal");

    $amount = new Amount();
    $amount->setCurrency("INR")
        ->setTotal($request->get('amount'));

    $payee = new Payee();
    $payee->setEmail($request->get('email'));
    $transaction = new Transaction();
    $transaction->setAmount($amount)
        ->setDescription("Payment description")
        ->setPayee($payee)
        ->setInvoiceNumber(uniqid());

    $redirectUrls = new RedirectUrls();
    $redirectUrls->setReturnUrl("http://udhaarcopy.test/paymentsuccess?success=true")
                ->setCancelUrl("http://udhaarcopy.test/paymentsuccess?success=false");

    $payment = new Payment();
    $payment->setIntent("Udhaar")
        ->setPayer($payer)
        ->setRedirectUrls($redirectUrls)
        ->setTransactions(array($transaction));


    $request = clone $payment;


    try {
        $payment->create($apiContext);
          // dd( $payment->create($apiContext));
    } catch (PayPal\Exception\PPConnectionException  $ex) {
        dd($ex);
    }
     $payment->getApprovalLink();
    $approvalUrl = $payment->getApprovalLink();

    return redirect($approvalUrl)->with('payment' , $payment);
}

public function getPaymentStatus()
{
    dd($_GET);
    $status = $_GET['success'];
    $paymentId = $_GET['paymentId'];
    $PayerID = $_GET['PayerID'];
    return view('paymentstatus' , compact($status , $paymentId , $PayerID));
}

Работало нормально, пока я не включил переменную $ payee.После включения $ payee мой код выдает ошибку

PayPal \ Exception \ PayPalConnectionException (400)

Получил Http код ответа 400 при доступе к https://api.sandbox.paypal.com/v1/payments/payment.

На самом деле мое требование:Один пользователь может отправить платеж другому пользователю, а не в мою учетную запись.Кто-нибудь с какими-либо предложениями или фиктивным кодом?

1 Ответ

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

Пожалуйста, обратитесь Группы кодов статуса Paypal HTTP .

Поймите ваши ошибки

PayPal возвращает подробные данные о каждом исключении (кроме 500 INTERNAL_SERVER_ERROR), объясняя, что именноошибка, которую вы видите.Вы можете получить это следующим образом:

Обновите обработку исключений, чтобы перехватить PayPalConnectionException и print $ex->getData(), как показано ниже:

try {
    $payment->create($apiContext);
} catch (PayPal\Exception\PayPalConnectionException $ex) {
    echo $ex->getCode(); // Prints the Error Code
    echo $ex->getData(); // Prints the detailed error message 
    die($ex);
} catch (Exception $ex) {
    die($ex);
}

Теперь, если вы попытаетесь снова, вы увидите что-токак это:

{
    "name": "VALIDATION_ERROR",
    "details": [
        {
            "field": "transactions[0].amount",
            "issue": "Transaction amount details (subtotal, tax, shipping) must add up to specified amount total"
        }
    ],
    "message": "Invalid request - see details",
    "information_link": "https://developer.paypal.com/webapps/developer/docs/api/#VALIDATION_ERROR",
    "debug_id": "0faff23b719d8"
}
...