2015-06-21 03:30:38 +00:00
< ? php
// # Create Payment using PayPal as payment method
// This sample code demonstrates how you can process a
// PayPal Account based Payment.
// API used: /v1/payments/payment
require __DIR__ . '/../bootstrap.php' ;
use PayPal\Api\Amount ;
use PayPal\Api\Details ;
use PayPal\Api\Item ;
use PayPal\Api\ItemList ;
use PayPal\Api\Payer ;
use PayPal\Api\Payment ;
use PayPal\Api\RedirectUrls ;
use PayPal\Api\Transaction ;
// ### Payer
// A resource representing a Payer that funds a payment
// For paypal account payments, set payment method
// to 'paypal'.
$payer = new Payer ();
$payer -> setPaymentMethod ( " paypal " );
// ### Itemized information
// (Optional) Lets you specify item wise
// information
$item1 = new Item ();
$item1 -> setName ( 'Ground Coffee 40 oz' )
-> setCurrency ( 'USD' )
-> setQuantity ( 1 )
2015-07-01 00:16:22 +00:00
-> setSku ( " 123123 " ) // Similar to `item_number` in Classic API
2015-06-21 03:30:38 +00:00
-> setPrice ( 7.5 );
$item2 = new Item ();
$item2 -> setName ( 'Granola bars' )
-> setCurrency ( 'USD' )
-> setQuantity ( 5 )
2015-07-01 00:16:22 +00:00
-> setSku ( " 321321 " ) // Similar to `item_number` in Classic API
2015-06-21 03:30:38 +00:00
-> setPrice ( 2 );
$itemList = new ItemList ();
$itemList -> setItems ( array ( $item1 , $item2 ));
// ### Additional payment details
// Use this optional field to set additional
// payment information such as tax, shipping
// charges etc.
$details = new Details ();
$details -> setShipping ( 1.2 )
-> setTax ( 1.3 )
-> setSubtotal ( 17.50 );
// ### Amount
// Lets you specify a payment amount.
// You can also specify additional details
// such as shipping, tax.
$amount = new Amount ();
$amount -> setCurrency ( " USD " )
-> setTotal ( 20 )
-> setDetails ( $details );
// ### Transaction
// A transaction defines the contract of a
// payment - what is the payment for and who
// is fulfilling it.
$transaction = new Transaction ();
$transaction -> setAmount ( $amount )
-> setItemList ( $itemList )
-> setDescription ( " Payment description " )
-> setInvoiceNumber ( uniqid ());
// ### Redirect urls
// Set the urls that the buyer must be redirected to after
// payment approval/ cancellation.
$baseUrl = getBaseUrl ();
$redirectUrls = new RedirectUrls ();
$redirectUrls -> setReturnUrl ( " $baseUrl /ExecutePayment.php?success=true " )
-> setCancelUrl ( " $baseUrl /ExecutePayment.php?success=false " );
// ### Payment
// A Payment Resource; create one using
// the above types and intent set to 'sale'
$payment = new Payment ();
$payment -> setIntent ( " sale " )
-> setPayer ( $payer )
-> setRedirectUrls ( $redirectUrls )
-> setTransactions ( array ( $transaction ));
// For Sample Purposes Only.
$request = clone $payment ;
// ### Create Payment
// Create a payment by calling the 'create' method
// passing it a valid apiContext.
// (See bootstrap.php for more on `ApiContext`)
// The return object contains the state and the
// url to which the buyer must be redirected to
// for payment approval
try {
$payment -> create ( $apiContext );
} catch ( Exception $ex ) {
2015-07-01 00:16:22 +00:00
// NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
ResultPrinter :: printError ( " Created Payment Using PayPal. Please visit the URL to Approve. " , " Payment " , null , $request , $ex );
2015-06-21 03:30:38 +00:00
exit ( 1 );
}
// ### Get redirect url
// The API response provides the url that you must redirect
// the buyer to. Retrieve the url from the $payment->getApprovalLink()
// method
$approvalUrl = $payment -> getApprovalLink ();
2015-07-01 00:16:22 +00:00
// NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
ResultPrinter :: printResult ( " Created Payment Using PayPal. Please visit the URL to Approve. " , " Payment " , " <a href=' $approvalUrl ' > $approvalUrl </a> " , $request , $payment );
2015-06-21 03:30:38 +00:00
return $payment ;