Получение ответа типа пакетной выплаты, но я выполнил единовременную выплату, даже не вижу успеха вместо этого все время, ожидая PENDING batch_status
- Я использую PAYPAL-PHP-SDK и работаю на MacOS с PHP версии 7.1.4 и Laravel версии 5.6.* .
- Я реализовал функциональность для однократной выплаты, предоставляемой PayPal, но получил ответ на пакетную выплату (работа с учетной записью песочницы).
Я также заметил, что со счета продавца я перевел 1 доллар США, и он успешно перешел на счет покупателя, но, хотя я получаю сообщение BATCH_STATUS: "PENDING" также не получает ответ в виде PayPal, отображаемого для "Создать единую выплату" (синхронно).
Я попытался скопировать весь код из https://paypal.github.io/PayPal-PHP-SDK/sample/doc/payouts/CreateSinglePayout.html и вставить в мою программу и внести определенные изменения, связанные с адресом электронной почты, и изменил мой клиент ключ и секретный ключ в файле bootstrap.php, но он показывает ответ как BATCH PAYOUT. Еще одна вещь, которую я заметил, заключается в том, что в коде нет разницы между выплатами по партиям и выплатами по одной. Я также видел https://github.com/paypal/PayPal-node-SDK/issues/264 но, хотя я получил статус пакета PENDING даже после успешного перевода денег на счет покупателя.
Я также попытался изменить режим синхронизации с истинного на ложный, поскольку теперь он устарел, но получил тот же ответ.
Вот мой код, который я сделал в контроллере laravel
require 'bootstrap.php';
// Create a new instance of Payout object
$payouts = new \PayPal\Api\Payout();
$senderBatchHeader = new \PayPal\Api\PayoutSenderBatchHeader();
// #### Batch Header Instance
$senderBatchHeader->setSenderBatchId(uniqid())
->setEmailSubject("You have a Payout!");
// #### Sender Item
// Please note that if you are using single payout with sync mode, you can only pass one Item in the request
$senderItem = new \PayPal\Api\PayoutItem();
$senderItem->setRecipientType('Email')
->setNote('Thanks for your patronage!')
->setReceiver('email@address.com')
->setSenderItemId("2014031400023")
->setAmount(new \PayPal\Api\Currency({
"value":"0.5",
"currency":"USD"
}));
$payouts->setSenderBatchHeader($senderBatchHeader)
->addItem($senderItem);
// For Sample Purposes Only.
$request = clone $payouts;
// ### Create Payout
try {
// $output = $payouts->createSynchronous($this->_api_context);
$output = $payouts->createSynchronous($apiContext);
} catch (Exception $ex) {
ResultPrinter::printError("Created Single Synchronous Payout", "Payout", null, $request, $ex);
exit(1);
}
// ResultPrinter::printResult("Created Single Synchronous Payout", "Payout", $output->getBatchHeader()->getPayoutBatchId(), $request, $output);
return $output;
Мой ожидаемый результат примерно такой,
{
batch_header: {
payout_batch_id: "3975UQGFRGFPQ",
batch_status: "SUCCESS",
sender_batch_header: {
sender_batch_id: "5cd3cfdb8ca8f",
email_subject: "You have a Payout!"
}
},
items: {}
links: [
{
href: "https://api.sandbox.paypal.com/v1/payments/payouts/3975UQGFRGFPQ",
rel: "self",
method: "GET",
enctype: "application/json"
}
]
}
И мой фактический результат
{ batch_header: { payout_batch_id: "3975UQGFRGFPQ", batch_status: "PENDING", sender_batch_header: { sender_batch_id: "5cd3cfdb8ca8f", email_subject: "У вас есть выплата!" } }, ссылки: [{href: " https://api.sandbox.paypal.com/v1/payments/payouts/3975UQGFRGFPQ", rel: "self", метод: "GET", enctype: "application/json" } ] }