Exemplo n.º 1
0
        $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');
Exemplo n.º 2
0
    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;
        }
    }
Exemplo n.º 3
0
 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();
     }
 }