![]() 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/notifications/ |
<?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(); // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY 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) { // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY ResultPrinter::printError("Created Webhook", "Webhook", null, $request, $ex); exit(1); } } else { // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY ResultPrinter::printError("Created Webhook", "Webhook", null, $request, $ex); exit(1); } } else { // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY ResultPrinter::printError("Created Webhook", "Webhook", null, $request, $ex); exit(1); } // Print Success Result } // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY ResultPrinter::printResult("Created Webhook", "Webhook", $output->getId(), $request, $output); return $output;