function receipt_page($order_id)
    {
        $order = new WC_Order($order_id);
        WC()->session->ppp_order_id = $order_id;
        $PaymentData = AngellEYE_Gateway_Paypal::calculate($order, true);
        $payment = new Payment();
        $payment->setId(WC()->session->paymentId);
        $patchReplace = new \PayPal\Api\Patch();
        $patchReplace->setOp('replace')->setPath('/transactions/0/amount')->setValue(json_decode('{
                    "total": "' . number_format($order->get_total(), 2, '.', '') . '",
                    "currency": "' . get_woocommerce_currency() . '",
                    "details": {
                        "subtotal": "' . $PaymentData['itemamt'] . '",
                        "shipping": "' . $PaymentData['shippingamt'] . '",
                        "tax":"' . $PaymentData['taxamt'] . '"
                    }
                }'));
        $patchRequest = new \PayPal\Api\PatchRequest();
        if ($order->needs_shipping_address() && !empty($order->shipping_country)) {
            //add shipping info
            $patchAdd = new \PayPal\Api\Patch();
            $patchAdd->setOp('add')->setPath('/transactions/0/item_list/shipping_address')->setValue(json_decode('{
                    "recipient_name": "' . $order->shipping_first_name . ' ' . $order->shipping_last_name . '",
                    "line1": "' . $order->shipping_address_1 . '",
                    "city": "' . $order->shipping_city . '",
                    "state": "' . $order->shipping_state . '",
                    "postal_code": "' . $order->shipping_postcode . '",
                    "country_code": "' . $order->shipping_country . '"
                }'));
            $patchRequest->setPatches(array($patchAdd, $patchReplace));
        } else {
            $patchRequest->setPatches(array($patchReplace));
        }
        try {
            $result = $payment->update($patchRequest, $this->getAuth());
            $this->add_log(print_r($payment, true));
            if ($result == true) {
            }
            ?>
        <script src="https://www.paypalobjects.com/webstatic/ppplus/ppplus.min.js"type="text/javascript"></script>
        <script>
            jQuery(document).ready(function(){
                jQuery.blockUI({
                    message: "<?php 
            echo esc_js(__('Thank you for your order. We are now redirecting you to PayPal to make payment.', 'paypal-for-woocommerce'));
            ?>
",
                    baseZ: 99999,
                    overlayCSS:
                    {
                        background: "#fff",
                        opacity: 0.6
                    },
                    css: {
                        padding:        "20px",
                        zindex:         "9999999",
                        textAlign:      "center",
                        color:          "#555",
                        border:         "3px solid #aaa",
                        backgroundColor:"#fff",
                        cursor:         "wait",
                        lineHeight:		"24px"
                    }
                });
                PAYPAL.apps.PPP.doCheckout();
            });
        </script>
    <?php 
        } catch (PayPal\Exception\PayPalConnectionException $ex) {
            wc_add_notice(__("Error processing checkout. Please try again. ", 'woocommerce'), 'error');
            $this->add_log($ex->getData());
        } catch (Exception $ex) {
            $this->add_log($ex->getMessage());
            // Prints the Error Code
            wc_add_notice(__("Error processing checkout. Please try again.", 'woocommerce'), 'error');
        }
    }
//      [
//         {
//             "op":"replace",
//            "path":"/url",
//            "value":"https://requestb.in/10ujt3c1"
//         },
//         {
//             "op":"replace",
//            "path":"/event_types",
//            "value":[
//               {
//                   "name":"PAYMENT.SALE.REFUNDED"
//               }
//            ]
//         }
//      ]
$patch = new \PayPal\Api\Patch();
$patch->setOp("replace")->setPath("/url")->setValue("https://requestb.in/10ujt3c1?uniqid=" . uniqid());
$patch2 = new \PayPal\Api\Patch();
$patch2->setOp("replace")->setPath("/event_types")->setValue(json_decode('[{"name":"PAYMENT.SALE.REFUNDED"}]'));
$patchRequest = new \PayPal\Api\PatchRequest();
$patchRequest->addPatch($patch)->addPatch($patch2);
// ### Get Webhook
try {
    $output = $webhook->update($patchRequest, $apiContext);
} catch (Exception $ex) {
    ResultPrinter::printError("Updated a Webhook", "Webhook", null, $patchRequest, $ex);
    exit(1);
}
ResultPrinter::printResult("Updated a Webhook", "Webhook", $output->getId(), $patchRequest, $output);
return $output;
//                    "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
// #### Partially Update Web Profile
// Use this call to partially update a web experience profile.
// Documentation available at https://developer.paypal.com/webapps/developer/docs/api/#partially-update-a-web-experience-profile
// We will be re-using the sample code to get a web profile. GetWebProfile.php will
// create a new web profileId for sample, and return the web profile object.
/** @var \PayPal\Api\WebProfile $webProfile */
$webProfile = (require 'GetWebProfile.php');
// ### Create Patch Operation
// APIs allows us to pass an array of patches
// to make patch operations.
// Each Patch operation can be created by using Patch Class
// as shown below
$patchOperation1 = new \PayPal\Api\Patch();
// The operation to perform. Required. Allowed values: add, remove, replace, move, copy, test
$patchOperation1->setOp("add")->setPath("/presentation/brand_name")->setValue("New Brand Name");
// Similar patch operation to remove the landing page type
$patchOperation2 = new \PayPal\Api\Patch();
$patchOperation2->setOp("remove")->setPath("/flow_config/landing_page_type");
//Generate an array of patch operations
$patches = array($patchOperation1, $patchOperation2);
try {
    // Execute the partial update, to carry out these two operations on a given web profile object
    if ($webProfile->partial_update($patches, $apiContext)) {
        $webProfile = \PayPal\Api\WebProfile::get($webProfile->getId(), $apiContext);
    }
} catch (\Exception $ex) {
    ResultPrinter::printError("Partially Updated Web Profile", "Web Profile", $webProfile->getId(), $patches, $ex);
    exit(1);
}
ResultPrinter::printResult("Partially Updated Web Profile", "Web Profile", $webProfile->getId(), $patches, $webProfile);