/** * Perform the capture call for the order * * @param float $captureAmount * amount to capture from the buyer * @param string $amazonAuthorizationId * auth id to perform the capture on * * @return OffAmazonPaymentsService_Model_CaptureResponse service response */ public function captureOrderAmount($captureAmount, $amazonAuthorizationId) { $captureRequest = new OffAmazonPaymentsService_Model_CaptureRequest(); $captureRequest->setSellerId($this->_sellerId); $captureRequest->setAmazonAuthorizationId($amazonAuthorizationId); $captureRequest->setCaptureReferenceId($amazonAuthorizationId . "-c01"); $captureRequest->setCaptureAmount(new OffAmazonPaymentsService_Model_Price()); $captureRequest->getCaptureAmount()->setAmount($captureAmount); $captureRequest->getCaptureAmount()->setCurrencyCode($this->_service->getMerchantValues()->getCurrency()); return $this->_service->capture($captureRequest); }
private function capturePayment ($payments, $order) { $amazonAuthorizationId = $this->getAmazonAuthorizationId($payments); $this->loadAmazonClass('OffAmazonPaymentsService_Model_CaptureRequest'); $this->loadAmazonClass('OffAmazonPaymentsService_Model_Price'); $client = $this->getOffAmazonPaymentsService_Client(); $captureRequest = new OffAmazonPaymentsService_Model_CaptureRequest(); $captureRequest->setSellerId($this->_currentMethod->sellerId); $captureRequest->setAmazonAuthorizationId($amazonAuthorizationId); $captureRequest->setCaptureReferenceId($this->_order_number); $captureRequest->setCaptureAmount(new OffAmazonPaymentsService_Model_Price()); $captureRequest->getCaptureAmount()->setAmount($this->getTotalInPaymentCurrency($client, $this->_amount, $order['details']['BT']->order_currency)); $captureRequest->getCaptureAmount()->setCurrencyCode($this->getCurrencyCode3($client)); try { $captureResponse = $client->capture($captureRequest); $amazonCaptureId = $captureResponse->getCaptureResult()->getCaptureDetails()->getAmazonCaptureId(); $this->debugLog("<pre>" . var_export($captureRequest, true) . "</pre>", __FUNCTION__, 'debug'); $this->debugLog("<pre>" . var_export($captureResponse, true) . "</pre>", __FUNCTION__, 'debug'); } catch (Exception $e) { $msg = $e->getMessage(); $log = "An exception was thrown when trying to capture payment:" . $e->getMessage() . "\n" . $e->getTraceAsString(); while ($e = $e->getPrevious()) { $log .= ("Caused by: " . $e->getMessage() . "\n" . $e->getTraceAsString() . ""); $msg .= "Reason: " . $e->getMessage() . "<br />"; $log .= "\n"; } $this->debugLog($log, __FUNCTION__, 'debug'); $this->amazonError(__FUNCTION__ . ' ' . $msg); return false; } $this->loadHelperClass('amazonHelperCaptureResponse'); $amazonHelperCaptureResponse = new amazonHelperCaptureResponse($captureResponse, $this->_currentMethod); $amazonHelperCaptureResponse->onResponseUpdateOrderHistory($order); //$orderModel = VmModel::getModel('orders'); //$orderModel->updateStatusForOneOrder($order['details']['BT']->virtuemart_order_id, $order_history, TRUE); $storeInternalData = $amazonHelperCaptureResponse->getStoreInternalData(); $this->storeAmazonInternalData($order, $captureRequest, $captureResponse, NULL, $this->renderPluginName($this->_currentMethod), $storeInternalData, NULL, $captureAmount); return $amazonCaptureId; }
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; } }
/** * Perform the capture for a single shipment * * @param int $shipmentNumber order item index to capture * @param string $amazonAuthorizationId authorization to capture * * @return OffAmazonPayments_Model_CaptureResponse service response */ public function performCaptureForShipment($shipmentNumber, $amazonAuthorizationId) { $item = $this->_orderShipments[$shipmentNumber]; $captureRequest = new OffAmazonPaymentsService_Model_CaptureRequest(); $captureRequest->setSellerId($this->_sellerId); $captureRequest->setAmazonAuthorizationId($amazonAuthorizationId); $captureRequest->setCaptureReferenceId($this->_captureReferenceIdBase . $shipmentNumber); $captureRequest->setCaptureAmount(new OffAmazonPaymentsService_Model_Price()); $captureRequest->getCaptureAmount()->setAmount($item->price); $captureRequest->getCaptureAmount()->setCurrencyCode($this->_service->getMerchantValues()->getCurrency()); return $this->_service->capture($captureRequest); }
/** * Perform the capture call for the order * * @param float $captureAmount amount to capture from the buyer * @param string $amazonAuthorizationId auth id to perform the capture on * * @return OffAmazonPaymentsService_Model_CaptureResponse service response */ public function captureOrderAmount($captureAmount, $amazonAuthorizationId, $providerCreditInfo = null) { $captureRequest = new OffAmazonPaymentsService_Model_CaptureRequest(); $captureRequest->setSellerId($this->_sellerId); $captureRequest->setAmazonAuthorizationId($amazonAuthorizationId); $captureRequest->setCaptureReferenceId($this->_captureReferenceId); $captureRequest->setCaptureAmount(new OffAmazonPaymentsService_Model_Price()); $captureRequest->getCaptureAmount()->setAmount($captureAmount); $captureRequest->getCaptureAmount()->setCurrencyCode($this->_service->getMerchantValues()->getCurrency()); if ($providerCreditInfo != null) { $captureRequest->setProviderCreditList(new OffAmazonPaymentsService_Model_ProviderCreditList()); $values = array(); $providerCredit = new OffAmazonPaymentsService_Model_ProviderCredit(); $providerCredit->setProviderId($providerCreditInfo[0]); $creditAmount = new OffAmazonPaymentsService_Model_Price(); $creditAmount->setAmount($providerCreditInfo[1]); $creditAmount->setCurrencyCode($this->_service->getMerchantValues()->getCurrency()); $providerCredit->setCreditAmount($creditAmount); array_push($values, $providerCredit); $captureRequest->getProviderCreditList()->setmember($values); } return $this->_service->capture($captureRequest); }