This repository has been archived by the owner on Sep 29, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 112
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #581 from paypal/third-party
Enabled Third Party Invoicing
- Loading branch information
Showing
5 changed files
with
152 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
<?php | ||
|
||
// # Create Third Party Invoice Sample | ||
// This sample code demonstrate how you can create third party invoice on someone else's behalf. | ||
// This requires using `Obtain User's Consent` to fetch the refresh token of the third party merchant. Please look at http://paypal.github.io/PayPal-PHP-SDK/sample/doc/lipp/ObtainUserConsent.html for more info. | ||
// You need the email address of the third party. This can be retrieved using the refresh token obtained from previous call. Please refere to http://paypal.github.io/PayPal-PHP-SDK/sample/doc/lipp/GetUserInfo.html for more info. | ||
// Please make sure to use `merchantInfo.email` as the email address of the third party. | ||
|
||
require __DIR__ . '/../bootstrap.php'; | ||
use PayPal\Api\BillingInfo; | ||
use PayPal\Api\Currency; | ||
use PayPal\Api\Invoice; | ||
use PayPal\Api\InvoiceAddress; | ||
use PayPal\Api\InvoiceItem; | ||
use PayPal\Api\MerchantInfo; | ||
use PayPal\Api\PaymentTerm; | ||
use PayPal\Api\ShippingInfo; | ||
|
||
$invoice = new Invoice(); | ||
|
||
// ### Invoice Info | ||
// Fill in all the information that is | ||
// required for invoice APIs | ||
$invoice | ||
->setMerchantInfo(new MerchantInfo()) | ||
->setBillingInfo(array(new BillingInfo())) | ||
->setNote("Medical Invoice 16 Jul, 2013 PST") | ||
->setPaymentTerm(new PaymentTerm()); | ||
|
||
// ### Merchant Info | ||
// A resource representing merchant information that can be | ||
// used to identify merchant | ||
$invoice->getMerchantInfo() | ||
// This would be the email address of third party merchant. | ||
->setEmail("[email protected]") | ||
->setFirstName("Dennis") | ||
->setLastName("Doctor") | ||
->setbusinessName("Medical Professionals, LLC") | ||
->setAddress(new InvoiceAddress()); | ||
|
||
// ### Address Information | ||
// The address used for creating the invoice | ||
$invoice->getMerchantInfo()->getAddress() | ||
->setLine1("1234 Main St.") | ||
->setCity("Portland") | ||
->setState("OR") | ||
->setPostalCode("97217") | ||
->setCountryCode("US"); | ||
|
||
// ### Billing Information | ||
// Set the email address for each billing | ||
$billing = $invoice->getBillingInfo(); | ||
$billing[0] | ||
->setEmail("[email protected]"); | ||
|
||
$billing[0]->setBusinessName("Jay Inc") | ||
->setAdditionalInfo("This is the billing Info") | ||
->setAddress(new InvoiceAddress()); | ||
|
||
$billing[0]->getAddress() | ||
->setLine1("1234 Main St.") | ||
->setCity("Portland") | ||
->setState("OR") | ||
->setPostalCode("97217") | ||
->setCountryCode("US"); | ||
|
||
// ### Items List | ||
// You could provide the list of all items for | ||
// detailed breakdown of invoice | ||
$items = array(); | ||
$items[0] = new InvoiceItem(); | ||
$items[0] | ||
->setName("Sutures") | ||
->setQuantity(100) | ||
->setUnitPrice(new Currency()); | ||
|
||
$items[0]->getUnitPrice() | ||
->setCurrency("USD") | ||
->setValue(5); | ||
|
||
$invoice->getPaymentTerm() | ||
->setTermType("NET_45"); | ||
|
||
|
||
// For Sample Purposes Only. | ||
$request = clone $invoice; | ||
|
||
// This would be refresh token retrieved from http://paypal.github.io/PayPal-PHP-SDK/sample/doc/lipp/ObtainUserConsent.html | ||
$refreshToken = "SCNWVZfdg43XaOmoEicazpkXyda32CGnP208EkuQ_QBIrXCYMhlvORFHHyoXPT0VbEMIHYVJEm0gVf1Vf72YgJzPScBenKoVPq__y1QRT7wwJo3WYADwUW4Q5ic"; | ||
|
||
try { | ||
// ### Use Refresh Token. MAKE SURE TO update `MerchantInfo.Email` based on | ||
$invoice->updateAccessToken($refreshToken, $apiContext); | ||
|
||
// ### Create Invoice | ||
// Create an invoice by calling the invoice->create() method | ||
// with a valid ApiContext (See bootstrap.php for more on `ApiContext`) | ||
$invoice->create($apiContext); | ||
} catch (Exception $ex) { | ||
// NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY | ||
ResultPrinter::printError("Create Invoice", "Invoice", null, $request, $ex); | ||
exit(1); | ||
} | ||
|
||
// NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY | ||
ResultPrinter::printResult("Create Invoice", "Invoice", $invoice->getId(), $request, $invoice); | ||
|
||
|
||
// ### Send Invoice | ||
try { | ||
|
||
// ### Send Invoice | ||
$invoice->send($apiContext); | ||
$invoice = Invoice::get($invoice->getId(), $apiContext); | ||
} catch (Exception $ex) { | ||
// NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY | ||
ResultPrinter::printError("Send Invoice", "Invoice", null, $request, $ex); | ||
exit(1); | ||
} | ||
|
||
// NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY | ||
ResultPrinter::printResult("Send Invoice", "Invoice", $invoice->getId(), $request, $invoice); | ||
|
||
|
||
return $invoice; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters