'https://fps.sandbox.amazonaws.com',//https://fps.amazonaws.com',
'UserAgent' => self::USER_AGENT_IDENTIFIER,
'SignatureVersion' => 2,
'SignatureMethod' => 'HmacSHA256',
'ProxyHost' => null,
'ProxyPort' => -1,
'MaxErrorRetry' => 3
);
/**
* Construct new Client
*
* @param string $awsAccessKeyId AWS Access Key ID
* @param string $awsSecretAccessKey AWS Secret Access Key
* @param array $config configuration options.
* Valid configuration options are:
*
* - ServiceURL
* - UserAgent
* - SignatureVersion
* - TimesRetryOnError
* - ProxyHost
* - ProxyPort
* - MaxErrorRetry
*
*/
public function __construct($awsAccessKeyId, $awsSecretAccessKey, $config = null)
{
iconv_set_encoding('output_encoding', 'UTF-8');
iconv_set_encoding('input_encoding', 'UTF-8');
iconv_set_encoding('internal_encoding', 'UTF-8');
$this->_awsAccessKeyId = $awsAccessKeyId;
$this->_awsSecretAccessKey = $awsSecretAccessKey;
if (!is_null($config)) $this->_config = array_merge($this->_config, $config);
}
// Public API ------------------------------------------------------------//
/**
* Cancel Token
*
* Cancels any token installed by the calling application on its own account.
*
* @see http://docs.amazonwebservices.com/${docPath}CancelToken.html
* @param mixed $request array of parameters for Amazon_FPS_Model_CancelTokenRequest request
* or Amazon_FPS_Model_CancelTokenRequest object itself
* @see Amazon_FPS_Model_CancelToken
* @return Amazon_FPS_Model_CancelTokenResponse Amazon_FPS_Model_CancelTokenResponse
*
* @throws Amazon_FPS_Exception
*/
public function cancelToken($request)
{
if (!$request instanceof Amazon_FPS_Model_CancelTokenRequest) {
afps_require_once('Amazon/FPS/Model/CancelTokenRequest.php');
$request = new Amazon_FPS_Model_CancelTokenRequest($request);
}
afps_require_once('Amazon/FPS/Model/CancelTokenResponse.php');
return Amazon_FPS_Model_CancelTokenResponse::fromXML($this->_invoke($this->_convertCancelToken($request)));
}
/**
* Cancel
*
* Cancels an ongoing transaction and puts it in cancelled state.
*
* @see http://docs.amazonwebservices.com/${docPath}Cancel.html
* @param mixed $request array of parameters for Amazon_FPS_Model_CancelRequest request
* or Amazon_FPS_Model_CancelRequest object itself
* @see Amazon_FPS_Model_Cancel
* @return Amazon_FPS_Model_CancelResponse Amazon_FPS_Model_CancelResponse
*
* @throws Amazon_FPS_Exception
*/
public function cancel($request)
{
if (!$request instanceof Amazon_FPS_Model_CancelRequest) {
afps_require_once('Amazon/FPS/Model/CancelRequest.php');
$request = new Amazon_FPS_Model_CancelRequest($request);
}
afps_require_once('Amazon/FPS/Model/CancelResponse.php');
return Amazon_FPS_Model_CancelResponse::fromXML($this->_invoke($this->_convertCancel($request)));
}
/**
* Fund Prepaid
*
* Funds the prepaid balance on the given prepaid instrument.
*
* @see http://docs.amazonwebservices.com/${docPath}FundPrepaid.html
* @param mixed $request array of parameters for Amazon_FPS_Model_FundPrepaidRequest request
* or Amazon_FPS_Model_FundPrepaidRequest object itself
* @see Amazon_FPS_Model_FundPrepaid
* @return Amazon_FPS_Model_FundPrepaidResponse Amazon_FPS_Model_FundPrepaidResponse
*
* @throws Amazon_FPS_Exception
*/
public function fundPrepaid($request)
{
if (!$request instanceof Amazon_FPS_Model_FundPrepaidRequest) {
afps_require_once('Amazon/FPS/Model/FundPrepaidRequest.php');
$request = new Amazon_FPS_Model_FundPrepaidRequest($request);
}
afps_require_once('Amazon/FPS/Model/FundPrepaidResponse.php');
return Amazon_FPS_Model_FundPrepaidResponse::fromXML($this->_invoke($this->_convertFundPrepaid($request)));
}
/**
* Get Account Activity
*
* Returns transactions for a given date range.
*
* @see http://docs.amazonwebservices.com/${docPath}GetAccountActivity.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetAccountActivityRequest request
* or Amazon_FPS_Model_GetAccountActivityRequest object itself
* @see Amazon_FPS_Model_GetAccountActivity
* @return Amazon_FPS_Model_GetAccountActivityResponse Amazon_FPS_Model_GetAccountActivityResponse
*
* @throws Amazon_FPS_Exception
*/
public function getAccountActivity($request)
{
if (!$request instanceof Amazon_FPS_Model_GetAccountActivityRequest) {
afps_require_once('Amazon/FPS/Model/GetAccountActivityRequest.php');
$request = new Amazon_FPS_Model_GetAccountActivityRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetAccountActivityResponse.php');
return Amazon_FPS_Model_GetAccountActivityResponse::fromXML($this->_invoke($this->_convertGetAccountActivity($request)));
}
/**
* Get Account Balance
*
* Returns the account balance for an account in real time.
*
* @see http://docs.amazonwebservices.com/${docPath}GetAccountBalance.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetAccountBalanceRequest request
* or Amazon_FPS_Model_GetAccountBalanceRequest object itself
* @see Amazon_FPS_Model_GetAccountBalance
* @return Amazon_FPS_Model_GetAccountBalanceResponse Amazon_FPS_Model_GetAccountBalanceResponse
*
* @throws Amazon_FPS_Exception
*/
public function getAccountBalance($request)
{
if (!$request instanceof Amazon_FPS_Model_GetAccountBalanceRequest) {
afps_require_once('Amazon/FPS/Model/GetAccountBalanceRequest.php');
$request = new Amazon_FPS_Model_GetAccountBalanceRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetAccountBalanceResponse.php');
return Amazon_FPS_Model_GetAccountBalanceResponse::fromXML($this->_invoke($this->_convertGetAccountBalance($request)));
}
/**
* Get Transactions For Subscription
* Returns the transactions for a given subscriptionID.
*
* @see http://docs.amazonwebservices.com/${docPath}GetTransactionsForSubscription.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetTransactionsForSubscriptionRequest request
* or Amazon_FPS_Model_GetTransactionsForSubscriptionRequest object itself
* @see Amazon_FPS_Model_GetTransactionsForSubscription
* @return Amazon_FPS_Model_GetTransactionsForSubscriptionResponse Amazon_FPS_Model_GetTransactionsForSubscriptionResponse
*
* @throws Amazon_FPS_Exception
*/
public function getTransactionsForSubscription($request)
{
if (!$request instanceof Amazon_FPS_Model_GetTransactionsForSubscriptionRequest) {
afps_require_once('Amazon/FPS/Model/GetTransactionsForSubscriptionRequest.php');
$request = new Amazon_FPS_Model_GetTransactionsForSubscriptionRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetTransactionsForSubscriptionResponse.php');
return Amazon_FPS_Model_GetTransactionsForSubscriptionResponse::fromXML($this->_invoke($this->_convertGetTransactionsForSubscription($request)));
}
/**
* Get Subscription Details
* Returns the details of Subscription for a given subscriptionID.
*
* @see http://docs.amazonwebservices.com/${docPath}GetSubscriptionDetails.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetSubscriptionDetailsRequest request
* or Amazon_FPS_Model_GetSubscriptionDetailsRequest object itself
* @see Amazon_FPS_Model_GetSubscriptionDetails
* @return Amazon_FPS_Model_GetSubscriptionDetailsResponse Amazon_FPS_Model_GetSubscriptionDetailsResponse
*
* @throws Amazon_FPS_Exception
*/
public function getSubscriptionDetails($request)
{
if (!$request instanceof Amazon_FPS_Model_GetSubscriptionDetailsRequest) {
afps_require_once('Amazon/FPS/Model/GetSubscriptionDetailsRequest.php');
$request = new Amazon_FPS_Model_GetSubscriptionDetailsRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetSubscriptionDetailsResponse.php');
return Amazon_FPS_Model_GetSubscriptionDetailsResponse::fromXML($this->_invoke($this->_convertGetSubscriptionDetails($request)));
}
/**
* Get Debt Balance
*
* Returns the balance corresponding to the given credit instrument.
*
* @see http://docs.amazonwebservices.com/${docPath}GetDebtBalance.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetDebtBalanceRequest request
* or Amazon_FPS_Model_GetDebtBalanceRequest object itself
* @see Amazon_FPS_Model_GetDebtBalance
* @return Amazon_FPS_Model_GetDebtBalanceResponse Amazon_FPS_Model_GetDebtBalanceResponse
*
* @throws Amazon_FPS_Exception
*/
public function getDebtBalance($request)
{
if (!$request instanceof Amazon_FPS_Model_GetDebtBalanceRequest) {
afps_require_once('Amazon/FPS/Model/GetDebtBalanceRequest.php');
$request = new Amazon_FPS_Model_GetDebtBalanceRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetDebtBalanceResponse.php');
return Amazon_FPS_Model_GetDebtBalanceResponse::fromXML($this->_invoke($this->_convertGetDebtBalance($request)));
}
/**
* Get Outstanding Debt Balance
*
* Returns the total outstanding balance for all the credit instruments for the given creditor account.
*
* @see http://docs.amazonwebservices.com/${docPath}GetOutstandingDebtBalance.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetOutstandingDebtBalanceRequest request
* or Amazon_FPS_Model_GetOutstandingDebtBalanceRequest object itself
* @see Amazon_FPS_Model_GetOutstandingDebtBalance
* @return Amazon_FPS_Model_GetOutstandingDebtBalanceResponse Amazon_FPS_Model_GetOutstandingDebtBalanceResponse
*
* @throws Amazon_FPS_Exception
*/
public function getOutstandingDebtBalance($request)
{
if (!$request instanceof Amazon_FPS_Model_GetOutstandingDebtBalanceRequest) {
afps_require_once('Amazon/FPS/Model/GetOutstandingDebtBalanceRequest.php');
$request = new Amazon_FPS_Model_GetOutstandingDebtBalanceRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetOutstandingDebtBalanceResponse.php');
return Amazon_FPS_Model_GetOutstandingDebtBalanceResponse::fromXML($this->_invoke($this->_convertGetOutstandingDebtBalance($request)));
}
/**
* Get Prepaid Balance
*
* Returns the balance available on the given prepaid instrument.
*
* @see http://docs.amazonwebservices.com/${docPath}GetPrepaidBalance.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetPrepaidBalanceRequest request
* or Amazon_FPS_Model_GetPrepaidBalanceRequest object itself
* @see Amazon_FPS_Model_GetPrepaidBalance
* @return Amazon_FPS_Model_GetPrepaidBalanceResponse Amazon_FPS_Model_GetPrepaidBalanceResponse
*
* @throws Amazon_FPS_Exception
*/
public function getPrepaidBalance($request)
{
if (!$request instanceof Amazon_FPS_Model_GetPrepaidBalanceRequest) {
afps_require_once('Amazon/FPS/Model/GetPrepaidBalanceRequest.php');
$request = new Amazon_FPS_Model_GetPrepaidBalanceRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetPrepaidBalanceResponse.php');
return Amazon_FPS_Model_GetPrepaidBalanceResponse::fromXML($this->_invoke($this->_convertGetPrepaidBalance($request)));
}
/**
* Get Token By Caller
*
* Returns the details of a particular token installed by this calling application using the subway co-branded UI.
*
* @see http://docs.amazonwebservices.com/${docPath}GetTokenByCaller.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetTokenByCallerRequest request
* or Amazon_FPS_Model_GetTokenByCallerRequest object itself
* @see Amazon_FPS_Model_GetTokenByCaller
* @return Amazon_FPS_Model_GetTokenByCallerResponse Amazon_FPS_Model_GetTokenByCallerResponse
*
* @throws Amazon_FPS_Exception
*/
public function getTokenByCaller($request)
{
if (!$request instanceof Amazon_FPS_Model_GetTokenByCallerRequest) {
afps_require_once('Amazon/FPS/Model/GetTokenByCallerRequest.php');
$request = new Amazon_FPS_Model_GetTokenByCallerRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetTokenByCallerResponse.php');
return Amazon_FPS_Model_GetTokenByCallerResponse::fromXML($this->_invoke($this->_convertGetTokenByCaller($request)));
}
/**
* Cancel Subscription And Refund
*
* Cancels a subscription.
*
* @see http://docs.amazonwebservices.com/${docPath}CancelSubscriptionAndRefund.html
* @param mixed $request array of parameters for Amazon_FPS_Model_CancelSubscriptionAndRefundRequest request
* or Amazon_FPS_Model_CancelSubscriptionAndRefundRequest object itself
* @see Amazon_FPS_Model_CancelSubscriptionAndRefund
* @return Amazon_FPS_Model_CancelSubscriptionAndRefundResponse Amazon_FPS_Model_CancelSubscriptionAndRefundResponse
*
* @throws Amazon_FPS_Exception
*/
public function cancelSubscriptionAndRefund($request)
{
if (!$request instanceof Amazon_FPS_Model_CancelSubscriptionAndRefundRequest) {
afps_require_once('Amazon/FPS/Model/CancelSubscriptionAndRefundRequest.php');
$request = new Amazon_FPS_Model_CancelSubscriptionAndRefundRequest($request);
}
afps_require_once('Amazon/FPS/Model/CancelSubscriptionAndRefundResponse.php');
return Amazon_FPS_Model_CancelSubscriptionAndRefundResponse::fromXML($this->_invoke($this->_convertCancelSubscriptionAndRefund($request)));
}
/**
* Get Token Usage
*
* Returns the usage of a token.
*
* @see http://docs.amazonwebservices.com/${docPath}GetTokenUsage.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetTokenUsageRequest request
* or Amazon_FPS_Model_GetTokenUsageRequest object itself
* @see Amazon_FPS_Model_GetTokenUsage
* @return Amazon_FPS_Model_GetTokenUsageResponse Amazon_FPS_Model_GetTokenUsageResponse
*
* @throws Amazon_FPS_Exception
*/
public function getTokenUsage($request)
{
if (!$request instanceof Amazon_FPS_Model_GetTokenUsageRequest) {
afps_require_once('Amazon/FPS/Model/GetTokenUsageRequest.php');
$request = new Amazon_FPS_Model_GetTokenUsageRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetTokenUsageResponse.php');
return Amazon_FPS_Model_GetTokenUsageResponse::fromXML($this->_invoke($this->_convertGetTokenUsage($request)));
}
/**
* Get Tokens
*
* Returns a list of tokens installed on the given account.
*
* @see http://docs.amazonwebservices.com/${docPath}GetTokens.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetTokensRequest request
* or Amazon_FPS_Model_GetTokensRequest object itself
* @see Amazon_FPS_Model_GetTokens
* @return Amazon_FPS_Model_GetTokensResponse Amazon_FPS_Model_GetTokensResponse
*
* @throws Amazon_FPS_Exception
*/
public function getTokens($request)
{
if (!$request instanceof Amazon_FPS_Model_GetTokensRequest) {
afps_require_once('Amazon/FPS/Model/GetTokensRequest.php');
$request = new Amazon_FPS_Model_GetTokensRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetTokensResponse.php');
return Amazon_FPS_Model_GetTokensResponse::fromXML($this->_invoke($this->_convertGetTokens($request)));
}
/**
* Get Total Prepaid Liability
*
* Returns the total liability held by the given account corresponding to all the prepaid instruments owned by the account.
*
* @see http://docs.amazonwebservices.com/${docPath}GetTotalPrepaidLiability.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetTotalPrepaidLiabilityRequest request
* or Amazon_FPS_Model_GetTotalPrepaidLiabilityRequest object itself
* @see Amazon_FPS_Model_GetTotalPrepaidLiability
* @return Amazon_FPS_Model_GetTotalPrepaidLiabilityResponse Amazon_FPS_Model_GetTotalPrepaidLiabilityResponse
*
* @throws Amazon_FPS_Exception
*/
public function getTotalPrepaidLiability($request)
{
if (!$request instanceof Amazon_FPS_Model_GetTotalPrepaidLiabilityRequest) {
afps_require_once('Amazon/FPS/Model/GetTotalPrepaidLiabilityRequest.php');
$request = new Amazon_FPS_Model_GetTotalPrepaidLiabilityRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetTotalPrepaidLiabilityResponse.php');
return Amazon_FPS_Model_GetTotalPrepaidLiabilityResponse::fromXML($this->_invoke($this->_convertGetTotalPrepaidLiability($request)));
}
/**
* Get Transaction
*
* Returns all details of a transaction.
*
* @see http://docs.amazonwebservices.com/${docPath}GetTransaction.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetTransactionRequest request
* or Amazon_FPS_Model_GetTransactionRequest object itself
* @see Amazon_FPS_Model_GetTransaction
* @return Amazon_FPS_Model_GetTransactionResponse Amazon_FPS_Model_GetTransactionResponse
*
* @throws Amazon_FPS_Exception
*/
public function getTransaction($request)
{
if (!$request instanceof Amazon_FPS_Model_GetTransactionRequest) {
afps_require_once('Amazon/FPS/Model/GetTransactionRequest.php');
$request = new Amazon_FPS_Model_GetTransactionRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetTransactionResponse.php');
return Amazon_FPS_Model_GetTransactionResponse::fromXML($this->_invoke($this->_convertGetTransaction($request)));
}
/**
* Get Transaction Status
*
* Gets the latest status of a transaction.
*
* @see http://docs.amazonwebservices.com/${docPath}GetTransactionStatus.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetTransactionStatusRequest request
* or Amazon_FPS_Model_GetTransactionStatusRequest object itself
* @see Amazon_FPS_Model_GetTransactionStatus
* @return Amazon_FPS_Model_GetTransactionStatusResponse Amazon_FPS_Model_GetTransactionStatusResponse
*
* @throws Amazon_FPS_Exception
*/
public function getTransactionStatus($request)
{
if (!$request instanceof Amazon_FPS_Model_GetTransactionStatusRequest) {
afps_require_once('Amazon/FPS/Model/GetTransactionStatusRequest.php');
$request = new Amazon_FPS_Model_GetTransactionStatusRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetTransactionStatusResponse.php');
return Amazon_FPS_Model_GetTransactionStatusResponse::fromXML($this->_invoke($this->_convertGetTransactionStatus($request)));
}
/**
* Get Payment Instruction
*
* Gets the payment instruction of a token.
*
* @see http://docs.amazonwebservices.com/${docPath}GetPaymentInstruction.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetPaymentInstructionRequest request
* or Amazon_FPS_Model_GetPaymentInstructionRequest object itself
* @see Amazon_FPS_Model_GetPaymentInstruction
* @return Amazon_FPS_Model_GetPaymentInstructionResponse Amazon_FPS_Model_GetPaymentInstructionResponse
*
* @throws Amazon_FPS_Exception
*/
public function getPaymentInstruction($request)
{
if (!$request instanceof Amazon_FPS_Model_GetPaymentInstructionRequest) {
afps_require_once('Amazon/FPS/Model/GetPaymentInstructionRequest.php');
$request = new Amazon_FPS_Model_GetPaymentInstructionRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetPaymentInstructionResponse.php');
return Amazon_FPS_Model_GetPaymentInstructionResponse::fromXML($this->_invoke($this->_convertGetPaymentInstruction($request)));
}
/**
* Install Payment Instruction
* Installs a payment instruction for caller.
*
* @see http://docs.amazonwebservices.com/${docPath}InstallPaymentInstruction.html
* @param mixed $request array of parameters for Amazon_FPS_Model_InstallPaymentInstructionRequest request
* or Amazon_FPS_Model_InstallPaymentInstructionRequest object itself
* @see Amazon_FPS_Model_InstallPaymentInstruction
* @return Amazon_FPS_Model_InstallPaymentInstructionResponse Amazon_FPS_Model_InstallPaymentInstructionResponse
*
* @throws Amazon_FPS_Exception
*/
public function installPaymentInstruction($request)
{
if (!$request instanceof Amazon_FPS_Model_InstallPaymentInstructionRequest) {
afps_require_once('Amazon/FPS/Model/InstallPaymentInstructionRequest.php');
$request = new Amazon_FPS_Model_InstallPaymentInstructionRequest($request);
}
afps_require_once('Amazon/FPS/Model/InstallPaymentInstructionResponse.php');
return Amazon_FPS_Model_InstallPaymentInstructionResponse::fromXML($this->_invoke($this->_convertInstallPaymentInstruction($request)));
}
/**
* Pay
*
* Allows calling applications to move money from a sender to a recipient.
*
* @see http://docs.amazonwebservices.com/${docPath}Pay.html
* @param mixed $request array of parameters for Amazon_FPS_Model_PayRequest request
* or Amazon_FPS_Model_PayRequest object itself
* @see Amazon_FPS_Model_Pay
* @return Amazon_FPS_Model_PayResponse Amazon_FPS_Model_PayResponse
*
* @throws Amazon_FPS_Exception
*/
public function pay($request)
{
if (!$request instanceof Amazon_FPS_Model_PayRequest) {
afps_require_once('Amazon/FPS/Model/PayRequest.php');
$request = new Amazon_FPS_Model_PayRequest($request);
}
afps_require_once('Amazon/FPS/Model/PayResponse.php');
return Amazon_FPS_Model_PayResponse::fromXML($this->_invoke($this->_convertPay($request)));
}
/**
* Refund
*
* Refunds a previously completed transaction.
*
* @see http://docs.amazonwebservices.com/${docPath}Refund.html
* @param mixed $request array of parameters for Amazon_FPS_Model_RefundRequest request
* or Amazon_FPS_Model_RefundRequest object itself
* @see Amazon_FPS_Model_Refund
* @return Amazon_FPS_Model_RefundResponse Amazon_FPS_Model_RefundResponse
*
* @throws Amazon_FPS_Exception
*/
public function refund($request)
{
if (!$request instanceof Amazon_FPS_Model_RefundRequest) {
afps_require_once('Amazon/FPS/Model/RefundRequest.php');
$request = new Amazon_FPS_Model_RefundRequest($request);
}
afps_require_once('Amazon/FPS/Model/RefundResponse.php');
return Amazon_FPS_Model_RefundResponse::fromXML($this->_invoke($this->_convertRefund($request)));
}
/**
* Reserve
*
* Reserve API is part of the Reserve and Settle API conjunction that serve the purpose of a pay where the authorization and settlement have a timing difference.
*
* @see http://docs.amazonwebservices.com/${docPath}Reserve.html
* @param mixed $request array of parameters for Amazon_FPS_Model_ReserveRequest request
* or Amazon_FPS_Model_ReserveRequest object itself
* @see Amazon_FPS_Model_Reserve
* @return Amazon_FPS_Model_ReserveResponse Amazon_FPS_Model_ReserveResponse
*
* @throws Amazon_FPS_Exception
*/
public function reserve($request)
{
if (!$request instanceof Amazon_FPS_Model_ReserveRequest) {
afps_require_once('Amazon/FPS/Model/ReserveRequest.php');
$request = new Amazon_FPS_Model_ReserveRequest($request);
}
afps_require_once('Amazon/FPS/Model/ReserveResponse.php');
return Amazon_FPS_Model_ReserveResponse::fromXML($this->_invoke($this->_convertReserve($request)));
}
/**
* Settle
*
* The Settle API is used in conjunction with the Reserve API and is used to settle previously reserved transaction.
*
* @see http://docs.amazonwebservices.com/${docPath}Settle.html
* @param mixed $request array of parameters for Amazon_FPS_Model_SettleRequest request
* or Amazon_FPS_Model_SettleRequest object itself
* @see Amazon_FPS_Model_Settle
* @return Amazon_FPS_Model_SettleResponse Amazon_FPS_Model_SettleResponse
*
* @throws Amazon_FPS_Exception
*/
public function settle($request)
{
if (!$request instanceof Amazon_FPS_Model_SettleRequest) {
afps_require_once('Amazon/FPS/Model/SettleRequest.php');
$request = new Amazon_FPS_Model_SettleRequest($request);
}
afps_require_once('Amazon/FPS/Model/SettleResponse.php');
return Amazon_FPS_Model_SettleResponse::fromXML($this->_invoke($this->_convertSettle($request)));
}
/**
* Settle Debt
*
* Allows a caller to initiate a transaction that atomically transfers money from a sender’s payment instrument to the recipient, while decreasing corresponding debt balance.
*
* @see http://docs.amazonwebservices.com/${docPath}SettleDebt.html
* @param mixed $request array of parameters for Amazon_FPS_Model_SettleDebtRequest request
* or Amazon_FPS_Model_SettleDebtRequest object itself
* @see Amazon_FPS_Model_SettleDebt
* @return Amazon_FPS_Model_SettleDebtResponse Amazon_FPS_Model_SettleDebtResponse
*
* @throws Amazon_FPS_Exception
*/
public function settleDebt($request)
{
if (!$request instanceof Amazon_FPS_Model_SettleDebtRequest) {
afps_require_once('Amazon/FPS/Model/SettleDebtRequest.php');
$request = new Amazon_FPS_Model_SettleDebtRequest($request);
}
afps_require_once('Amazon/FPS/Model/SettleDebtResponse.php');
return Amazon_FPS_Model_SettleDebtResponse::fromXML($this->_invoke($this->_convertSettleDebt($request)));
}
/**
* Write Off Debt
*
* Allows a creditor to write off the debt balance accumulated partially or fully at any time.
*
* @see http://docs.amazonwebservices.com/${docPath}WriteOffDebt.html
* @param mixed $request array of parameters for Amazon_FPS_Model_WriteOffDebtRequest request
* or Amazon_FPS_Model_WriteOffDebtRequest object itself
* @see Amazon_FPS_Model_WriteOffDebt
* @return Amazon_FPS_Model_WriteOffDebtResponse Amazon_FPS_Model_WriteOffDebtResponse
*
* @throws Amazon_FPS_Exception
*/
public function writeOffDebt($request)
{
if (!$request instanceof Amazon_FPS_Model_WriteOffDebtRequest) {
afps_require_once('Amazon/FPS/Model/WriteOffDebtRequest.php');
$request = new Amazon_FPS_Model_WriteOffDebtRequest($request);
}
afps_require_once('Amazon/FPS/Model/WriteOffDebtResponse.php');
return Amazon_FPS_Model_WriteOffDebtResponse::fromXML($this->_invoke($this->_convertWriteOffDebt($request)));
}
/**
* Get Recipient Verification Status
*
* Returns the recipient status.
*
* @see http://docs.amazonwebservices.com/${docPath}GetRecipientVerificationStatus.html
* @param mixed $request array of parameters for Amazon_FPS_Model_GetRecipientVerificationStatusRequest request
* or Amazon_FPS_Model_GetRecipientVerificationStatusRequest object itself
* @see Amazon_FPS_Model_GetRecipientVerificationStatus
* @return Amazon_FPS_Model_GetRecipientVerificationStatusResponse Amazon_FPS_Model_GetRecipientVerificationStatusResponse
*
* @throws Amazon_FPS_Exception
*/
public function getRecipientVerificationStatus($request)
{
if (!$request instanceof Amazon_FPS_Model_GetRecipientVerificationStatusRequest) {
afps_require_once('Amazon/FPS/Model/GetRecipientVerificationStatusRequest.php');
$request = new Amazon_FPS_Model_GetRecipientVerificationStatusRequest($request);
}
afps_require_once('Amazon/FPS/Model/GetRecipientVerificationStatusResponse.php');
return Amazon_FPS_Model_GetRecipientVerificationStatusResponse::fromXML($this->_invoke($this->_convertGetRecipientVerificationStatus($request)));
}
/**
* Verify Signature
*
* Verify the signature that FPS sent in IPN or callback urls.
*
* @see http://docs.amazonwebservices.com/${docPath}VerifySignature.html
* @param mixed $request array of parameters for Amazon_FPS_Model_VerifySignatureRequest request
* or Amazon_FPS_Model_VerifySignatureRequest object itself
* @see Amazon_FPS_Model_VerifySignature
* @return Amazon_FPS_Model_VerifySignatureResponse Amazon_FPS_Model_VerifySignatureResponse
*
* @throws Amazon_FPS_Exception
*/
public function verifySignature($request)
{
if (!$request instanceof Amazon_FPS_Model_VerifySignatureRequest) {
afps_require_once('Amazon/FPS/Model/VerifySignatureRequest.php');
$request = new Amazon_FPS_Model_VerifySignatureRequest($request);
}
afps_require_once('Amazon/FPS/Model/VerifySignatureResponse.php');
return Amazon_FPS_Model_VerifySignatureResponse::fromXML($this->_invoke($this->_convertVerifySignature($request)));
}
// Private API ------------------------------------------------------------//
/**
* Invoke request and return response
*/
private function _invoke(array $parameters)
{
$actionName = $parameters["Action"];
$response = array();
$responseBody = null;
$statusCode = 200;
/* Submit the request and read response body */
try {
/* Add required request parameters */
$parameters = $this->_addRequiredParameters($parameters);
$shouldRetry = true;
$retries = 0;
do {
try {
$response = $this->_httpPost($parameters);
if ($response['Status'] === 200) {
$shouldRetry = false;
} else {
if ($response['Status'] === 500 || $response['Status'] === 503) {
$shouldRetry = true;
$this->_pauseOnRetry(++$retries, $response['Status']);
} else {
throw $this->_reportAnyErrors($response['ResponseBody'], $response['Status']);
}
}
/* Rethrow on deserializer error */
} catch (Exception $e) {
afps_require_once('Amazon/FPS/Exception.php');
if ($e instanceof Amazon_FPS_Exception) {
throw $e;
} else {
afps_require_once('Amazon/FPS/Exception.php');
throw new Amazon_FPS_Exception(array('Exception' => $e, 'Message' => $e->getMessage()));
}
}
} while ($shouldRetry);
} catch (Amazon_FPS_Exception $se) {
throw $se;
} catch (Exception $t) {
throw new Amazon_FPS_Exception(array('Exception' => $t, 'Message' => $t->getMessage()));
}
return $response['ResponseBody'];
}
/**
* Look for additional error strings in the response and return formatted exception
*/
private function _reportAnyErrors($responseBody, $status, Exception $e = null)
{
$ex = null;
if (!is_null($responseBody) && strpos($responseBody, '<') === 0) {
if (preg_match('@(.*).*(.*)(.*).*()?@mi',
$responseBody, $errorMatcherOne)) {
$requestId = $errorMatcherOne[1];
$code = $errorMatcherOne[2];
$message = $errorMatcherOne[3];
afps_require_once('Amazon/FPS/Exception.php');
$ex = new Amazon_FPS_Exception(array ('Message' => $message, 'StatusCode' => $status, 'ErrorCode' => $code,
'ErrorType' => 'Unknown', 'RequestId' => $requestId, 'XML' => $responseBody));
} elseif (preg_match('@(.*)(.*).*()?.*(.*)@mi',
$responseBody, $errorMatcherTwo)) {
$code = $errorMatcherTwo[1];
$message = $errorMatcherTwo[2];
$requestId = $errorMatcherTwo[4];
afps_require_once('Amazon/FPS/Exception.php');
$ex = new Amazon_FPS_Exception(array ('Message' => $message, 'StatusCode' => $status, 'ErrorCode' => $code,
'ErrorType' => 'Unknown', 'RequestId' => $requestId, 'XML' => $responseBody));
} elseif (preg_match('@(.*)(.*)(.*).*.*()?.*(.*)@mi',
$responseBody, $errorMatcherThree)) {
$type = $errorMatcherThree[1];
$code = $errorMatcherThree[2];
$message = $errorMatcherThree[3];
$requestId = $errorMatcherThree[5];
afps_require_once('Amazon/FPS/Exception.php');
$ex = new Amazon_FPS_Exception(array ('Message' => $message, 'StatusCode' => $status, 'ErrorCode' => $code,
'ErrorType' => $type, 'RequestId' => $requestId, 'XML' => $responseBody));
} else {
afps_require_once('Amazon/FPS/Exception.php');
$ex = new Amazon_FPS_Exception(array('Message' => 'Internal Error', 'StatusCode' => $status));
}
} else {
afps_require_once('Amazon/FPS/Exception.php');
$ex = new Amazon_FPS_Exception(array('Message' => 'Internal Error', 'StatusCode' => $status));
}
return $ex;
}
/**
* Perform HTTP post with exponential retries on error 500 and 503
*
*/
private function _httpPost(array $parameters)
{
$fpsServiceEndPoint = $this->_config["ServiceURL"];
$query = http_build_query($parameters);
//initialize CURL
$curlHandle = curl_init();
//compose CURL request
curl_setopt($curlHandle, CURLOPT_URL, $fpsServiceEndPoint);
curl_setopt($curlHandle, CURLOPT_POST, true);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $query);
curl_setopt($curlHandle, CURLOPT_FRESH_CONNECT, true);
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, '2');
curl_setopt($curlHandle, CURLOPT_CAINFO, dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'ca-bundle.crt');
curl_setopt($curlHandle, CURLOPT_CAPATH, dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'ca-bundle.crt');
curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curlHandle, CURLOPT_MAXREDIRS, 0);
curl_setopt($curlHandle, CURLOPT_HEADER, true);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandle, CURLOPT_NOSIGNAL, true);
curl_setopt($curlHandle, CURLOPT_USERAGENT, self::USER_AGENT_IDENTIFIER);
// Execute the request
$response = curl_exec($curlHandle);
// to grab the response code only from the Header
list($other, $responseBody) = explode("\r\n\r\n", $response, 2);
$other = preg_split("/\r\n|\n|\r/", $other);
list($protocol, $code, $text) = explode(' ', trim(array_shift($other)), 3);
//close the CURL conection
curl_close($curlHandle);
return array ('Status' => (int)$code, 'ResponseBody' => $responseBody);
}
/**
* Exponential sleep on failed request
* @param retries current retry
* @throws Amazon_FPS_Exception if maximum number of retries has been reached
*/
private function _pauseOnRetry($retries, $status)
{
if ($retries <= $this->_config['MaxErrorRetry']) {
$delay = (int) (pow(4, $retries) * 100000) ;
usleep($delay);
} else {
afps_require_once('Amazon/FPS/Exception.php');
throw new Amazon_FPS_Exception (array ('Message' => "Maximum number of retry attempts reached : $retries", 'StatusCode' => $status));
}
}
/**
* Add authentication related and version parameters
*/
private function _addRequiredParameters(array $parameters)
{
$parameters['AWSAccessKeyId'] = $this->_awsAccessKeyId;
$parameters['Timestamp'] = $this->_getFormattedTimestamp();
$parameters['Version'] = self::SERVICE_VERSION;
$parameters['SignatureVersion'] = $this->_config['SignatureVersion'];
if ($parameters['SignatureVersion'] > 1) {
$parameters['SignatureMethod'] = $this->_config['SignatureMethod'];
}
$parameters['Signature'] = $this->_signParameters($parameters, $this->_awsSecretAccessKey);
return $parameters;
}
/**
* Convert paremeters to Url encoded query string
*/
private function _getParametersAsString(array $parameters)
{
$queryParameters = array();
foreach ($parameters as $key => $value) {
$queryParameters[] = $key . '=' . $this->_urlencode($value);
}
return implode('&', $queryParameters);
}
/**
* Computes RFC 2104-compliant HMAC signature for request parameters
* Implements AWS Signature, as per following spec:
*
* If Signature Version is 2, string to sign is based on following:
*
* 1. The HTTP Request Method followed by an ASCII newline (%0A)
* 2. The HTTP Host header in the form of lowercase host, followed by an ASCII newline.
* 3. The URL encoded HTTP absolute path component of the URI
* (up to but not including the query string parameters);
* if this is empty use a forward '/'. This parameter is followed by an ASCII newline.
* 4. The concatenation of all query string components (names and values)
* as UTF-8 characters which are URL encoded as per RFC 3986
* (hex characters MUST be uppercase), sorted using lexicographic byte ordering.
* Parameter names are separated from their values by the '=' character
* (ASCII character 61), even if the value is empty.
* Pairs of parameter and values are separated by the '&' character (ASCII code 38).
*
*/
private function _signParameters(array $parameters, $key) {
$signatureVersion = $parameters['SignatureVersion'];
$algorithm = "HmacSHA1";
$stringToSign = null;
if (2 === $signatureVersion) {
$algorithm = $this->_config['SignatureMethod'];
$parameters['SignatureMethod'] = $algorithm;
$stringToSign = $this->_calculateStringToSignV2($parameters);
} else {
throw new Exception("Invalid Signature Version specified");
}
return $this->_sign($stringToSign, $key, $algorithm);
}
/**
* Calculate String to Sign for SignatureVersion 2
* @param array $parameters request parameters
* @return String to Sign
*/
private function _calculateStringToSignV2(array $parameters) {
$data = 'POST';
$data .= "\n";
$endpoint = parse_url ($this->_config['ServiceURL']);
$data .= $endpoint['host'];
$data .= "\n";
$uri = array_key_exists('path', $endpoint) ? $endpoint['path'] : null;
if (!isset ($uri)) {
$uri = "/";
}
$uriencoded = implode("/", array_map(array($this, "_urlencode"), explode("/", $uri)));
$data .= $uriencoded;
$data .= "\n";
uksort($parameters, 'strcmp');
$data .= $this->_getParametersAsString($parameters);
return $data;
}
private function _urlencode($value) {
return str_replace('%7E', '~', rawurlencode($value));
}
/**
* Computes RFC 2104-compliant HMAC signature.
*/
private function _sign($data, $key, $algorithm)
{
if ($algorithm === 'HmacSHA1') {
$hash = 'sha1';
} else if ($algorithm === 'HmacSHA256') {
$hash = 'sha256';
} else {
throw new Exception ("Non-supported signing method specified");
}
return base64_encode(
hash_hmac($hash, $data, $key, true)
);
}
/**
* Formats date as ISO 8601 timestamp
*/
private function _getFormattedTimestamp()
{
return gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z", time());
}
/**
* Convert CancelRequest to name value pairs
*/
private function _convertCancel($request) {
$parameters = array();
$parameters['Action'] = 'Cancel';
if ($request->isSetTransactionId()) {
$parameters['TransactionId'] = $request->getTransactionId();
}
if ($request->isSetDescription()) {
$parameters['Description'] = $request->getDescription();
}
if ($request->isSetOverrideIPNURL()) {
$parameters['OverrideIPNURL'] = $request->getOverrideIPNURL();
}
return $parameters;
}
/**
* Convert CancelTokenRequest to name value pairs
*/
private function _convertCancelToken($request) {
$parameters = array();
$parameters['Action'] = 'CancelToken';
if ($request->isSetTokenId()) {
$parameters['TokenId'] = $request->getTokenId();
}
if ($request->isSetReasonText()) {
$parameters['ReasonText'] = $request->getReasonText();
}
if ($request->isSetOverrideIPNURL()) {
$parameters['OverrideIPNURL'] = $request->getOverrideIPNURL();
}
return $parameters;
}
/**
* Convert CancelSubscriptionAndRefundRequest to name value pairs
*/
private function _convertCancelSubscriptionAndRefund($request) {
$parameters = array();
$parameters['Action'] = 'CancelSubscriptionAndRefund';
if ($request->isSetSubscriptionId()) {
$parameters['SubscriptionId'] = $request->getSubscriptionId();
}
if ($request->isSetRefundAmount()) {
$refundAmountcancelSubscriptionAndRefundRequest = $request->getRefundAmount();
if ($refundAmountcancelSubscriptionAndRefundRequest->isSetCurrencyCode()) {
$parameters['RefundAmount' . '.' . 'CurrencyCode'] = $refundAmountcancelSubscriptionAndRefundRequest->getCurrencyCode();
}
if ($refundAmountcancelSubscriptionAndRefundRequest->isSetValue()) {
$parameters['RefundAmount' . '.' . 'Value'] = $refundAmountcancelSubscriptionAndRefundRequest->getValue();
}
}
if ($request->isSetCallerReference()) {
$parameters['CallerReference'] = $request->getCallerReference();
}
if ($request->isSetCancelReason()) {
$parameters['CancelReason'] = $request->getCancelReason();
}
return $parameters;
}
/**
* Convert FundPrepaidRequest to name value pairs
*/
private function _convertFundPrepaid($request) {
$parameters = array();
$parameters['Action'] = 'FundPrepaid';
if ($request->isSetSenderTokenId()) {
$parameters['SenderTokenId'] = $request->getSenderTokenId();
}
if ($request->isSetPrepaidInstrumentId()) {
$parameters['PrepaidInstrumentId'] = $request->getPrepaidInstrumentId();
}
if ($request->isSetFundingAmount()) {
$fundingAmountfundPrepaidRequest = $request->getFundingAmount();
if ($fundingAmountfundPrepaidRequest->isSetCurrencyCode()) {
$parameters['FundingAmount' . '.' . 'CurrencyCode'] = $fundingAmountfundPrepaidRequest->getCurrencyCode();
}
if ($fundingAmountfundPrepaidRequest->isSetValue()) {
$parameters['FundingAmount' . '.' . 'Value'] = $fundingAmountfundPrepaidRequest->getValue();
}
}
if ($request->isSetCallerReference()) {
$parameters['CallerReference'] = $request->getCallerReference();
}
if ($request->isSetSenderDescription()) {
$parameters['SenderDescription'] = $request->getSenderDescription();
}
if ($request->isSetCallerDescription()) {
$parameters['CallerDescription'] = $request->getCallerDescription();
}
if ($request->isSetDescriptorPolicy()) {
$descriptorPolicyfundPrepaidRequest = $request->getDescriptorPolicy();
if ($descriptorPolicyfundPrepaidRequest->isSetSoftDescriptorType()) {
$parameters['DescriptorPolicy' . '.' . 'SoftDescriptorType'] = $descriptorPolicyfundPrepaidRequest->getSoftDescriptorType();
}
if ($descriptorPolicyfundPrepaidRequest->isSetCSOwner()) {
$parameters['DescriptorPolicy' . '.' . 'CSOwner'] = $descriptorPolicyfundPrepaidRequest->getCSOwner();
}
}
if ($request->isSetTransactionTimeoutInMins()) {
$parameters['TransactionTimeoutInMins'] = $request->getTransactionTimeoutInMins();
}
if ($request->isSetOverrideIPNURL()) {
$parameters['OverrideIPNURL'] = $request->getOverrideIPNURL();
}
return $parameters;
}
/**
* Convert GetAccountActivityRequest to name value pairs
*/
private function _convertGetAccountActivity($request) {
$parameters = array();
$parameters['Action'] = 'GetAccountActivity';
if ($request->isSetMaxBatchSize()) {
$parameters['MaxBatchSize'] = $request->getMaxBatchSize();
}
if ($request->isSetStartDate()) {
$parameters['StartDate'] = $request->getStartDate();
}
if ($request->isSetEndDate()) {
$parameters['EndDate'] = $request->getEndDate();
}
if ($request->isSetSortOrderByDate()) {
$parameters['SortOrderByDate'] = $request->getSortOrderByDate();
}
if ($request->isSetFPSOperation()) {
$parameters['FPSOperation'] = $request->getFPSOperation();
}
if ($request->isSetPaymentMethod()) {
$parameters['PaymentMethod'] = $request->getPaymentMethod();
}
foreach ($request->getRole() as $rolegetAccountActivityRequestIndex => $rolegetAccountActivityRequest) {
$parameters['Role' . '.' . ($rolegetAccountActivityRequestIndex + 1)] = $rolegetAccountActivityRequest;
}
if ($request->isSetTransactionStatus()) {
$parameters['TransactionStatus'] = $request->getTransactionStatus();
}
return $parameters;
}
/**
* Convert GetAccountBalanceRequest to name value pairs
*/
private function _convertGetAccountBalance($request) {
$parameters = array();
$parameters['Action'] = 'GetAccountBalance';
return $parameters;
}
/**
* Convert GetTransactionsForSubscriptionRequest to name value pairs
*/
private function _convertGetTransactionsForSubscription($request) {
$parameters = array();
$parameters['Action'] = 'GetTransactionsForSubscription';
if ($request->isSetSubscriptionId()) {
$parameters['SubscriptionId'] = $request->getSubscriptionId();
}
return $parameters;
}
/**
* Convert GetSubscriptionDetailsRequest to name value pairs
*/
private function _convertGetSubscriptionDetails($request) {
$parameters = array();
$parameters['Action'] = 'GetSubscriptionDetails';
if ($request->isSetSubscriptionId()) {
$parameters['SubscriptionId'] = $request->getSubscriptionId();
}
return $parameters;
}
/**
* Convert GetDebtBalanceRequest to name value pairs
*/
private function _convertGetDebtBalance($request) {
$parameters = array();
$parameters['Action'] = 'GetDebtBalance';
if ($request->isSetCreditInstrumentId()) {
$parameters['CreditInstrumentId'] = $request->getCreditInstrumentId();
}
return $parameters;
}
/**
* Convert GetOutstandingDebtBalanceRequest to name value pairs
*/
private function _convertGetOutstandingDebtBalance($request) {
$parameters = array();
$parameters['Action'] = 'GetOutstandingDebtBalance';
return $parameters;
}
/**
* Convert GetPrepaidBalanceRequest to name value pairs
*/
private function _convertGetPrepaidBalance($request) {
$parameters = array();
$parameters['Action'] = 'GetPrepaidBalance';
if ($request->isSetPrepaidInstrumentId()) {
$parameters['PrepaidInstrumentId'] = $request->getPrepaidInstrumentId();
}
return $parameters;
}
/**
* Convert GetTokenByCallerRequest to name value pairs
*/
private function _convertGetTokenByCaller($request) {
$parameters = array();
$parameters['Action'] = 'GetTokenByCaller';
if ($request->isSetTokenId()) {
$parameters['TokenId'] = $request->getTokenId();
}
if ($request->isSetCallerReference()) {
$parameters['CallerReference'] = $request->getCallerReference();
}
return $parameters;
}
/**
* Convert GetTokenUsageRequest to name value pairs
*/
private function _convertGetTokenUsage($request) {
$parameters = array();
$parameters['Action'] = 'GetTokenUsage';
if ($request->isSetTokenId()) {
$parameters['TokenId'] = $request->getTokenId();
}
return $parameters;
}
/**
* Convert GetTokensRequest to name value pairs
*/
private function _convertGetTokens($request) {
$parameters = array();
$parameters['Action'] = 'GetTokens';
if ($request->isSetTokenStatus()) {
$parameters['TokenStatus'] = $request->getTokenStatus();
}
if ($request->isSetTokenType()) {
$parameters['TokenType'] = $request->getTokenType();
}
if ($request->isSetCallerReference()) {
$parameters['CallerReference'] = $request->getCallerReference();
}
if ($request->isSetTokenFriendlyName()) {
$parameters['TokenFriendlyName'] = $request->getTokenFriendlyName();
}
return $parameters;
}
/**
* Convert GetTotalPrepaidLiabilityRequest to name value pairs
*/
private function _convertGetTotalPrepaidLiability($request) {
$parameters = array();
$parameters['Action'] = 'GetTotalPrepaidLiability';
return $parameters;
}
/**
* Convert GetTransactionRequest to name value pairs
*/
private function _convertGetTransaction($request) {
$parameters = array();
$parameters['Action'] = 'GetTransaction';
if ($request->isSetTransactionId()) {
$parameters['TransactionId'] = $request->getTransactionId();
}
return $parameters;
}
/**
* Convert GetTransactionStatusRequest to name value pairs
*/
private function _convertGetTransactionStatus($request) {
$parameters = array();
$parameters['Action'] = 'GetTransactionStatus';
if ($request->isSetTransactionId()) {
$parameters['TransactionId'] = $request->getTransactionId();
}
return $parameters;
}
/**
* Convert GetPaymentInstructionRequest to name value pairs
*/
private function _convertGetPaymentInstruction($request) {
$parameters = array();
$parameters['Action'] = 'GetPaymentInstruction';
if ($request->isSetTokenId()) {
$parameters['TokenId'] = $request->getTokenId();
}
return $parameters;
}
/**
* Convert InstallPaymentInstructionRequest to name value pairs
*/
private function _convertInstallPaymentInstruction($request) {
$parameters = array();
$parameters['Action'] = 'InstallPaymentInstruction';
if ($request->isSetPaymentInstruction()) {
$parameters['PaymentInstruction'] = $request->getPaymentInstruction();
}
if ($request->isSetTokenFriendlyName()) {
$parameters['TokenFriendlyName'] = $request->getTokenFriendlyName();
}
if ($request->isSetCallerReference()) {
$parameters['CallerReference'] = $request->getCallerReference();
}
if ($request->isSetTokenType()) {
$parameters['TokenType'] = $request->getTokenType();
}
if ($request->isSetPaymentReason()) {
$parameters['PaymentReason'] = $request->getPaymentReason();
}
return $parameters;
}
/**
* Convert PayRequest to name value pairs
*/
private function _convertPay($request) {
$parameters = array();
$parameters['Action'] = 'Pay';
if ($request->isSetSenderTokenId()) {
$parameters['SenderTokenId'] = $request->getSenderTokenId();
}
if ($request->isSetRecipientTokenId()) {
$parameters['RecipientTokenId'] = $request->getRecipientTokenId();
}
if ($request->isSetTransactionAmount()) {
$transactionAmountpayRequest = $request->getTransactionAmount();
if ($transactionAmountpayRequest->isSetCurrencyCode()) {
$parameters['TransactionAmount' . '.' . 'CurrencyCode'] = $transactionAmountpayRequest->getCurrencyCode();
}
if ($transactionAmountpayRequest->isSetValue()) {
$parameters['TransactionAmount' . '.' . 'Value'] = $transactionAmountpayRequest->getValue();
}
}
if ($request->isSetChargeFeeTo()) {
$parameters['ChargeFeeTo'] = $request->getChargeFeeTo();
}
if ($request->isSetCallerReference()) {
$parameters['CallerReference'] = $request->getCallerReference();
}
if ($request->isSetCallerDescription()) {
$parameters['CallerDescription'] = $request->getCallerDescription();
}
if ($request->isSetSenderDescription()) {
$parameters['SenderDescription'] = $request->getSenderDescription();
}
if ($request->isSetDescriptorPolicy()) {
$descriptorPolicypayRequest = $request->getDescriptorPolicy();
if ($descriptorPolicypayRequest->isSetSoftDescriptorType()) {
$parameters['DescriptorPolicy' . '.' . 'SoftDescriptorType'] = $descriptorPolicypayRequest->getSoftDescriptorType();
}
if ($descriptorPolicypayRequest->isSetCSOwner()) {
$parameters['DescriptorPolicy' . '.' . 'CSOwner'] = $descriptorPolicypayRequest->getCSOwner();
}
}
if ($request->isSetTransactionTimeoutInMins()) {
$parameters['TransactionTimeoutInMins'] = $request->getTransactionTimeoutInMins();
}
if ($request->isSetMarketplaceFixedFee()) {
$marketplaceFixedFeepayRequest = $request->getMarketplaceFixedFee();
if ($marketplaceFixedFeepayRequest->isSetCurrencyCode()) {
$parameters['MarketplaceFixedFee' . '.' . 'CurrencyCode'] = $marketplaceFixedFeepayRequest->getCurrencyCode();
}
if ($marketplaceFixedFeepayRequest->isSetValue()) {
$parameters['MarketplaceFixedFee' . '.' . 'Value'] = $marketplaceFixedFeepayRequest->getValue();
}
}
if ($request->isSetMarketplaceVariableFee()) {
$parameters['MarketplaceVariableFee'] = $request->getMarketplaceVariableFee();
}
if ($request->isSetOverrideIPNURL()) {
$parameters['OverrideIPNURL'] = $request->getOverrideIPNURL();
}
return $parameters;
}
/**
* Convert RefundRequest to name value pairs
*/
private function _convertRefund($request) {
$parameters = array();
$parameters['Action'] = 'Refund';
if ($request->isSetTransactionId()) {
$parameters['TransactionId'] = $request->getTransactionId();
}
if ($request->isSetRefundAmount()) {
$refundAmountrefundRequest = $request->getRefundAmount();
if ($refundAmountrefundRequest->isSetCurrencyCode()) {
$parameters['RefundAmount' . '.' . 'CurrencyCode'] = $refundAmountrefundRequest->getCurrencyCode();
}
if ($refundAmountrefundRequest->isSetValue()) {
$parameters['RefundAmount' . '.' . 'Value'] = $refundAmountrefundRequest->getValue();
}
}
if ($request->isSetCallerReference()) {
$parameters['CallerReference'] = $request->getCallerReference();
}
if ($request->isSetCallerDescription()) {
$parameters['CallerDescription'] = $request->getCallerDescription();
}
if ($request->isSetMarketplaceRefundPolicy()) {
$parameters['MarketplaceRefundPolicy'] = $request->getMarketplaceRefundPolicy();
}
if ($request->isSetOverrideIPNURL()) {
$parameters['OverrideIPNURL'] = $request->getOverrideIPNURL();
}
return $parameters;
}
/**
* Convert ReserveRequest to name value pairs
*/
private function _convertReserve($request) {
$parameters = array();
$parameters['Action'] = 'Reserve';
if ($request->isSetSenderTokenId()) {
$parameters['SenderTokenId'] = $request->getSenderTokenId();
}
if ($request->isSetRecipientTokenId()) {
$parameters['RecipientTokenId'] = $request->getRecipientTokenId();
}
if ($request->isSetTransactionAmount()) {
$transactionAmountreserveRequest = $request->getTransactionAmount();
if ($transactionAmountreserveRequest->isSetCurrencyCode()) {
$parameters['TransactionAmount' . '.' . 'CurrencyCode'] = $transactionAmountreserveRequest->getCurrencyCode();
}
if ($transactionAmountreserveRequest->isSetValue()) {
$parameters['TransactionAmount' . '.' . 'Value'] = $transactionAmountreserveRequest->getValue();
}
}
if ($request->isSetChargeFeeTo()) {
$parameters['ChargeFeeTo'] = $request->getChargeFeeTo();
}
if ($request->isSetCallerReference()) {
$parameters['CallerReference'] = $request->getCallerReference();
}
if ($request->isSetCallerDescription()) {
$parameters['CallerDescription'] = $request->getCallerDescription();
}
if ($request->isSetSenderDescription()) {
$parameters['SenderDescription'] = $request->getSenderDescription();
}
if ($request->isSetDescriptorPolicy()) {
$descriptorPolicyreserveRequest = $request->getDescriptorPolicy();
if ($descriptorPolicyreserveRequest->isSetSoftDescriptorType()) {
$parameters['DescriptorPolicy' . '.' . 'SoftDescriptorType'] = $descriptorPolicyreserveRequest->getSoftDescriptorType();
}
if ($descriptorPolicyreserveRequest->isSetCSOwner()) {
$parameters['DescriptorPolicy' . '.' . 'CSOwner'] = $descriptorPolicyreserveRequest->getCSOwner();
}
}
if ($request->isSetTransactionTimeoutInMins()) {
$parameters['TransactionTimeoutInMins'] = $request->getTransactionTimeoutInMins();
}
if ($request->isSetMarketplaceFixedFee()) {
$marketplaceFixedFeereserveRequest = $request->getMarketplaceFixedFee();
if ($marketplaceFixedFeereserveRequest->isSetCurrencyCode()) {
$parameters['MarketplaceFixedFee' . '.' . 'CurrencyCode'] = $marketplaceFixedFeereserveRequest->getCurrencyCode();
}
if ($marketplaceFixedFeereserveRequest->isSetValue()) {
$parameters['MarketplaceFixedFee' . '.' . 'Value'] = $marketplaceFixedFeereserveRequest->getValue();
}
}
if ($request->isSetMarketplaceVariableFee()) {
$parameters['MarketplaceVariableFee'] = $request->getMarketplaceVariableFee();
}
if ($request->isSetOverrideIPNURL()) {
$parameters['OverrideIPNURL'] = $request->getOverrideIPNURL();
}
return $parameters;
}
/**
* Convert SettleRequest to name value pairs
*/
private function _convertSettle($request) {
$parameters = array();
$parameters['Action'] = 'Settle';
if ($request->isSetReserveTransactionId()) {
$parameters['ReserveTransactionId'] = $request->getReserveTransactionId();
}
if ($request->isSetTransactionAmount()) {
$transactionAmountsettleRequest = $request->getTransactionAmount();
if ($transactionAmountsettleRequest->isSetCurrencyCode()) {
$parameters['TransactionAmount' . '.' . 'CurrencyCode'] = $transactionAmountsettleRequest->getCurrencyCode();
}
if ($transactionAmountsettleRequest->isSetValue()) {
$parameters['TransactionAmount' . '.' . 'Value'] = $transactionAmountsettleRequest->getValue();
}
}
if ($request->isSetOverrideIPNURL()) {
$parameters['OverrideIPNURL'] = $request->getOverrideIPNURL();
}
return $parameters;
}
/**
* Convert SettleDebtRequest to name value pairs
*/
private function _convertSettleDebt($request) {
$parameters = array();
$parameters['Action'] = 'SettleDebt';
if ($request->isSetSenderTokenId()) {
$parameters['SenderTokenId'] = $request->getSenderTokenId();
}
if ($request->isSetCreditInstrumentId()) {
$parameters['CreditInstrumentId'] = $request->getCreditInstrumentId();
}
if ($request->isSetSettlementAmount()) {
$settlementAmountsettleDebtRequest = $request->getSettlementAmount();
if ($settlementAmountsettleDebtRequest->isSetCurrencyCode()) {
$parameters['SettlementAmount' . '.' . 'CurrencyCode'] = $settlementAmountsettleDebtRequest->getCurrencyCode();
}
if ($settlementAmountsettleDebtRequest->isSetValue()) {
$parameters['SettlementAmount' . '.' . 'Value'] = $settlementAmountsettleDebtRequest->getValue();
}
}
if ($request->isSetCallerReference()) {
$parameters['CallerReference'] = $request->getCallerReference();
}
if ($request->isSetSenderDescription()) {
$parameters['SenderDescription'] = $request->getSenderDescription();
}
if ($request->isSetCallerDescription()) {
$parameters['CallerDescription'] = $request->getCallerDescription();
}
if ($request->isSetDescriptorPolicy()) {
$descriptorPolicysettleDebtRequest = $request->getDescriptorPolicy();
if ($descriptorPolicysettleDebtRequest->isSetSoftDescriptorType()) {
$parameters['DescriptorPolicy' . '.' . 'SoftDescriptorType'] = $descriptorPolicysettleDebtRequest->getSoftDescriptorType();
}
if ($descriptorPolicysettleDebtRequest->isSetCSOwner()) {
$parameters['DescriptorPolicy' . '.' . 'CSOwner'] = $descriptorPolicysettleDebtRequest->getCSOwner();
}
}
if ($request->isSetTransactionTimeoutInMins()) {
$parameters['TransactionTimeoutInMins'] = $request->getTransactionTimeoutInMins();
}
if ($request->isSetOverrideIPNURL()) {
$parameters['OverrideIPNURL'] = $request->getOverrideIPNURL();
}
return $parameters;
}
/**
* Convert WriteOffDebtRequest to name value pairs
*/
private function _convertWriteOffDebt($request) {
$parameters = array();
$parameters['Action'] = 'WriteOffDebt';
if ($request->isSetCreditInstrumentId()) {
$parameters['CreditInstrumentId'] = $request->getCreditInstrumentId();
}
if ($request->isSetAdjustmentAmount()) {
$adjustmentAmountwriteOffDebtRequest = $request->getAdjustmentAmount();
if ($adjustmentAmountwriteOffDebtRequest->isSetCurrencyCode()) {
$parameters['AdjustmentAmount' . '.' . 'CurrencyCode'] = $adjustmentAmountwriteOffDebtRequest->getCurrencyCode();
}
if ($adjustmentAmountwriteOffDebtRequest->isSetValue()) {
$parameters['AdjustmentAmount' . '.' . 'Value'] = $adjustmentAmountwriteOffDebtRequest->getValue();
}
}
if ($request->isSetCallerReference()) {
$parameters['CallerReference'] = $request->getCallerReference();
}
if ($request->isSetCallerDescription()) {
$parameters['CallerDescription'] = $request->getCallerDescription();
}
return $parameters;
}
/**
* Convert GetRecipientVerificationStatusRequest to name value pairs
*/
private function _convertGetRecipientVerificationStatus($request) {
$parameters = array();
$parameters['Action'] = 'GetRecipientVerificationStatus';
if ($request->isSetRecipientTokenId()) {
$parameters['RecipientTokenId'] = $request->getRecipientTokenId();
}
return $parameters;
}
/**
* Convert VerifySignatureRequest to name value pairs
*/
private function _convertVerifySignature($request) {
$parameters = array();
$parameters['Action'] = 'VerifySignature';
if ($request->isSetUrlEndPoint()) {
$parameters['UrlEndPoint'] = $request->getUrlEndPoint();
}
if ($request->isSetHttpParameters()) {
$parameters['HttpParameters'] = $request->getHttpParameters();
}
return $parameters;
}
}