2015-06-21 03:30:38 +00:00
< ? php
// # Create Webhook Sample
//
// This sample code demonstrate how you can create a webhook, as documented here at:
// https://developer.paypal.com/webapps/developer/docs/api/#create-a-webhook
// API used: POST /v1/notifications/webhooks
require __DIR__ . '/../bootstrap.php' ;
// Create a new instance of Webhook object
$webhook = new \PayPal\Api\Webhook ();
// # Basic Information
// {
// "url":"https://requestb.in/10ujt3c1",
// "event_types":[
// {
// "name":"PAYMENT.AUTHORIZATION.CREATED"
// },
// {
// "name":"PAYMENT.AUTHORIZATION.VOIDED"
// }
// ]
// }
// Fill up the basic information that is required for the webhook
// The URL should be actually accessible over the internet. Having a localhost here would not work.
// #### There is an open source tool http://requestb.in/ that allows you to receive any web requests to a url given there.
// #### NOTE: Please note that you need an https url for paypal webhooks. You can however override the url with https, and accept
// any warnings your browser might show you. Also, please note that this is entirely for demo purposes, and you should not
// be using this in production
$webhook -> setUrl ( " https://requestb.in/10ujt3c1?uniqid= " . uniqid ());
// # Event Types
// Event types correspond to what kind of notifications you want to receive on the given URL.
$webhookEventTypes = array ();
$webhookEventTypes [] = new \PayPal\Api\WebhookEventType (
' {
" name " : " PAYMENT.AUTHORIZATION.CREATED "
} '
);
$webhookEventTypes [] = new \PayPal\Api\WebhookEventType (
' {
" name " : " PAYMENT.AUTHORIZATION.VOIDED "
} '
);
$webhook -> setEventTypes ( $webhookEventTypes );
// For Sample Purposes Only.
$request = clone $webhook ;
// ### Create Webhook
try {
$output = $webhook -> create ( $apiContext );
} catch ( Exception $ex ) {
// ^ Ignore workflow code segment
if ( $ex instanceof \PayPal\Exception\PayPalConnectionException ) {
$data = $ex -> getData ();
2015-07-01 00:16:22 +00:00
// NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
2015-06-21 03:30:38 +00:00
ResultPrinter :: printError ( " Created Webhook Failed. Checking if it is Webhook Number Limit Exceeded. Trying to delete all existing webhooks " , " Webhook " , " Please Use <a style='color: red;' href='DeleteAllWebhooks.php' >Delete All Webhooks</a> Sample to delete all existing webhooks in sample " , $request , $ex );
if ( strpos ( $data , 'WEBHOOK_NUMBER_LIMIT_EXCEEDED' ) !== false ) {
require 'DeleteAllWebhooks.php' ;
try {
$output = $webhook -> 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
2015-06-21 03:30:38 +00:00
ResultPrinter :: printError ( " Created Webhook " , " Webhook " , null , $request , $ex );
exit ( 1 );
}
} else {
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 Webhook " , " Webhook " , null , $request , $ex );
2015-06-21 03:30:38 +00:00
exit ( 1 );
}
} else {
2015-07-01 00:16:22 +00:00
// NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
2015-06-21 03:30:38 +00:00
ResultPrinter :: printError ( " Created Webhook " , " Webhook " , null , $request , $ex );
exit ( 1 );
}
// Print Success Result
}
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 Webhook " , " Webhook " , $output -> getId (), $request , $output );
2015-06-21 03:30:38 +00:00
return $output ;