![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mcoil.corals.io/vendor/paypal/rest-api-sdk-php/sample/payouts/ |
<?php // # Create Bulk Payout Sample // // This sample code demonstrate how you can create a synchronous payout sample, as documented here at: // https://developer.paypal.com/docs/integration/direct/create-batch-payout/ // API used: /v1/payments/payouts require __DIR__ . '/../bootstrap.php'; // Create a new instance of Payout object $payouts = new \PayPal\Api\Payout(); // This is how our body should look like: /* *{ "sender_batch_header": { "sender_batch_id": "random_uniq_id", "email_subject": "You have a payment" }, "items": [ { "recipient_type": "EMAIL", "amount": { "value": 0.99, "currency": "USD" }, "receiver": "[email protected]", "note": "Thank you.", "sender_item_id": "item_1" }, { "recipient_type": "EMAIL", "amount": { "value": 0.90, "currency": "USD" }, "receiver": "[email protected]", "note": "Thank you.", "sender_item_id": "item_2" }, { "recipient_type": "EMAIL", "amount": { "value": 2.00, "currency": "USD" }, "receiver": "[email protected]", "note": "Thank you.", "sender_item_id": "item_3" } ] } */ $senderBatchHeader = new \PayPal\Api\PayoutSenderBatchHeader(); // ### NOTE: // You can prevent duplicate batches from being processed. If you specify a `sender_batch_id` that was used in the last 30 days, the batch will not be processed. For items, you can specify a `sender_item_id`. If the value for the `sender_item_id` is a duplicate of a payout item that was processed in the last 30 days, the item will not be processed. // #### Batch Header Instance $senderBatchHeader->setSenderBatchId(uniqid()) ->setEmailSubject("You have a payment"); // #### Sender Item // Please note that if you are using single payout with sync mode, you can only pass one Item in the request $senderItem1 = new \PayPal\Api\PayoutItem(); $senderItem1->setRecipientType('Email') ->setNote('Thanks you.') ->setReceiver('[email protected]') ->setSenderItemId("item_1" . uniqid()) ->setAmount(new \PayPal\Api\Currency('{ "value":"0.99", "currency":"USD" }')); // #### Sender Item 2 // There are many different ways of assigning values in PayPal SDK. Here is another way where you could directly inject json string. $senderItem2 = new \PayPal\Api\PayoutItem( '{ "recipient_type": "EMAIL", "amount": { "value": 0.90, "currency": "USD" }, "receiver": "[email protected]", "note": "Thank you.", "sender_item_id": "item_2" }' ); // #### Sender Item 3 // One more way of assigning values in constructor when creating instance of PayPalModel object. Injecting array. $senderItem3 = new \PayPal\Api\PayoutItem( array( "recipient_type" => "EMAIL", "receiver" => "[email protected]", "note" => "Thank you.", "sender_item_id" => uniqid(), "amount" => array( "value" => "0.90", "currency" => "USD" ) ) ); $payouts->setSenderBatchHeader($senderBatchHeader) ->addItem($senderItem1)->addItem($senderItem2)->addItem($senderItem3); // For Sample Purposes Only. $request = clone $payouts; // ### Create Payout try { $output = $payouts->create(null, $apiContext); } catch (Exception $ex) { // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY ResultPrinter::printError("Created Batch Payout", "Payout", null, $request, $ex); exit(1); } // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY ResultPrinter::printResult("Created Batch Payout", "Payout", $output->getBatchHeader()->getPayoutBatchId(), $request, $output); return $output;