aboutsummaryrefslogtreecommitdiffstats
path: root/public/catalog/model/extension/payment/pp_braintree.php
diff options
context:
space:
mode:
Diffstat (limited to 'public/catalog/model/extension/payment/pp_braintree.php')
-rw-r--r--public/catalog/model/extension/payment/pp_braintree.php191
1 files changed, 191 insertions, 0 deletions
diff --git a/public/catalog/model/extension/payment/pp_braintree.php b/public/catalog/model/extension/payment/pp_braintree.php
new file mode 100644
index 0000000..f557cfe
--- /dev/null
+++ b/public/catalog/model/extension/payment/pp_braintree.php
@@ -0,0 +1,191 @@
+<?php
+class ModelExtensionPaymentPPBraintree extends Model {
+ public function generateToken($gateway, $data) {
+ try {
+ if ($gateway != null) {
+ $client_token = $gateway->clientToken()->generate($data);
+ } else {
+ $client_token = Braintree_ClientToken::generate($data);
+ }
+
+ return $client_token;
+ } catch (Exception $e) {
+ $this->log($e->getMessage());
+
+ return false;
+ }
+ }
+
+ public function addTransaction($gateway, $data) {
+ try {
+ if ($gateway != null) {
+ $transaction = $gateway->transaction()->sale($data);
+ } else {
+ $transaction = Braintree_Transaction::sale($data);
+ }
+
+ return $transaction;
+ } catch (Exception $e) {
+ $this->log($e->getMessage());
+
+ return false;
+ }
+ }
+
+ public function getCustomer($gateway, $customer_id, $log = true) {
+ try {
+ if ($gateway != null) {
+ $customer = $gateway->customer()->find($customer_id);
+ } else {
+ $customer = Braintree_Customer::find($customer_id);
+ }
+
+ return $customer;
+ } catch (Exception $e) {
+ if ($log) {
+ $this->log($e->getMessage());
+ }
+
+ return false;
+ }
+ }
+
+ public function getPaymentMethod($gateway, $token) {
+ try {
+ if ($gateway != null) {
+ $payment_method = $gateway->paymentMethod()->find($token);
+ } else {
+ $payment_method = Braintree_PaymentMethod::find($token);
+ }
+
+ return $payment_method;
+ } catch (Exception $e) {
+ $this->log($e->getMessage());
+
+ return false;
+ }
+ }
+
+ public function addPaymentMethod($gateway, $data) {
+ try {
+ if ($gateway != null) {
+ $payment_method = $gateway->paymentMethod()->create($data);
+ } else {
+ $payment_method = Braintree_PaymentMethod::create($data);
+ }
+
+ return $payment_method;
+ } catch (Exception $e) {
+ $this->log($e->getMessage());
+
+ return false;
+ }
+ }
+
+ public function deletePaymentMethod($gateway, $token) {
+ try {
+ if ($gateway != null) {
+ $gateway->paymentMethod()->delete($token);
+ } else {
+ Braintree_PaymentMethod::delete($token);
+ }
+
+ return true;
+ } catch (Exception $e) {
+ $this->log($e->getMessage());
+
+ return false;
+ }
+ }
+
+ public function getPaymentMethodNonce($gateway, $token) {
+ try {
+ if ($gateway != null) {
+ $response = $gateway->paymentMethodNonce()->find($token);
+ } else {
+ $response = Braintree_PaymentMethodNonce::find($token);
+ }
+
+ return $response;
+ } catch (Exception $e) {
+ $this->log($e->getMessage());
+
+ return false;
+ }
+ }
+
+ public function createPaymentMethodNonce($gateway, $token) {
+ try {
+ if ($gateway != null) {
+ $response = $gateway->paymentMethodNonce()->create($token);
+ } else {
+ $response = Braintree_PaymentMethodNonce::create($token);
+ }
+
+ return $response;
+ } catch (Exception $e) {
+ $this->log($e->getMessage());
+
+ return false;
+ }
+ }
+
+ public function setCredentials() {
+ Braintree_Configuration::environment($this->config->get('payment_pp_braintree_environment'));
+ Braintree_Configuration::merchantId($this->config->get('payment_pp_braintree_merchant_id'));
+ Braintree_Configuration::publicKey($this->config->get('payment_pp_braintree_public_key'));
+ Braintree_Configuration::privateKey($this->config->get('payment_pp_braintree_private_key'));
+ }
+
+ public function setGateway($access_token) {
+ return new Braintree_Gateway(array('accessToken' => $access_token));
+ }
+
+ public function getMethod($address, $total) {
+ $this->load->language('extension/payment/pp_braintree');
+
+ $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('payment_pp_braintree_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')");
+
+ if ($this->config->get('payment_pp_braintree_total') > 0 && $this->config->get('payment_pp_braintree_total') > $total) {
+ $status = false;
+ } elseif (!$this->config->get('payment_pp_braintree_geo_zone_id')) {
+ $status = true;
+ } elseif ($query->num_rows) {
+ $status = true;
+ } else {
+ $status = false;
+ }
+
+ $method_data = array();
+
+ if ($status) {
+ $method_data = array(
+ 'code' => 'pp_braintree',
+ 'title' => $this->language->get('text_title'),
+ 'terms' => '',
+ 'sort_order' => $this->config->get('payment_pp_braintree_sort_order')
+ );
+ }
+
+ return $method_data;
+ }
+
+ public function getSupportedCurrencies() {
+ $currencies = array();
+
+ foreach ($this->config->get('payment_pp_braintree_account') as $currency => $account) {
+ if ($account['status']) {
+ $currencies[] = $currency;
+ }
+ }
+
+ return $currencies;
+ }
+
+ public function log($data) {
+ if ($this->config->get('payment_pp_braintree_debug')) {
+ $log = new Log('braintree.log');
+ $log->write(print_r($data, true));
+ }
+ }
+}