Ejemplo n.º 1
0
 public static function capture(AmzPayments $amz_payments, $service, $auth_id, $amount, $currency_code = 'EUR', $display_error_message = false)
 {
     if ($auth_id) {
         $order_ref = self::getOrderRefFromAmzId($auth_id);
         $capture_request = new OffAmazonPaymentsService_Model_CaptureRequest();
         $capture_request->setAmazonAuthorizationId($auth_id);
         $capture_request->setSellerId($amz_payments->merchant_id);
         $capture_request->setCaptureReferenceId(self::getNextCaptureRef($order_ref));
         $capture_request->setCaptureAmount(new OffAmazonPaymentsService_Model_Price());
         $capture_request->getCaptureAmount()->setAmount($amount);
         $capture_request->getCaptureAmount()->setCurrencyCode($currency_code);
         if ($amz_payments->provocation == 'capture_decline' && $amz_payments->environment == 'SANDBOX') {
             $capture_request->setSellerCaptureNote('{"SandboxSimulation":{"State":"Declined", "ReasonCode":"AmazonRejected"}}');
         }
         try {
             $response = $service->capture($capture_request);
             $details = $response->getCaptureResult()->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($amount), '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()));
             Db::getInstance()->insert('amz_transactions', $sql_arr);
             self::setOrderStatusCapturedSuccesfully($order_ref);
         } catch (OffAmazonPaymentsService_Exception $e) {
             if ($display_error_message) {
                 echo 'ERROR: ' . $e->getMessage();
             }
             return false;
         }
         return $response;
     }
 }