Paypal - PHP - Боковая подставка для сервера экспресс-оплаты

Я пытаюсь осуществить оплату с помощью Paypal REST API, используя Paypal-PHP-SDK, но получаю сообщение об ошибке:

Connection timed out after 10000 milliseconds

Иногда я также получаю ошибку неправильного формата. Я вижу при отладке, что использую URL-адрес песочницы:

https://api.sandbox.paypal.com/v1/oauth2/token

Я также установил контекст как песочницу:

$ClientID = PAYPAL_CLIENT_ID;
$ClientSecret = PAYPAL_CLIENT_SECRET;

$apiContext = new \PayPal\Rest\ApiContext(
    new \PayPal\Auth\OAuthTokenCredential(
        $ClientID,     // ClientID
        $ClientSecret  // ClientSecret
    )
);

$apiContext->setConfig(
      array(
        'mode' => 'sandbox',
      )
);

Мой код для оплаты:

$payer = new Payer();
$payer->setPaymentMethod("paypal");

$amount = new Amount();
$amount->setCurrency('USD')
    ->setTotal(1727);


$transaction = new Transaction();
$transaction->setAmount($paymentAmount)
    ->setDescription("TPS")
    ->setInvoiceNumber(uniqid());

$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl($returnURL)
    ->setCancelUrl($cancelURL);

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

try {
    $payment->create($apiContext);
} catch (Exception $ex) {
    // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
    var_dump("Created Payment Using PayPal. Please visit the URL to Approve.", "Payment", null, $request, $ex);
    exit(1);
}

$approvalUrl = $payment->getApprovalLink();

Вот данные полезной нагрузки:

{
    "intent": "sale",
    "payer": {
        "payment_method": "paypal"
    },
    "redirect_urls": {
        "return_url": "https://local.tps/secure/index.php?page=order&action=confirm&session=fb3ags4k1th90aliq7cgqm1ps1&paymentAmount=1727&currencyCodeType=USD&paymentType=sale",
        "cancel_url": "https://local.tps/secure/index.php?page=order&action=personal_information&session=fb3ags4k1th90aliq7cgqm1ps1"
    },
    "transactions": [{
        "amount": "1727",
        "description": "TPS",
        "invoice_number": "5ad69cf30d1f0"
    }]
}

person Eduardo    schedule 17.04.2018    source источник


Ответы (1)


Я нашел свою ошибку. Я передавал переменную $paymentAmout (которая содержит значение суммы) вместо объекта $amount:

$transaction->setAmount($paymentAmount)

Должен быть:

$transaction->setAmount($amount)

Ошибка тайм-аута соединения происходит случайным образом, возможно, какая-то защита связана с ограничением скорости?, не уверен

person Eduardo    schedule 18.04.2018