public static function authorize(AmzPayments $amz_payments, $service, $order_ref, $amount, $currency_code = 'EUR', $timeout = 1440, $comment = '') { if ($currency_code == '0') { $currency_code = 'EUR'; } $authorize_request = new OffAmazonPaymentsService_Model_AuthorizeRequest(); $authorize_request->setAmazonOrderReferenceId($order_ref); $authorize_request->setSellerId($amz_payments->merchant_id); $authorize_request->setTransactionTimeout($timeout); $authorize_request->setSoftDescriptor($comment); if ($amz_payments->capture_mode == 'after_auth') { $authorize_request->setCaptureNow(true); } if ($amz_payments->provocation == 'hard_decline' && $amz_payments->environment == 'SANDBOX') { $authorize_request->setSellerAuthorizationNote('{"SandboxSimulation": {"State":"Declined", "ReasonCode":"AmazonRejected"}}'); } if ($amz_payments->provocation == 'soft_decline' && $amz_payments->environment == 'SANDBOX') { Context::getContext()->cookie->setHadErrorNowWallet = 1; $authorize_request->setSellerAuthorizationNote('{"SandboxSimulation": {"State":"Declined", "ReasonCode":"InvalidPaymentMethod", "PaymentMethodUpdateTimeInMins":2}}'); } $authorize_request->setAuthorizationReferenceId(self::getNextAuthRef($order_ref)); $authorize_request->setAuthorizationAmount(new OffAmazonPaymentsService_Model_Price()); $authorize_request->getAuthorizationAmount()->setAmount($amount); $authorize_request->getAuthorizationAmount()->setCurrencyCode($currency_code); try { $response = $service->authorize($authorize_request); $details = $response->getAuthorizeResult()->getAuthorizationDetails(); $sql_arr = array('amz_tx_order_reference' => pSQL($order_ref), 'amz_tx_type' => 'auth', 'amz_tx_time' => pSQL(time()), 'amz_tx_expiration' => pSQL(strtotime($details->getExpirationTimestamp())), 'amz_tx_amount' => pSQL($amount), 'amz_tx_status' => pSQL($details->getAuthorizationStatus()->getState()), 'amz_tx_reference' => pSQL($details->getAuthorizationReferenceId()), 'amz_tx_amz_id' => pSQL($details->getAmazonAuthorizationId()), 'amz_tx_last_change' => pSQL(time()), 'amz_tx_last_update' => pSQL(time())); Db::getInstance()->insert('amz_transactions', $sql_arr); } catch (OffAmazonPaymentsService_Exception $e) { echo 'ERROR: ' . $e->getMessage(); } return $response; }