summaryrefslogtreecommitdiffstats
path: root/vendor/paypal/paypal-checkout-sdk/samples
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/paypal/paypal-checkout-sdk/samples')
-rw-r--r--vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/AuthorizeOrder.php61
-rw-r--r--vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/CaptureOrder.php55
-rw-r--r--vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/CreateOrder.php237
-rw-r--r--vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/RunAll.php82
-rw-r--r--vendor/paypal/paypal-checkout-sdk/samples/CaptureIntentExamples/CaptureOrder.php60
-rw-r--r--vendor/paypal/paypal-checkout-sdk/samples/CaptureIntentExamples/CreateOrder.php178
-rw-r--r--vendor/paypal/paypal-checkout-sdk/samples/CaptureIntentExamples/RunAll.php74
-rw-r--r--vendor/paypal/paypal-checkout-sdk/samples/ErrorSample.php94
-rw-r--r--vendor/paypal/paypal-checkout-sdk/samples/GetOrder.php54
-rw-r--r--vendor/paypal/paypal-checkout-sdk/samples/PatchOrder.php82
-rw-r--r--vendor/paypal/paypal-checkout-sdk/samples/PayPalClient.php35
-rw-r--r--vendor/paypal/paypal-checkout-sdk/samples/RefundOrder.php60
12 files changed, 1072 insertions, 0 deletions
diff --git a/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/AuthorizeOrder.php b/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/AuthorizeOrder.php
new file mode 100644
index 0000000..06cc775
--- /dev/null
+++ b/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/AuthorizeOrder.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace Sample\AuthorizeIntentExamples;
+
+require __DIR__ . '/../../vendor/autoload.php';
+use PayPalCheckoutSdk\Orders\OrdersAuthorizeRequest;
+use Sample\PayPalClient;
+
+
+class AuthorizeOrder
+{
+ /**
+ * Setting up request body for Authorize. This can be populated with fields as per need. Refer API docs for more details.
+ *
+ */
+ public static function buildRequestBody()
+ {
+ return "{}";
+ }
+
+ /**
+ * This function can be used to perform authorization on the approved order.
+ * Valid Approved order id should be passed as an argument.
+ */
+ public static function authorizeOrder($orderId, $debug=false)
+ {
+ $request = new OrdersAuthorizeRequest($orderId);
+ $request->body = self::buildRequestBody();
+
+ $client = PayPalClient::client();
+ $response = $client->execute($request);
+ if ($debug)
+ {
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ print "Order ID: {$response->result->id}\n";
+ print "Authorization ID: {$response->result->purchase_units[0]->payments->authorizations[0]->id}\n";
+ print "Links:\n";
+ foreach($response->result->links as $link)
+ {
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+ print "Authorization Links:\n";
+ foreach($response->result->purchase_units[0]->payments->authorizations[0]->links as $link)
+ {
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+ // To toggle printing the whole response body comment/uncomment below line
+ echo json_encode($response->result, JSON_PRETTY_PRINT), "\n";
+ }
+ return $response;
+ }
+}
+
+/**
+ * This is an driver function which invokes authorize order.
+ */
+if (!count(debug_backtrace()))
+{
+ AuthorizeOrder::authorizeOrder('1U242387CB956380X', true);
+} \ No newline at end of file
diff --git a/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/CaptureOrder.php b/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/CaptureOrder.php
new file mode 100644
index 0000000..9dffd38
--- /dev/null
+++ b/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/CaptureOrder.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace Sample\AuthorizeIntentExamples;
+
+require __DIR__ . '/../../vendor/autoload.php';
+use PayPalCheckoutSdk\Payments\AuthorizationsCaptureRequest;
+use Sample\PayPalClient;
+
+class CaptureOrder
+{
+ /**
+ * Below method can be used to build the capture request body.
+ * This request can be updated with required fields as per need.
+ * Please refer API specs for more info.
+ */
+ public static function buildRequestBody()
+ {
+ return "{}";
+ }
+
+ /**
+ * Below function can be used to capture order.
+ * Valid Authorization id should be passed as an argument.
+ */
+ public static function captureOrder($authorizationId, $debug=false)
+ {
+ $request = new AuthorizationsCaptureRequest($authorizationId);
+ $request->body = self::buildRequestBody();
+ $client = PayPalClient::client();
+ $response = $client->execute($request);
+
+ if ($debug)
+ {
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ print "Capture ID: {$response->result->id}\n";
+ print "Links:\n";
+ foreach($response->result->links as $link)
+ {
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+ // To toggle printing the whole response body comment/uncomment below line
+ echo json_encode($response->result, JSON_PRETTY_PRINT), "\n";
+ }
+ return $response;
+ }
+}
+
+/**
+ * Driver function for invoking the capture flow.
+ */
+if (!count(debug_backtrace()))
+{
+ CaptureOrder::captureOrder('18A38324BV5456924', true);
+} \ No newline at end of file
diff --git a/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/CreateOrder.php b/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/CreateOrder.php
new file mode 100644
index 0000000..e8f96ce
--- /dev/null
+++ b/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/CreateOrder.php
@@ -0,0 +1,237 @@
+<?php
+
+namespace Sample\AuthorizeIntentExamples;
+
+require __DIR__ . '/../../vendor/autoload.php';
+
+use PayPalCheckoutSdk\Orders\OrdersCreateRequest;
+use Sample\PayPalClient;
+
+class CreateOrder
+{
+ /**
+ * Setting up the JSON request body for creating the Order with complete request body. The Intent in the
+ * request body should be set as "AUTHORIZE" for authorize intent flow.
+ *
+ */
+ private static function buildRequestBody()
+ {
+ return array(
+ 'intent' => 'AUTHORIZE',
+ 'application_context' =>
+ array(
+ 'return_url' => 'https://example.com/return',
+ 'cancel_url' => 'https://example.com/cancel',
+ 'brand_name' => 'EXAMPLE INC',
+ 'locale' => 'en-US',
+ 'landing_page' => 'BILLING',
+ 'shipping_preference' => 'SET_PROVIDED_ADDRESS',
+ 'user_action' => 'PAY_NOW',
+ ),
+ 'purchase_units' =>
+ array(
+ 0 =>
+ array(
+ 'reference_id' => 'PUHF',
+ 'description' => 'Sporting Goods',
+ 'custom_id' => 'CUST-HighFashions',
+ 'soft_descriptor' => 'HighFashions',
+ 'amount' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '220.00',
+ 'breakdown' =>
+ array(
+ 'item_total' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '180.00',
+ ),
+ 'shipping' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '20.00',
+ ),
+ 'handling' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '10.00',
+ ),
+ 'tax_total' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '20.00',
+ ),
+ 'shipping_discount' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '10.00',
+ ),
+ ),
+ ),
+ 'items' =>
+ array(
+ 0 =>
+ array(
+ 'name' => 'T-Shirt',
+ 'description' => 'Green XL',
+ 'sku' => 'sku01',
+ 'unit_amount' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '90.00',
+ ),
+ 'tax' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '10.00',
+ ),
+ 'quantity' => '1',
+ 'category' => 'PHYSICAL_GOODS',
+ ),
+ 1 =>
+ array(
+ 'name' => 'Shoes',
+ 'description' => 'Running, Size 10.5',
+ 'sku' => 'sku02',
+ 'unit_amount' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '45.00',
+ ),
+ 'tax' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '5.00',
+ ),
+ 'quantity' => '2',
+ 'category' => 'PHYSICAL_GOODS',
+ ),
+ ),
+ 'shipping' =>
+ array(
+ 'method' => 'United States Postal Service',
+ 'name' =>
+ array(
+ 'full_name' => 'John Doe',
+ ),
+ 'address' =>
+ array(
+ 'address_line_1' => '123 Townsend St',
+ 'address_line_2' => 'Floor 6',
+ 'admin_area_2' => 'San Francisco',
+ 'admin_area_1' => 'CA',
+ 'postal_code' => '94107',
+ 'country_code' => 'US',
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+
+ /**
+ * Setting up the JSON request body for creating the Order with minimum request body. The Intent in the
+ * request body should be set as "AUTHORIZE" for authorize intent flow.
+ *
+ */
+ private static function buildMinimumRequestBody()
+ {
+ return array(
+ 'intent' => 'AUTHORIZE',
+ 'application_context' =>
+ array(
+ 'return_url' => 'https://example.com/return',
+ 'cancel_url' => 'https://example.com/cancel'
+ ),
+ 'purchase_units' =>
+ array(
+ 0 =>
+ array(
+ 'amount' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '220.00'
+ )
+ )
+ )
+ );
+ }
+
+ /**
+ * This is the sample function which can be used to create an order. It uses the
+ * JSON body returned by buildRequestBody() to create an new Order.
+ */
+ public static function createOrder($debug=false)
+ {
+ $request = new OrdersCreateRequest();
+ $request->headers["prefer"] = "return=representation";
+ $request->body = CreateOrder::buildRequestBody();
+
+ $client = PayPalClient::client();
+ $response = $client->execute($request);
+ if ($debug)
+ {
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ print "Order ID: {$response->result->id}\n";
+ print "Intent: {$response->result->intent}\n";
+ print "Links:\n";
+ foreach($response->result->links as $link)
+ {
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+
+ print "Gross Amount: {$response->result->purchase_units[0]->amount->currency_code} {$response->result->purchase_units[0]->amount->value}\n";
+
+ // To toggle printing the whole response body comment/uncomment below line
+ echo json_encode($response->result, JSON_PRETTY_PRINT), "\n";
+ }
+
+
+ return $response;
+ }
+
+ /**
+ * This is the sample function which can be used to create an order. It uses the
+ * JSON body returned by buildMinimumRequestBody() to create an new Order.
+ */
+ public static function createOrderWithMinimumBody($debug=false)
+ {
+ $request = new OrdersCreateRequest();
+ $request->headers["prefer"] = "return=representation";
+ $request->body = CreateOrder::buildMinimumRequestBody();
+
+ $client = PayPalClient::client();
+ $response = $client->execute($request);
+ if ($debug)
+ {
+ print "Order With Minimum Body\n";
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ print "Order ID: {$response->result->id}\n";
+ print "Intent: {$response->result->intent}\n";
+ print "Links:\n";
+ foreach($response->result->links as $link)
+ {
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+
+ print "Gross Amount: {$response->result->purchase_units[0]->amount->currency_code} {$response->result->purchase_units[0]->amount->value}\n";
+
+ // To toggle printing the whole response body comment/uncomment below line
+ echo json_encode($response->result, JSON_PRETTY_PRINT), "\n";
+ }
+
+
+ return $response;
+ }
+}
+
+
+
+if (!count(debug_backtrace()))
+{
+ CreateOrder::createOrder(true);
+ CreateOrder::createOrderWithMinimumBody(true);
+} \ No newline at end of file
diff --git a/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/RunAll.php b/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/RunAll.php
new file mode 100644
index 0000000..708be9d
--- /dev/null
+++ b/vendor/paypal/paypal-checkout-sdk/samples/AuthorizeIntentExamples/RunAll.php
@@ -0,0 +1,82 @@
+<?php
+
+require __DIR__ . '/../../vendor/autoload.php';
+
+use Sample\AuthorizeIntentExamples\CreateOrder;
+use Sample\AuthorizeIntentExamples\AuthorizeOrder;
+use Sample\AuthorizeIntentExamples\CaptureOrder;
+use Sample\RefundOrder;
+
+$order = CreateOrder::createOrder();
+
+print "Creating Order...\n";
+$orderId = "";
+if ($order->statusCode == 201)
+{
+ $orderId = $order->result->id;
+ print "Links:\n";
+ for ($i = 0; $i < count($order->result->links); ++$i)
+ {
+ $link = $order->result->links[$i];
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+ print "Created Successfully\n";
+ print "Copy approve link and paste it in browser. Login with buyer account and follow the instructions.\nOnce approved hit enter...\n";
+}
+else {
+ exit(1);
+}
+
+$handle = fopen ("php://stdin","r");
+$line = fgets($handle);
+fclose($handle);
+
+print "Authorizing Order...\n";
+$response = AuthorizeOrder::authorizeOrder($orderId);
+$authId = "";
+
+if ($response->statusCode == 201)
+{
+ print "Authorized Successfully\n";
+ $authId = $response->result->purchase_units[0]->payments->authorizations[0]->id;
+}
+else {
+ exit(1);
+}
+
+print "\nCapturing Order...\n";
+$response = CaptureOrder::captureOrder($authId);
+if ($response->statusCode == 201)
+{
+ print "Captured Successfully\n";
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ $captureId = $response->result->id;
+ print "Capture ID: {$captureId}\n";
+ print "Links:\n";
+ for ($i = 0; $i < count($response->result->links); ++$i){
+ $link = $response->result->links[$i];
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+}
+else {
+ exit(1);
+}
+
+print "\nRefunding Order...\n";
+$response = RefundOrder::refundOrder($captureId);
+if ($response->statusCode == 201)
+{
+ print "Refunded Successfully\n";
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ print "Refund ID: {$response->result->id}\n";
+ print "Links:\n";
+ for ($i = 0; $i < count($response->result->links); ++$i){
+ $link = $response->result->links[$i];
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+}
+else {
+ exit(1);
+}
diff --git a/vendor/paypal/paypal-checkout-sdk/samples/CaptureIntentExamples/CaptureOrder.php b/vendor/paypal/paypal-checkout-sdk/samples/CaptureIntentExamples/CaptureOrder.php
new file mode 100644
index 0000000..931d5d9
--- /dev/null
+++ b/vendor/paypal/paypal-checkout-sdk/samples/CaptureIntentExamples/CaptureOrder.php
@@ -0,0 +1,60 @@
+<?php
+
+
+namespace Sample\CaptureIntentExamples;
+
+require __DIR__ . '/../../vendor/autoload.php';
+use Sample\PayPalClient;
+use PayPalCheckoutSdk\Orders\OrdersCaptureRequest;
+
+class CaptureOrder
+{
+
+ /**
+ * This function can be used to capture an order payment by passing the approved
+ * order id as argument.
+ *
+ * @param orderId
+ * @param debug
+ * @returns
+ */
+ public static function captureOrder($orderId, $debug=false)
+ {
+ $request = new OrdersCaptureRequest($orderId);
+
+ $client = PayPalClient::client();
+ $response = $client->execute($request);
+ if ($debug)
+ {
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ print "Order ID: {$response->result->id}\n";
+ print "Links:\n";
+ foreach($response->result->links as $link)
+ {
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+ print "Capture Ids:\n";
+ foreach($response->result->purchase_units as $purchase_unit)
+ {
+ foreach($purchase_unit->payments->captures as $capture)
+ {
+ print "\t{$capture->id}";
+ }
+ }
+ // To toggle printing the whole response body comment/uncomment below line
+ echo json_encode($response->result, JSON_PRETTY_PRINT), "\n";
+ }
+
+ return $response;
+ }
+}
+
+/**
+ * This is the driver function which invokes the captureOrder function with
+ * <b>Approved</b> Order Id to capture the order payment.
+ */
+if (!count(debug_backtrace()))
+{
+ CaptureOrder::captureOrder('0F105083N67049335', true);
+} \ No newline at end of file
diff --git a/vendor/paypal/paypal-checkout-sdk/samples/CaptureIntentExamples/CreateOrder.php b/vendor/paypal/paypal-checkout-sdk/samples/CaptureIntentExamples/CreateOrder.php
new file mode 100644
index 0000000..37a8e63
--- /dev/null
+++ b/vendor/paypal/paypal-checkout-sdk/samples/CaptureIntentExamples/CreateOrder.php
@@ -0,0 +1,178 @@
+<?php
+
+namespace Sample\CaptureIntentExamples;
+
+require __DIR__ . '/../../vendor/autoload.php';
+
+
+use Sample\PayPalClient;
+use PayPalCheckoutSdk\Orders\OrdersCreateRequest;
+
+class CreateOrder
+{
+
+ /**
+ * Setting up the JSON request body for creating the Order. The Intent in the
+ * request body should be set as "CAPTURE" for capture intent flow.
+ *
+ */
+ private static function buildRequestBody()
+ {
+ return array(
+ 'intent' => 'CAPTURE',
+ 'application_context' =>
+ array(
+ 'return_url' => 'https://example.com/return',
+ 'cancel_url' => 'https://example.com/cancel',
+ 'brand_name' => 'EXAMPLE INC',
+ 'locale' => 'en-US',
+ 'landing_page' => 'BILLING',
+ 'shipping_preference' => 'SET_PROVIDED_ADDRESS',
+ 'user_action' => 'PAY_NOW',
+ ),
+ 'purchase_units' =>
+ array(
+ 0 =>
+ array(
+ 'reference_id' => 'PUHF',
+ 'description' => 'Sporting Goods',
+ 'custom_id' => 'CUST-HighFashions',
+ 'soft_descriptor' => 'HighFashions',
+ 'amount' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '220.00',
+ 'breakdown' =>
+ array(
+ 'item_total' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '180.00',
+ ),
+ 'shipping' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '20.00',
+ ),
+ 'handling' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '10.00',
+ ),
+ 'tax_total' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '20.00',
+ ),
+ 'shipping_discount' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '10.00',
+ ),
+ ),
+ ),
+ 'items' =>
+ array(
+ 0 =>
+ array(
+ 'name' => 'T-Shirt',
+ 'description' => 'Green XL',
+ 'sku' => 'sku01',
+ 'unit_amount' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '90.00',
+ ),
+ 'tax' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '10.00',
+ ),
+ 'quantity' => '1',
+ 'category' => 'PHYSICAL_GOODS',
+ ),
+ 1 =>
+ array(
+ 'name' => 'Shoes',
+ 'description' => 'Running, Size 10.5',
+ 'sku' => 'sku02',
+ 'unit_amount' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '45.00',
+ ),
+ 'tax' =>
+ array(
+ 'currency_code' => 'USD',
+ 'value' => '5.00',
+ ),
+ 'quantity' => '2',
+ 'category' => 'PHYSICAL_GOODS',
+ ),
+ ),
+ 'shipping' =>
+ array(
+ 'method' => 'United States Postal Service',
+ 'name' =>
+ array(
+ 'full_name' => 'John Doe',
+ ),
+ 'address' =>
+ array(
+ 'address_line_1' => '123 Townsend St',
+ 'address_line_2' => 'Floor 6',
+ 'admin_area_2' => 'San Francisco',
+ 'admin_area_1' => 'CA',
+ 'postal_code' => '94107',
+ 'country_code' => 'US',
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+
+ /**
+ * This is the sample function which can be sued to create an order. It uses the
+ * JSON body returned by buildRequestBody() to create an new Order.
+ */
+ public static function createOrder($debug=false)
+ {
+ $request = new OrdersCreateRequest();
+ $request->headers["prefer"] = "return=representation";
+ $request->body = self::buildRequestBody();
+
+ $client = PayPalClient::client();
+ $response = $client->execute($request);
+ if ($debug)
+ {
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ print "Order ID: {$response->result->id}\n";
+ print "Intent: {$response->result->intent}\n";
+ print "Links:\n";
+ foreach($response->result->links as $link)
+ {
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+ // To toggle printing the whole response body comment/uncomment below line
+ echo json_encode($response->result, JSON_PRETTY_PRINT), "\n";
+ }
+
+
+ return $response;
+ }
+}
+
+
+/**
+ * This is the driver function which invokes the createOrder function to create
+ * an sample order.
+ */
+if (!count(debug_backtrace()))
+{
+ CreateOrder::createOrder(true);
+}
+
+
+
diff --git a/vendor/paypal/paypal-checkout-sdk/samples/CaptureIntentExamples/RunAll.php b/vendor/paypal/paypal-checkout-sdk/samples/CaptureIntentExamples/RunAll.php
new file mode 100644
index 0000000..e576ff0
--- /dev/null
+++ b/vendor/paypal/paypal-checkout-sdk/samples/CaptureIntentExamples/RunAll.php
@@ -0,0 +1,74 @@
+<?php
+
+require __DIR__ . '/../../vendor/autoload.php';
+
+use Sample\CaptureIntentExamples\CreateOrder;
+use Sample\CaptureIntentExamples\CaptureOrder;
+use Sample\RefundOrder;
+
+$order = CreateOrder::createOrder();
+
+print "Creating Order...\n";
+$orderId = "";
+if ($order->statusCode == 201)
+{
+ $orderId = $order->result->id;
+ print "Links:\n";
+ for ($i = 0; $i < count($order->result->links); ++$i)
+ {
+ $link = $order->result->links[$i];
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+ print "Created Successfully\n";
+ print "Copy approve link and paste it in browser. Login with buyer account and follow the instructions.\nOnce approved hit enter...\n";
+}
+else {
+ exit(1);
+}
+
+$handle = fopen ("php://stdin","r");
+$line = fgets($handle);
+fclose($handle);
+
+print "Capturing Order...\n";
+$response = CaptureOrder::captureOrder($orderId);
+if ($response->statusCode == 201)
+{
+ print "Captured Successfully\n";
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ print "Order ID: {$response->result->id}\n";
+ print "Links:\n";
+ for ($i = 0; $i < count($response->result->links); ++$i){
+ $link = $response->result->links[$i];
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+ foreach($response->result->purchase_units as $purchase_unit)
+ {
+ foreach($purchase_unit->payments->captures as $capture)
+ {
+ $captureId = $capture->id;
+ }
+ }
+}
+else {
+ exit(1);
+}
+
+print "\nRefunding Order...\n";
+$response = RefundOrder::refundOrder($captureId);
+if ($response->statusCode == 201)
+{
+ print "Refunded Successfully\n";
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ print "Refund ID: {$response->result->id}\n";
+ print "Links:\n";
+ for ($i = 0; $i < count($response->result->links); ++$i){
+ $link = $response->result->links[$i];
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+}
+else {
+ exit(1);
+}
diff --git a/vendor/paypal/paypal-checkout-sdk/samples/ErrorSample.php b/vendor/paypal/paypal-checkout-sdk/samples/ErrorSample.php
new file mode 100644
index 0000000..8daf96b
--- /dev/null
+++ b/vendor/paypal/paypal-checkout-sdk/samples/ErrorSample.php
@@ -0,0 +1,94 @@
+<?php
+
+require __DIR__ . '/../vendor/autoload.php';
+
+use PayPalCheckoutSdk\Orders\OrdersCreateRequest;
+use Sample\PayPalClient;
+use PayPalHttp\HttpException;
+
+class ErrorSample
+{
+ public static function prettyPrint($jsonData, $pre="")
+ {
+ $pretty = "";
+ foreach ($jsonData as $key => $val)
+ {
+ $pretty .= $pre . ucfirst($key) .": ";
+ if (strcmp(gettype($val), "array") == 0){
+ $pretty .= "\n";
+ $sno = 1;
+ foreach ($val as $value)
+ {
+ $pretty .= $pre . "\t" . $sno++ . ":\n";
+ $pretty .= self::prettyPrint($value, $pre . "\t\t");
+ }
+ }
+ else {
+ $pretty .= $val . "\n";
+ }
+ }
+ return $pretty;
+ }
+
+ /**
+ * Body has no required parameters (intent, purchase_units)
+ */
+ public static function createError1()
+ {
+ $request = new OrdersCreateRequest();
+ $request->body = "{}";
+ print "Request Body: {}\n\n";
+
+ print "Response:\n";
+ try{
+ $client = PayPalClient::client();
+ $response = $client->execute($request);
+ }
+ catch(HttpException $exception){
+ $message = json_decode($exception->getMessage(), true);
+ print "Status Code: {$exception->statusCode}\n";
+ print(self::prettyPrint($message));
+ }
+ }
+
+ /**
+ * Body has invalid parameter value for intent
+ */
+ public static function createError2()
+ {
+ $request = new OrdersCreateRequest();
+ $request->body = array (
+ 'intent' => 'INVALID',
+ 'purchase_units' =>
+ array (
+ 0 =>
+ array (
+ 'amount' =>
+ array (
+ 'currency_code' => 'USD',
+ 'value' => '100.00',
+ ),
+ ),
+ ),
+ );
+ print "Request Body:\n" . json_encode($request->body, JSON_PRETTY_PRINT) . "\n\n";
+
+ try{
+ $client = PayPalClient::client();
+ $response = $client->execute($request);
+ }
+ catch(HttpException $exception){
+ print "Response:\n";
+ $message = json_decode($exception->getMessage(), true);
+ print "Status Code: {$exception->statusCode}\n";
+ print(self::prettyPrint($message));
+ }
+
+ }
+}
+
+print "Calling createError1 (Body has no required parameters (intent, purchase_units))\n";
+ErrorSample::createError1();
+
+print "\n\nCalling createError2 (Body has invalid parameter value for intent)\n";
+ErrorSample::createError2();
diff --git a/vendor/paypal/paypal-checkout-sdk/samples/GetOrder.php b/vendor/paypal/paypal-checkout-sdk/samples/GetOrder.php
new file mode 100644
index 0000000..f89ac9d
--- /dev/null
+++ b/vendor/paypal/paypal-checkout-sdk/samples/GetOrder.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Sample;
+
+require __DIR__ . '/../vendor/autoload.php';
+
+use Sample\PayPalClient;
+use PayPalCheckoutSdk\Orders\OrdersGetRequest;
+use Sample\CaptureIntentExamples\CreateOrder;
+
+class GetOrder
+{
+
+ /**
+ * This function can be used to retrieve an order by passing order Id as argument.
+ */
+ public static function getOrder($orderId)
+ {
+
+ $client = PayPalClient::client();
+ $response = $client->execute(new OrdersGetRequest($orderId));
+ /**
+ * Enable below line to print complete response as JSON.
+ */
+ //print json_encode($response->result);
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ print "Order ID: {$response->result->id}\n";
+ print "Intent: {$response->result->intent}\n";
+ print "Links:\n";
+ foreach($response->result->links as $link)
+ {
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+
+ print "Gross Amount: {$response->result->purchase_units[0]->amount->currency_code} {$response->result->purchase_units[0]->amount->value}\n";
+
+ // To toggle printing the whole response body comment/uncomment below line
+ echo json_encode($response->result, JSON_PRETTY_PRINT), "\n";
+ }
+}
+
+/**
+ * This is the driver function which invokes the getOrder function to retrieve
+ * an sample order.
+ *
+ * To get the correct Order id, we are using the createOrder to create new order
+ * and then we are using the newly created order id.
+ */
+if (!count(debug_backtrace()))
+{
+ $createdOrder = CreateOrder::createOrder()->result;
+ GetOrder::getOrder($createdOrder ->id);
+} \ No newline at end of file
diff --git a/vendor/paypal/paypal-checkout-sdk/samples/PatchOrder.php b/vendor/paypal/paypal-checkout-sdk/samples/PatchOrder.php
new file mode 100644
index 0000000..cba8152
--- /dev/null
+++ b/vendor/paypal/paypal-checkout-sdk/samples/PatchOrder.php
@@ -0,0 +1,82 @@
+<?php
+
+namespace Sample;
+
+require __DIR__ . '/../vendor/autoload.php';
+
+use PayPalCheckoutSdk\Orders\OrdersPatchRequest;
+use PayPalCheckoutSdk\Orders\OrdersGetRequest;
+use Sample\AuthorizeIntentExamples\CreateOrder;
+
+class PatchOrder
+{
+ private static function buildRequestBody()
+ {
+ return array (
+ 0 =>
+ array (
+ 'op' => 'replace',
+ 'path' => '/intent',
+ 'value' => 'CAPTURE',
+ ),
+ 1 =>
+ array (
+ 'op' => 'replace',
+ 'path' => '/purchase_units/@reference_id==\'PUHF\'/amount',
+ 'value' =>
+ array (
+ 'currency_code' => 'USD',
+ 'value' => '200.00',
+ 'breakdown' =>
+ array (
+ 'item_total' =>
+ array (
+ 'currency_code' => 'USD',
+ 'value' => '180.00',
+ ),
+ 'tax_total' =>
+ array (
+ 'currency_code' => 'USD',
+ 'value' => '20.00',
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+
+ public static function patchOrder($orderId)
+ {
+
+ $client = PayPalClient::client();
+
+ $request = new OrdersPatchRequest($orderId);
+ $request->body = PatchOrder::buildRequestBody();
+ $client->execute($request);
+
+ $response = $client->execute(new OrdersGetRequest($orderId));
+
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ print "Order ID: {$response->result->id}\n";
+ print "Intent: {$response->result->intent}\n";
+ print "Links:\n";
+ foreach($response->result->links as $link)
+ {
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+
+ print "Gross Amount: {$response->result->purchase_units[0]->amount->currency_code} {$response->result->purchase_units[0]->amount->value}\n";
+
+ // To toggle printing the whole response body comment/uncomment below line
+ echo json_encode($response->result, JSON_PRETTY_PRINT), "\n";
+ }
+}
+
+if (!count(debug_backtrace()))
+{
+ print "Before PATCH:\n";
+ $createdOrder = CreateOrder::createOrder(true)->result;
+ print "\nAfter PATCH (Changed Intent and Amount):\n";
+ PatchOrder::patchOrder($createdOrder->id);
+} \ No newline at end of file
diff --git a/vendor/paypal/paypal-checkout-sdk/samples/PayPalClient.php b/vendor/paypal/paypal-checkout-sdk/samples/PayPalClient.php
new file mode 100644
index 0000000..397b8d2
--- /dev/null
+++ b/vendor/paypal/paypal-checkout-sdk/samples/PayPalClient.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Sample;
+
+use PayPalCheckoutSdk\Core\PayPalHttpClient;
+use PayPalCheckoutSdk\Core\SandboxEnvironment;
+
+ini_set('error_reporting', E_ALL); // or error_reporting(E_ALL);
+ini_set('display_errors', '1');
+ini_set('display_startup_errors', '1');
+
+class PayPalClient
+{
+ /**
+ * Returns PayPal HTTP client instance with environment which has access
+ * credentials context. This can be used invoke PayPal API's provided the
+ * credentials have the access to do so.
+ */
+ public static function client()
+ {
+ return new PayPalHttpClient(self::environment());
+ }
+
+ /**
+ * Setting up and Returns PayPal SDK environment with PayPal Access credentials.
+ * For demo purpose, we are using SandboxEnvironment. In production this will be
+ * ProductionEnvironment.
+ */
+ public static function environment()
+ {
+ $clientId = getenv("CLIENT_ID") ?: "<<PAYPAL-CLIENT-ID>>";
+ $clientSecret = getenv("CLIENT_SECRET") ?: "<<PAYPAL-CLIENT-SECRET>>";
+ return new SandboxEnvironment($clientId, $clientSecret);
+ }
+}
diff --git a/vendor/paypal/paypal-checkout-sdk/samples/RefundOrder.php b/vendor/paypal/paypal-checkout-sdk/samples/RefundOrder.php
new file mode 100644
index 0000000..fc9428f
--- /dev/null
+++ b/vendor/paypal/paypal-checkout-sdk/samples/RefundOrder.php
@@ -0,0 +1,60 @@
+<?php
+
+namespace Sample;
+
+require __DIR__ . '/../vendor/autoload.php';
+use Sample\PayPalClient;
+use PayPalCheckoutSdk\Payments\CapturesRefundRequest;
+
+class RefundOrder
+{
+
+ /**
+ * Function to create an refund capture request. Payload can be updated to issue partial refund.
+ */
+ public static function buildRequestBody()
+ {
+ return array(
+ 'amount' =>
+ array(
+ 'value' => '20.00',
+ 'currency_code' => 'USD'
+ )
+ );
+ }
+
+ /**
+ * This function can be used to preform refund on the capture.
+ */
+ public static function refundOrder($captureId, $debug=false)
+ {
+ $request = new CapturesRefundRequest($captureId);
+ $request->body = self::buildRequestBody();
+ $client = PayPalClient::client();
+ $response = $client->execute($request);
+
+ if ($debug)
+ {
+ print "Status Code: {$response->statusCode}\n";
+ print "Status: {$response->result->status}\n";
+ print "Order ID: {$response->result->id}\n";
+ print "Links:\n";
+ foreach($response->result->links as $link)
+ {
+ print "\t{$link->rel}: {$link->href}\tCall Type: {$link->method}\n";
+ }
+ // To toggle printing the whole response body comment/uncomment below line
+ echo json_encode($response->result, JSON_PRETTY_PRINT), "\n";
+ }
+ return $response;
+ }
+}
+
+/**
+ * This is the driver function which invokes the refund capture function with
+ * Capture Id to perform refund on capture.
+ */
+if (!count(debug_backtrace()))
+{
+ RefundOrder::refundOrder('8XL09935J2224701N', true);
+}