$order_id = AmazonTransactions::getOrdersIdFromOrderRef($order_ref); $order = new Order((int) $order_id); $currency = new Currency($order->id_currency); $response = AmazonTransactions::capture($amz_payments, $amz_payments->getService(), Tools::getValue('authId'), Tools::getValue('amount'), $currency->iso_code); if (is_object($response)) { $details = $response->getCaptureResult()->getCaptureDetails(); $status = $details->getCaptureStatus()->getState(); if ($status == 'Completed') { echo $amz_payments->l('Capture successful'); } else { echo '<br/><b>' . $amz_payments->l('Capture failed') . '</b>'; } } break; case 'refundAmount': $order_ref = AmazonTransactions::getOrderRefFromAmzId(Tools::getValue('captureId')); $order_id = AmazonTransactions::getOrdersIdFromOrderRef($order_ref); $order = new Order((int) $order_id); $currency = new Currency($order->id_currency); $response = AmazonTransactions::refund($amz_payments, $amz_payments->getService(), Tools::getValue('captureId'), Tools::getValue('amount'), $currency->iso_code); if (is_object($response)) { $details = $response->getRefundResult()->getRefundDetails(); $status = $details->getRefundStatus()->getState(); if ($status == 'Pending') { $q = 'UPDATE ' . _DB_PREFIX_ . 'amz_transactions SET amz_tx_amount_refunded = amz_tx_amount_refunded + ' . (double) Tools::getValue('amount') . ' WHERE amz_tx_amz_id = \'' . pSQL(Tools::getValue('captureId')) . '\''; DB::getInstance()->execute($q); echo $amz_payments->l('Refund request was started successfully'); } else { echo $amz_payments->l('Refund failed');
public static function captureTotalFromAuth(AmzPayments $amz_payments, $service, $auth_id) { $q = 'SELECT * FROM ' . _DB_PREFIX_ . 'amz_transactions WHERE amz_tx_type=\'auth\' AND amz_tx_amz_id = \'' . pSQL($auth_id) . '\''; $r = Db::getInstance()->getRow($q); if ($r) { $order_ref = AmazonTransactions::getOrderRefFromAmzId($auth_id); $order_id = AmazonTransactions::getOrdersIdFromOrderRef($order_ref); $order = new Order((int) $order_id); if (Validate::isLoadedObject($order)) { $currency = new Currency($order->id_currency); if (Validate::isLoadedObject($currency)) { return self::capture($amz_payments, $service, $auth_id, $r['amz_tx_amount'], $currency->iso_code); } } return false; } else { return false; } }
public function refreshAuthorization($auth_id) { $service = $this->getService(); $authorization_request = new OffAmazonPaymentsService_Model_GetAuthorizationDetailsRequest(); $authorization_request->setSellerId($this->merchant_id); $authorization_request->setAmazonAuthorizationId($auth_id); try { $response = $service->getAuthorizationDetails($authorization_request); $details = $response->getGetAuthorizationDetailsResult()->getAuthorizationDetails(); // $address = $details->getAuthorizationBillingAddress(); $sql_arr = array('amz_tx_status' => pSQL((string) $details->getAuthorizationStatus()->getState()), 'amz_tx_last_change' => pSQL(strtotime((string) $details->getAuthorizationStatus()->getLastUpdateTimestamp())), 'amz_tx_last_update' => pSQL(time())); Db::getInstance()->update('amz_transactions', $sql_arr, " amz_tx_amz_id = '" . pSQL($auth_id) . "'"); if ((string) $details->getAuthorizationStatus()->getState() == 'Declined') { $reason = (string) $details->getAuthorizationStatus()->getReasonCode(); if ($reason == 'AmazonRejected') { $order_ref = AmazonTransactions::getOrderRefFromAmzId($auth_id); $this->cancelOrder($order_ref); } $this->intelligentDeclinedMail($auth_id, $reason); if ($this->decline_status_id > 0) { $order_ref = AmazonTransactions::getOrderRefFromAmzId($auth_id); AmazonTransactions::setOrderStatusDeclined($order_ref, true); } } elseif ((string) $details->getAuthorizationStatus()->getState() == 'Open') { $order_ref = AmazonTransactions::getOrderRefFromAmzId($auth_id); AmazonTransactions::setOrderStatusAuthorized($order_ref, true); } elseif ((string) $details->getAuthorizationStatus()->getState() == 'Closed' && (string) $details->getAuthorizationStatus()->getReasonCode() == 'MaxCapturesProcessed') { $captureIds = $details->getIdList()->getMember(); if (isset($captureIds[0])) { $captureId = (string) $captureIds[0]; $order_ref = AmazonTransactions::getOrderRefFromAmzId($auth_id); $capture_request = new OffAmazonPaymentsService_Model_GetCaptureDetailsRequest(); $capture_request->setSellerId($this->merchant_id); $capture_request->setAmazonCaptureId($captureId); try { $response = $service->getCaptureDetails($capture_request); $details = $response->getGetCaptureDetailsResult()->getCaptureDetails(); $sql_arr = array('amz_tx_order_reference' => pSQL($order_ref), 'amz_tx_type' => 'capture', 'amz_tx_time' => pSQL(time()), 'amz_tx_expiration' => 0, 'amz_tx_amount' => pSQL((string) $details->getCaptureAmount()->getAmount()), 'amz_tx_status' => pSQL($details->getCaptureStatus()->getState()), 'amz_tx_reference' => pSQL($details->getCaptureReferenceId()), 'amz_tx_amz_id' => pSQL($details->getAmazonCaptureId()), 'amz_tx_last_change' => pSQL(time()), 'amz_tx_last_update' => pSQL(time())); $checkQuery = 'SELECT * FROM ' . _DB_PREFIX_ . 'amz_transactions WHERE `amz_tx_order_reference` = \'' . pSQL($order_ref) . '\' AND `amz_tx_type` = \'capture\' '; if ($row = Db::getInstance()->getRow($checkQuery)) { return; } else { Db::getInstance()->insert('amz_transactions', $sql_arr); AmazonTransactions::setOrderStatusCapturedSuccesfully($order_ref); } } catch (OffAmazonPaymentsService_Exception $e) { echo 'ERROR: ' . $e->getMessage(); } } } } catch (OffAmazonPaymentsService_Exception $e) { echo 'ERROR: ' . $e->getErrorMessage(); } }