Paypal: PHP SDK Ошибка. Входящий JSON-запрос не сопоставляется с API-запросом.

Я использую PHP Paypal SDK: https://github.com/paypal/PayPal-PHP-SDK

Приглашение Возврат API PayPal через PHP SDK "Входящий JSON-запрос не сопоставляется с API-запросом"

В продолжение с https://stackoverflow.com/questions/39827032/paypal-how-to-get-payment-id-on-basis-of-transaction-id

На основе уже имеющегося идентификатора транзакции, необходимо получить идентификатор платежа

Я пробовал ниже код

require __DIR__ . '/bootstrap.php';

use PayPal\Api\Amount;
use PayPal\Api\Details;
use PayPal\Api\Item;
use PayPal\Api\ItemList;
use PayPal\Api\CreditCard;
use PayPal\Api\Payer;
use PayPal\Api\Payment;
use PayPal\Api\FundingInstrument;
use PayPal\Api\Transaction;
// Extra Code
use PayPal\Api\PaymentDetail;

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

$transaction = new PaymentDetail(
'{
"method" : "CASH",
"date" : "2014-07-06 03:30:00 PST",
"note" : "Cash received."}'
);

$transaction->setTransactionId("3NT32794KF4824703");

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

// For Sample Purposes Only.
$request = clone $payment;

try {
$payment->create($apiContext);
} catch (\PayPal\Exception\PayPalConnectionException $ex) {
echo $ex->getData();
}

echo "<pre>";
print_r($payment);
exit;

Когда я запускаю выше кода, он дает ниже вид ошибки

{"name":"MALFORMED_REQUEST","message":"Incoming JSON request does not map to API request","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST","debug_id":"aa8bfa2a41f1f"}

PayPal\Api\Payment Object
(
[_propMap:PayPal\Common\PayPalModel:private] => Array
(
[intent] => sale
[payer] => PayPal\Api\Payer Object
(
[_propMap:PayPal\Common\PayPalModel:private] => Array
(
[payment_method] => paypal
)

)

[transactions] => Array
(
[0] => PayPal\Api\PaymentDetail Object
(
[_propMap:PayPal\Common\PayPalModel:private] => Array
(
[method] => CASH
[date] => 2014-07-06 03:30:00 PST
[note] => Cash received.
[transaction_id] => 3NT32794KF4824703
)

)

)

)

)

Как решить вышеуказанную ошибку? Пожалуйста, руководство

Ответ от Техническая поддержка Paypal

После обсуждения и тестирования с командами разработчиков они подтвердили, что
Вы не можете использовать TransactionId для получения PaymentId. Идентификатор платежа
генерируется при первом вызове REST API. И это происходит с REST API
только.

Идентификатор транзакции может быть создан после выполнения платежа API REST,
Классический API [NVP / SOAP] DoEC API или обычное выполнение кнопки оплаты.
Он никогда не будет работать в обратном направлении, чтобы найти идентификатор платежа.

На данный момент единственный обходной путь для вас — это регистрация каждого из REST API.
запрос независимо от того, не удалось или не отследить PaymentId.

Необходимо достигнуть: После того, как оплата сделана, она будет удерживаться. Через X дней он будет обработан. После обработки Сумма будет вычтена из Счета Клиента.

4

Решение

Сначала вы делаете платеж создать запрос с

$payment = new Payment();
$payment->setIntent("sale")
->setPayer($payer)
->setRedirectUrls($redirectUrls)
->setTransactions(array($transaction));
$payment->create($apiContext);
  1. При создании ответа вы получите «URL подтверждения», этот URL подтверждения используется для оплаты пользователем платежа.

  2. Затем вы получите уведомление от PayPal, по которому URL-адрес отправлять в «$ redirectUrls».

  3. Здесь вы получите «Идентификатор платежа» и «Идентификатор плательщика», используя которые выполните платеж.

    $execution = new PaymentExecution();
    $execution->setPayerId($da['PayerID']);
    $apiContext=$this->apicontext();
    $res = $payment->execute($execution, $apiContext);
    
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]