public function processTransaction(Engine_Payment_Transaction $transaction) { $data = array(); $rawData = $transaction->getRawData(); // HACK if (!empty($rawData['return_url'])) { $this->_gatewayUrl = $rawData['return_url']; } $data = $rawData; return $data; }
/** * Create a transaction object from specified parameters * * @return Engine_Payment_Transaction */ public function createTransaction(array $params) { $transaction = new Engine_Payment_Transaction($params); $transaction->process($this->getGateway()); return $transaction; }
public function processTransaction(Engine_Payment_Transaction $transaction) { $data = array(); $rawData = $transaction->getRawData(); // Driver-specific params if (isset($rawData['driverSpecificParams'])) { if (isset($rawData['driverSpecificParams'][$this->getDriver()])) { $data = array_merge($data, $rawData['driverSpecificParams'][$this->getDriver()]); } unset($rawData['driverSpecificParams']); } // Process data ------------------------------------------------------------ // Add vendor identity // Note: we can get this from the product info $data['sid'] = $this->getVendorIdentity(); // Add product_id if (isset($rawData['vendor_product_id'])) { $productInfo = $this->detailVendorProduct($rawData['vendor_product_id']); $data['product_id'] = $productInfo['assigned_product_id']; //$data['sid'] = $productInfo['vendor_id']; } else { if (isset($rawData['product_id'])) { $productInfo = $this->detailProduct($rawData['product_id']); $data['product_id'] = $productInfo['assigned_product_id']; //$data['sid'] = $productInfo['vendor_id']; } } // Add quantity if (!isset($rawData['quantity']) || !is_numeric($rawData['quantity']) || $rawData['quantity'] <= 0) { $data['quantity'] = 1; } else { if (isset($data['quantity']) && $data['quantity'] > 99) { throw new Engine_Payment_Gateway_Exception('Quantity must be less than or equal to 99.'); } $data['quantity'] = $rawData['quantity']; } // Add test mode if ($this->getTestMode()) { $data['demo'] = 'Y'; } // Add fixed if (!empty($rawData['fixed'])) { $data['fixed'] = 'Y'; } // Add language if (isset($rawData['language']) && ($language = $this->isSupportedLanguage($rawData['language'])) || ($language = $this->getLanguage())) { $data['language'] = $language; } // Add currency - oh nevermind they don't support it // if( !empty($rawData['currency']) && // ($currency = $this->isSupportedCurrency($rawData['currency'])) || // ($currency = $this->getCurrency()) ) { // // } // Add return_url if (isset($rawData['return_url'])) { $data['x_receipt_link_url'] = $rawData['return_url']; //$data['return_url'] = $rawData['return_url']; } // Add merchant_order_id if (isset($rawData['merchant_order_id'])) { if (strlen($rawData['merchant_order_id']) > 50) { throw new Engine_Payment_Gateway_Exception('Merchant Order ID cannot be longer than 50 character.'); } $data['merchant_order_id'] = $rawData['merchant_order_id']; } else { if (isset($rawData['vendor_order_id'])) { if (strlen($rawData['vendor_order_id']) > 50) { throw new Engine_Payment_Gateway_Exception('Merchant Order ID cannot be longer than 50 character.'); } $data['merchant_order_id'] = $rawData['vendor_order_id']; } } // Add pay_method if (isset($rawData['pay_method'])) { if (in_array($rawData['pay_method'], array('CC', 'AL', 'PPI'))) { $data['pay_method'] = $rawData['pay_method']; } } // Add skip_landing if (!empty($rawData['skip_landing'])) { $data['skip_landing'] = 1; } // @todo add x_receipt_link_url ? // @todo process the rest of $rawData // Validate data ----------------------------------------------------------- if (empty($data['product_id'])) { $this->_throw(sprintf('Missing parameter: %1$s', 'product_id')); $this->_throw('No product identity provided'); return false; } if (empty($data['sid'])) { $this->_throw(sprintf('Missing parameter: %1$s', 'sid')); return false; } if (empty($data['quantity'])) { $this->_throw(sprintf('Missing parameter: %1$s', 'quantity')); return false; } return $data; }
public function processTransaction(Engine_Payment_Transaction $transaction) { $data = array(); $rawData = $transaction->getRawData(); // Driver-specific params if (isset($rawData['driverSpecificParams'])) { if (isset($rawData['driverSpecificParams'][$this->getDriver()])) { $data = array_merge($data, $rawData['driverSpecificParams'][$this->getDriver()]); } unset($rawData['driverSpecificParams']); } // Add default region? if (empty($rawData['region']) && ($region = $this->getRegion())) { $rawData['region'] = $region; } // Add default currency if (empty($rawData['currency']) && ($currency = $this->getCurrency())) { $rawData['currency'] = $currency; } // Process abtract translation map $tmp = array(); $data = array_merge($data, $this->_translateTransactionData($rawData, $tmp)); $rawData = $tmp; // Call setExpressCheckout $token = $this->getService()->setExpressCheckout($data); $data = array(); $data['cmd'] = '_express-checkout'; $data['token'] = $token; return $data; }
public static function getSupportedKeys() { if (null === self::$_supportedKeys) { $r = new Zend_Reflection_Class(__CLASS__); self::$_supportedKeys = array_values($r->getConstants()); } return self::$_supportedKeys; }
public function validateTransaction(Engine_Payment_Transaction $transaction) { $data = $transaction->getData(); if (empty($data['x_Login'])) { $this->_throw('No vendor identity provided'); return false; } if (empty($data['x_Invoice_num'])) { $this->_throw('No invoice identity provided'); return false; } if (empty($data['x_Amount'])) { $this->_throw('No total provided'); return false; } return true; }