whoami7 - Manager
:
/
home
/
kckglobal
/
cloud.kckglobal.net
/
bkp
/
application
/
libraries
/
gateways
/
Upload File:
files >> //home/kckglobal/cloud.kckglobal.net/bkp/application/libraries/gateways/Paypal_checkout_gateway.php
<?php defined('BASEPATH') or exit('No direct script access allowed'); use PayPalCheckoutSdk\Core\PayPalHttpClient; use PayPalCheckoutSdk\Core\SandboxEnvironment; use PayPalCheckoutSdk\Core\ProductionEnvironment; class Paypal_checkout_gateway extends App_gateway { public bool $processingFees = true; public function __construct() { /** * Call App_gateway __construct function */ parent::__construct(); /** * REQUIRED * Gateway unique id * The ID must be alpha/alphanumeric */ $this->setId('paypal_checkout'); /** * REQUIRED * Gateway name */ $this->setName('Paypal Smart Checkout'); /** * Add gateway settings */ $this->setSettings( [ [ 'name' => 'client_id', 'label' => 'Client ID', ], [ 'name' => 'secret', 'encrypted' => true, 'label' => 'Secret', ], [ 'name' => 'payment_description', 'label' => 'settings_paymentmethod_description', 'type' => 'textarea', 'default_value' => 'Payment for Invoice {invoice_number}', 'field_attributes' => ['maxlength' => 127], ], [ 'name' => 'currencies', 'label' => 'settings_paymentmethod_currencies', 'default_value' => 'USD,CAD,EUR', ], [ 'name' => 'test_mode_enabled', 'type' => 'yes_no', 'default_value' => 1, 'label' => 'settings_paymentmethod_testing_mode', ], ] ); } /** * Determine and create the PHP Client Environment * @return object */ public function environment() { $clientId = $this->getSetting('client_id'); $clientSecret = $this->decryptSetting('secret'); if ($this->getSetting('test_mode_enabled') == '1') { return new SandboxEnvironment($clientId, $clientSecret); } return new ProductionEnvironment($clientId, $clientSecret); } /** * Creates the Paypal SDK Client * @return object (PayPalHttpClient) */ public function client() { return new PayPalHttpClient($this->environment()); } public function get_styling_button_params() { $data = hooks()->apply_filters('paypal_checkout_button_style_params', [ 'color' => 'blue', ]); return array_to_object($data); } public function get_order_create_data($invoice, $total) { $payer = $this->get_billing_info($invoice); if (count($payer) > 0) { $data['payer'] = $payer; } $data['application_context'] = [ 'payment_method' => [ 'payee_preferred' => 'IMMEDIATE_PAYMENT_REQUIRED', ], ]; $data['purchase_units'] = [ [ 'amount' => [ 'value' => number_format($total, 2, '.', ''), 'currency_code' => $invoice->currency_name, ], ], ]; $description = str_replace('{invoice_number}', format_invoice_number($invoice->id), $this->getSetting('payment_description')); if (!empty($description)) { $data['purchase_units'][0]['description'] = $description; } $data = hooks()->apply_filters('paypal_checkout_order_create_data', $data); return array_to_object($data); } private function get_billing_info($invoice) { $country = null; if ($invoice->billing_country) { $country = get_country($invoice->billing_country); } elseif ($companyCountry = get_option('invoice_company_country_code')) { $countryArray = collect(get_all_countries())->first(function ($country) use ($companyCountry) { return in_array($companyCountry, [$country['iso2'], $country['short_name'], $country['long_name']]); }); if ($countryArray) { $country = (object) $countryArray; } } /* The highest level sub-division in a country, which is usually a province, state, or ISO-3166-2 subdivision. Format for postal delivery. For example, CA and not California. Value, by country, is: UK. A county. US. A state. Canada. A province. Japan. A prefecture. Switzerland. A kanton. */ $admin_area_1 = null; // State if ($country) { if ($country->iso2 == 'UK') { $admin_area_1 = $invoice->billing_city; } elseif ($country->iso2 == 'US') { $admin_area_1 = $invoice->billing_state; } } $payer = []; $billing_address = []; if (!empty($invoice->billing_street)) { $billing_address['address_line_1'] = clear_textarea_breaks($invoice->billing_street); // street address } if (!empty($admin_area_1)) { $billing_address['admin_area_1'] = $admin_area_1; } if (!empty($invoice->billing_city)) { $billing_address['admin_area_2'] = $invoice->billing_city; // city } if (!empty($invoice->billing_zip)) { $billing_address['postal_code'] = $invoice->billing_zip; // postal code } if ($country) { $billing_address['country_code'] = $country->iso2; // country code } // Paypal throws an error when billing address is provided but missing country and the popup not open // in this case, we will clear the billing address, the user must enter them manually if (! $country && count(array_filter($billing_address)) !== 0) { $billing_address = []; } $name = [ 'given_name' => (is_client_logged_in() ? $GLOBALS['contact']->firstname : null), 'surname' => (is_client_logged_in() ? $GLOBALS['contact']->lastname : null), ]; if (!empty($name['given_name'])) { $payer['name'] = $name; } $email_address = (is_client_logged_in() ? $GLOBALS['contact']->email : null); if ($email_address) { $payer['email_address'] = $email_address; } if (count($billing_address) > 0) { $payer['address'] = $billing_address; } $data = hooks()->apply_filters('paypal_checkout_payer_data', $payer, $invoice); return $data; } /** * REQUIRED FUNCTION * @param array $data * @return mixed */ public function process_payment($data) { $this->ci->session->set_userdata([ 'attempt_fee' => $data['payment_attempt']->fee, 'attempt_amount' => $data['payment_attempt']->amount, ]); $redirectGatewayURI = 'gateways/paypal_checkout/payment/' . $data['invoiceid'] . '/' . $data['invoice']->hash; $redirectPath = sprintf("%s?total=%s&attempt_reference=%s", $redirectGatewayURI, $data['amount'], $data['payment_attempt']->reference ); redirect(site_url($redirectPath)); } }
Copyright ©2021 || Defacer Indonesia