shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

klarna_checkout.php (5984B)


      1 <?php
      2 use Klarna\Rest\Transport\Connector as KCConnector;
      3 use Klarna\Rest\Transport\ConnectorInterface as KCConnectorInterface;
      4 use Klarna\Rest\OrderManagement\Order as KCOrder;
      5 
      6 class ModelExtensionPaymentKlarnaCheckout extends Model {
      7 	public function connector($merchant_id, $secret, $url) {
      8 		try {
      9 			$connector = KCConnector::create(
     10 				$merchant_id,
     11 				$secret,
     12 				$url
     13 			);
     14 
     15 			return $connector;
     16 		} catch (\Exception $e) {
     17 			$this->log($e->getMessage());
     18 
     19 			return false;
     20 		}
     21 	}
     22 
     23 	public function omRetrieve(KCConnector $connector, $order_id) {
     24 		try {
     25 			$order = new KCOrder($connector, $order_id);
     26 
     27 			return $order->fetch();
     28 		} catch (\Exception $e) {
     29 			$this->log($e->getMessage());
     30 
     31 			return false;
     32 		}
     33 	}
     34 
     35 	public function omCancel(KCConnector $connector, $order_id) {
     36 		try {
     37 			$order = new KCOrder($connector, $order_id);
     38 
     39 			return $order->cancel();
     40 		} catch (\Exception $e) {
     41 			$this->log($e->getMessage());
     42 
     43 			return false;
     44 		}
     45 	}
     46 
     47 	public function omCapture(KCConnector $connector, $order_id, $data) {
     48 		try {
     49 			$order = new KCOrder($connector, $order_id);
     50 
     51 			return $order->createCapture($data);
     52 		} catch (\Exception $e) {
     53 			$this->log($e->getMessage());
     54 
     55 			return false;
     56 		}
     57 	}
     58 
     59 	public function omRefund(KCConnector $connector, $order_id, $data) {
     60 		try {
     61 			$order = new KCOrder($connector, $order_id);
     62 
     63 			return $order->refund($data);
     64 		} catch (\Exception $e) {
     65 			$this->log($e->getMessage());
     66 
     67 			return false;
     68 		}
     69 	}
     70 
     71 	public function omExtendAuthorizationTime(KCConnector $connector, $order_id) {
     72 		try {
     73 			$order = new KCOrder($connector, $order_id);
     74 
     75 			return $order->extendAuthorizationTime();
     76 		} catch (\Exception $e) {
     77 			$this->log($e->getMessage());
     78 
     79 			return false;
     80 		}
     81 	}
     82 
     83 	public function omUpdateMerchantReference(KCConnector $connector, $order_id, $data) {
     84 		try {
     85 			$order = new KCOrder($connector, $order_id);
     86 
     87 			return $order->updateMerchantReferences($data);
     88 		} catch (\Exception $e) {
     89 			$this->log($e->getMessage());
     90 
     91 			return false;
     92 		}
     93 	}
     94 
     95 	public function omUpdateAddress(KCConnector $connector, $order_id, $data) {
     96 		try {
     97 			$order = new KCOrder($connector, $order_id);
     98 
     99 			return $order->updateCustomerDetails($data);
    100 		} catch (\Exception $e) {
    101 			$this->log($e->getMessage());
    102 
    103 			return false;
    104 		}
    105 	}
    106 
    107 	public function omReleaseAuthorization(KCConnector $connector, $order_id) {
    108 		try {
    109 			$order = new KCOrder($connector, $order_id);
    110 
    111 			return $order->releaseRemainingAuthorization();
    112 		} catch (\Exception $e) {
    113 			$this->log($e->getMessage());
    114 
    115 			return false;
    116 		}
    117 	}
    118 
    119 	public function omShippingInfo(KCConnector $connector, $order_id, $capture_id, $data) {
    120 		try {
    121 			$order = new KCOrder($connector, $order_id);
    122 
    123 			$capture = $order->fetchCapture($capture_id);
    124 			return $capture->addShippingInfo($data);
    125 		} catch (\Exception $e) {
    126 			$this->log($e->getMessage());
    127 
    128 			return false;
    129 		}
    130 	}
    131 
    132 	public function omCustomerDetails(KCConnector $connector, $order_id, $capture_id, $data) {
    133 		try {
    134 			$order = new KCOrder($connector, $order_id);
    135 
    136 			$capture = $order->fetchCapture($capture_id);
    137 			return $capture->updateCustomerDetails($data);
    138 		} catch (\Exception $e) {
    139 			$this->log($e->getMessage());
    140 
    141 			return false;
    142 		}
    143 	}
    144 
    145 	public function omTriggerSendOut(KCConnector $connector, $order_id, $capture_id) {
    146 		try {
    147 			$order = new KCOrder($connector, $order_id);
    148 
    149 			$capture = $order->fetchCapture($capture_id);
    150 			return $capture->triggerSendout();
    151 		} catch (\Exception $e) {
    152 			$this->log($e->getMessage());
    153 
    154 			return false;
    155 		}
    156 	}
    157 
    158 	public function getConnector($accounts, $currency) {
    159 		$klarna_account = false;
    160 		$connector = false;
    161 
    162 		if ($accounts && $currency) {
    163 			foreach ($accounts as $account) {
    164 				if ($account['currency'] == $currency) {
    165 					if ($account['environment'] == 'test') {
    166 						if ($account['api'] == 'NA') {
    167 							$base_url = KCConnectorInterface::NA_TEST_BASE_URL;
    168 						} elseif ($account['api'] == 'EU')  {
    169 							$base_url = KCConnectorInterface::EU_TEST_BASE_URL;
    170 						}
    171 					} elseif ($account['environment'] == 'live') {
    172 						if ($account['api'] == 'NA') {
    173 							$base_url = KCConnectorInterface::NA_BASE_URL;
    174 						} elseif ($account['api'] == 'EU')  {
    175 							$base_url = KCConnectorInterface::EU_BASE_URL;
    176 						}
    177 					}
    178 
    179 					$klarna_account = $account;
    180 					$connector = $this->connector(
    181 						$account['merchant_id'],
    182 						$account['secret'],
    183 						$base_url
    184 					);
    185 
    186 					break;
    187 				}
    188 			}
    189 		}
    190 
    191 		return array($klarna_account, $connector);
    192 	}
    193 
    194 	public function getOrder($order_id) {
    195 		return $this->db->query("SELECT * FROM `" . DB_PREFIX . "klarna_checkout_order` WHERE `order_id` = '" . (int)$order_id . "' LIMIT 1")->row;
    196 	}
    197 
    198 	public function checkForPaymentTaxes() {
    199 		$query = $this->db->query("SELECT COUNT(*) AS `total` FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "tax_rule tr ON (`tr`.`tax_class_id` = `p`.`tax_class_id`) WHERE `tr`.`based` = 'payment'");
    200 
    201 		return $query->row['total'];
    202 	}
    203 
    204 	public function install() {
    205 		$this->db->query("
    206 			CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "klarna_checkout_order` (
    207 			  `klarna_checkout_order_id` INT(11) NOT NULL AUTO_INCREMENT,
    208 			  `order_id` INT(11) NOT NULL,
    209 			  `order_ref` VARCHAR(255) NOT NULL,
    210 			  `data` text NOT NULL,
    211 			  PRIMARY KEY (`klarna_checkout_order_id`)
    212 			) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;");
    213 	}
    214 
    215 	public function uninstall() {
    216 		$this->db->query("DROP TABLE IF EXISTS `" . DB_PREFIX . "klarna_checkout_order`;");
    217 	}
    218 
    219 	public function log($data) {
    220 		if ($this->config->get('klarna_checkout_debug')) {
    221 			$backtrace = debug_backtrace();
    222 			$log = new Log('klarna_checkout.log');
    223 			$log->write('(' . $backtrace[1]['class'] . '::' . $backtrace[1]['function'] . ') - ' . print_r($data, true));
    224 		}
    225 	}
    226 }