2015-06-21 03:30:38 +00:00
< ? php
// # Update Payment Sample
// This sample code demonstrate how you can
// update a Payment resources
// you've created using the Payments API.
// ## NOTE
// Note that it can only be updated before the execute is done. Once, the payment is executed it is not
// possible to udpate that.
// Docs: https://developer.paypal.com/webapps/developer/docs/api/#update-a-payment-resource
// API used: PATCH /v1/payments/payment/<Payment-Id>
/** @var Payment $createdPayment */
$createdPayment = require 'CreatePaymentUsingPayPal.php' ;
use PayPal\Api\Payment ;
$paymentId = $createdPayment -> getId ();
// #### Create a Patch Request
// This is how the data would look like:
// [
// {
// "op": "replace",
// "path": "/transactions/0/amount",
// "value": {
// "total": "25.00",
// "currency": "USD",
// "details": {
// "subtotal": "17.50",
// "shipping": "6.20",
// "tax": "1.30"
// }
// }
// },
// {
// "op": "add",
// "path": "/transactions/0/item_list/shipping_address",
// "value": {
// "recipient_name": "Gruneberg, Anna",
// "line1": "52 N Main St",
// "city": "San Jose",
// "postal_code": "95112",
// "country_code": "US",
// "state": "CA"
// }
// }
// ]
$patchReplace = new \PayPal\Api\Patch ();
$patchReplace -> setOp ( 'replace' )
-> setPath ( '/transactions/0/amount' )
-> setValue ( json_decode ( ' {
" total " : " 25.00 " ,
" currency " : " USD " ,
" details " : {
" subtotal " : " 17.50 " ,
" shipping " : " 6.20 " ,
" tax " : " 1.30 "
}
} ' ));
$patchAdd = new \PayPal\Api\Patch ();
$patchAdd -> setOp ( 'add' )
-> setPath ( '/transactions/0/item_list/shipping_address' )
-> setValue ( json_decode ( ' {
" recipient_name " : " Gruneberg, Anna " ,
" line1 " : " 52 N Main St " ,
" city " : " San Jose " ,
" state " : " CA " ,
" postal_code " : " 95112 " ,
" country_code " : " US "
} ' ));
$patchRequest = new \PayPal\Api\PatchRequest ();
$patchRequest -> setPatches ( array ( $patchReplace , $patchAdd ));
// ### Update payment
// Update payment object by calling the
// static `update` method
// on the Payment class by passing a valid
// Payment ID
// (See bootstrap.php for more on `ApiContext`)
try {
$result = $createdPayment -> update ( $patchRequest , $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 ( " Update Payment " , " PatchRequest " , null , $patchRequest , $ex );
2015-06-21 03:30:38 +00:00
exit ( 1 );
}
2015-07-01 00:16:22 +00:00
// NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
ResultPrinter :: printResult ( " Update Payment " , " PatchRequest " , $payment -> getId (), $patchRequest , null );
2015-06-21 03:30:38 +00:00
// ### Getting Updated Payment Object
if ( $result == true ) {
$result = Payment :: get ( $createdPayment -> getId (), $apiContext );
2015-07-01 00:16:22 +00:00
// NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
ResultPrinter :: printResult ( " Get Payment " , " Payment " , $result -> getId (), null , $result );
2015-06-21 03:30:38 +00:00
// ### Get redirect url
// The API response provides the url that you must redirect
// the buyer to. Retrieve the url from the $payment->getLinks()
// method
foreach ( $result -> getLinks () as $link ) {
if ( $link -> getRel () == 'approval_url' ) {
$approvalUrl = $link -> getHref ();
break ;
}
}
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 , $result );
2015-06-21 03:30:38 +00:00
}
return $result ;