2, 'SignatureMethod' => 'HmacSHA256', '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:
*
* - merchantId
* - accessKey
* - secretKey
* - applicationName
* - applicationVersion
* - region
* - environment
* - serviceURL
* - widgetURL
* - caBundleFile
* - clientId
*
*/
public function __construct($config = null)
{
iconv_set_encoding('output_encoding', 'UTF-8');
iconv_set_encoding('input_encoding', 'UTF-8');
iconv_set_encoding('internal_encoding', 'UTF-8');
$this->_merchantValues = OffAmazonPaymentsService_MerchantValuesBuilder::create($config)->build();
$this->_httpRequestFactory = new HttpRequestFactoryCurlImpl($this->_merchantValues);
}
public function getMerchantValues()
{
return $this->_merchantValues;
}
// Public API ------------------------------------------------------------//
/**
* Capture
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_CaptureRequest request
* or OffAmazonPaymentsService_Model_CaptureRequest object itself
* @see OffAmazonPaymentsService_Model_Capture
* @return OffAmazonPaymentsService_Model_CaptureResponse OffAmazonPaymentsService_Model_CaptureResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function capture($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_CaptureRequest) {
$request = new OffAmazonPaymentsService_Model_CaptureRequest($request);
}
$httpResponse = $this->_invoke($this->_convertCapture($request));
$response = OffAmazonPaymentsService_Model_CaptureResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Refund
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_RefundRequest request
* or OffAmazonPaymentsService_Model_RefundRequest object itself
* @see OffAmazonPaymentsService_Model_Refund
* @return OffAmazonPaymentsService_Model_RefundResponse OffAmazonPaymentsService_Model_RefundResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function refund($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_RefundRequest) {
$request = new OffAmazonPaymentsService_Model_RefundRequest($request);
}
$httpResponse = $this->_invoke($this->_convertRefund($request));
$response = OffAmazonPaymentsService_Model_RefundResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Close Authorization
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_CloseAuthorizationRequest request
* or OffAmazonPaymentsService_Model_CloseAuthorizationRequest object itself
* @see OffAmazonPaymentsService_Model_CloseAuthorization
* @return OffAmazonPaymentsService_Model_CloseAuthorizationResponse OffAmazonPaymentsService_Model_CloseAuthorizationResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function closeAuthorization($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_CloseAuthorizationRequest) {
$request = new OffAmazonPaymentsService_Model_CloseAuthorizationRequest($request);
}
$httpResponse = $this->_invoke($this->_convertCloseAuthorization($request));
$response = OffAmazonPaymentsService_Model_CloseAuthorizationResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Get Refund Details
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_GetRefundDetailsRequest request
* or OffAmazonPaymentsService_Model_GetRefundDetailsRequest object itself
* @see OffAmazonPaymentsService_Model_GetRefundDetails
* @return OffAmazonPaymentsService_Model_GetRefundDetailsResponse OffAmazonPaymentsService_Model_GetRefundDetailsResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function getRefundDetails($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_GetRefundDetailsRequest) {
$request = new OffAmazonPaymentsService_Model_GetRefundDetailsRequest($request);
}
$httpResponse = $this->_invoke($this->_convertGetRefundDetails($request));
$response = OffAmazonPaymentsService_Model_GetRefundDetailsResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Get Capture Details
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_GetCaptureDetailsRequest request
* or OffAmazonPaymentsService_Model_GetCaptureDetailsRequest object itself
* @see OffAmazonPaymentsService_Model_GetCaptureDetails
* @return OffAmazonPaymentsService_Model_GetCaptureDetailsResponse OffAmazonPaymentsService_Model_GetCaptureDetailsResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function getCaptureDetails($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_GetCaptureDetailsRequest) {
$request = new OffAmazonPaymentsService_Model_GetCaptureDetailsRequest($request);
}
$httpResponse = $this->_invoke($this->_convertGetCaptureDetails($request));
$response = OffAmazonPaymentsService_Model_GetCaptureDetailsResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Close Order Reference
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_CloseOrderReferenceRequest request
* or OffAmazonPaymentsService_Model_CloseOrderReferenceRequest object itself
* @see OffAmazonPaymentsService_Model_CloseOrderReference
* @return OffAmazonPaymentsService_Model_CloseOrderReferenceResponse OffAmazonPaymentsService_Model_CloseOrderReferenceResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function closeOrderReference($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_CloseOrderReferenceRequest) {
$request = new OffAmazonPaymentsService_Model_CloseOrderReferenceRequest($request);
};
$httpResponse = $this->_invoke($this->_convertCloseOrderReference($request));
$response = OffAmazonPaymentsService_Model_CloseOrderReferenceResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Confirm Order Reference
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_ConfirmOrderReferenceRequest request
* or OffAmazonPaymentsService_Model_ConfirmOrderReferenceRequest object itself
* @see OffAmazonPaymentsService_Model_ConfirmOrderReference
* @return OffAmazonPaymentsService_Model_ConfirmOrderReferenceResponse OffAmazonPaymentsService_Model_ConfirmOrderReferenceResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function confirmOrderReference($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_ConfirmOrderReferenceRequest) {
$request = new OffAmazonPaymentsService_Model_ConfirmOrderReferenceRequest($request);
}
$httpResponse = $this->_invoke($this->_convertConfirmOrderReference($request));
$response = OffAmazonPaymentsService_Model_ConfirmOrderReferenceResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Get Order Reference Details
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_GetOrderReferenceDetailsRequest request
* or OffAmazonPaymentsService_Model_GetOrderReferenceDetailsRequest object itself
* @see OffAmazonPaymentsService_Model_GetOrderReferenceDetails
* @return OffAmazonPaymentsService_Model_GetOrderReferenceDetailsResponse OffAmazonPaymentsService_Model_GetOrderReferenceDetailsResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function getOrderReferenceDetails($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_GetOrderReferenceDetailsRequest) {
$request = new OffAmazonPaymentsService_Model_GetOrderReferenceDetailsRequest($request);
}
$httpResponse = $this->_invoke($this->_convertGetOrderReferenceDetails($request));
$response = OffAmazonPaymentsService_Model_GetOrderReferenceDetailsResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Authorize
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_AuthorizeRequest request
* or OffAmazonPaymentsService_Model_AuthorizeRequest object itself
* @see OffAmazonPaymentsService_Model_Authorize
* @return OffAmazonPaymentsService_Model_AuthorizeResponse OffAmazonPaymentsService_Model_AuthorizeResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function authorize($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_AuthorizeRequest) {
$request = new OffAmazonPaymentsService_Model_AuthorizeRequest($request);
}
$httpResponse = $this->_invoke($this->_convertAuthorize($request));
$response = OffAmazonPaymentsService_Model_AuthorizeResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Set Order Reference Details
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_SetOrderReferenceDetailsRequest request
* or OffAmazonPaymentsService_Model_SetOrderReferenceDetailsRequest object itself
* @see OffAmazonPaymentsService_Model_SetOrderReferenceDetails
* @return OffAmazonPaymentsService_Model_SetOrderReferenceDetailsResponse OffAmazonPaymentsService_Model_SetOrderReferenceDetailsResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function setOrderReferenceDetails($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_SetOrderReferenceDetailsRequest) {
$request = new OffAmazonPaymentsService_Model_SetOrderReferenceDetailsRequest($request);
}
$httpResponse = $this->_invoke($this->_convertSetOrderReferenceDetails($request));
$response = OffAmazonPaymentsService_Model_SetOrderReferenceDetailsResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Get Authorization Details
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_GetAuthorizationDetailsRequest request
* or OffAmazonPaymentsService_Model_GetAuthorizationDetailsRequest object itself
* @see OffAmazonPaymentsService_Model_GetAuthorizationDetails
* @return OffAmazonPaymentsService_Model_GetAuthorizationDetailsResponse OffAmazonPaymentsService_Model_GetAuthorizationDetailsResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function getAuthorizationDetails($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_GetAuthorizationDetailsRequest) {
$request = new OffAmazonPaymentsService_Model_GetAuthorizationDetailsRequest($request);
}
$httpResponse = $this->_invoke($this->_convertGetAuthorizationDetails($request));
$response = OffAmazonPaymentsService_Model_GetAuthorizationDetailsResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Cancel Order Reference
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_CancelOrderReferenceRequest request
* or OffAmazonPaymentsService_Model_CancelOrderReferenceRequest object itself
* @see OffAmazonPaymentsService_Model_CancelOrderReference
* @return OffAmazonPaymentsService_Model_CancelOrderReferenceResponse OffAmazonPaymentsService_Model_CancelOrderReferenceResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function cancelOrderReference($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_CancelOrderReferenceRequest) {
$request = new OffAmazonPaymentsService_Model_CancelOrderReferenceRequest($request);
}
$httpResponse = $this->_invoke($this->_convertCancelOrderReference($request));
$response = OffAmazonPaymentsService_Model_CancelOrderReferenceResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Create Order Reference For Id
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_CreateOrderReferenceForIdRequest request
* or OffAmazonPaymentsService_Model_CreateOrderReferenceForIdRequest object itself
* @see OffAmazonPaymentsService_Model_CreateOrderReferenceForId
* @return OffAmazonPaymentsService_Model_CreateOrderReferenceForIdResponse OffAmazonPaymentsService_Model_CreateOrderReferenceForIdResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function createOrderReferenceForId($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_CreateOrderReferenceForIdRequest) {
$request = new OffAmazonPaymentsService_Model_CreateOrderReferenceForIdRequest($request);
}
$httpResponse = $this->_invoke($this->_convertCreateOrderReferenceForId($request));
$response = OffAmazonPaymentsService_Model_CreateOrderReferenceForIdResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Get Billing Agreement Details
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_GetBillingAgreementDetailsRequest request
* or OffAmazonPaymentsService_Model_GetBillingAgreementDetailsRequest object itself
* @see OffAmazonPaymentsService_Model_GetBillingAgreementDetails
* @return OffAmazonPaymentsService_Model_GetBillingAgreementDetailsResponse OffAmazonPaymentsService_Model_GetBillingAgreementDetailsResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function getBillingAgreementDetails($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_GetBillingAgreementDetailsRequest) {
$request = new OffAmazonPaymentsService_Model_GetBillingAgreementDetailsRequest($request);
}
$httpResponse = $this->_invoke($this->_convertGetBillingAgreementDetails($request));
$response = OffAmazonPaymentsService_Model_GetBillingAgreementDetailsResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Set Billing Agreement Details
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_SetBillingAgreementDetailsRequest request
* or OffAmazonPaymentsService_Model_SetBillingAgreementDetailsRequest object itself
* @see OffAmazonPaymentsService_Model_SetBillingAgreementDetails
* @return OffAmazonPaymentsService_Model_SetBillingAgreementDetailsResponse OffAmazonPaymentsService_Model_SetBillingAgreementDetailsResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function setBillingAgreementDetails($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_SetBillingAgreementDetailsRequest) {
$request = new OffAmazonPaymentsService_Model_SetBillingAgreementDetailsRequest($request);
}
$httpResponse = $this->_invoke($this->_convertSetBillingAgreementDetails($request));
$response = OffAmazonPaymentsService_Model_SetBillingAgreementDetailsResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Confirm Billing Agreement
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_ConfirmBillingAgreementRequest request
* or OffAmazonPaymentsService_Model_ConfirmBillingAgreementRequest object itself
* @see OffAmazonPaymentsService_Model_ConfirmBillingAgreement
* @return OffAmazonPaymentsService_Model_ConfirmBillingAgreementResponse OffAmazonPaymentsService_Model_ConfirmBillingAgreementResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function confirmBillingAgreement($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_ConfirmBillingAgreementRequest) {
$request = new OffAmazonPaymentsService_Model_ConfirmBillingAgreementRequest($request);
}
$httpResponse = $this->_invoke($this->_convertConfirmBillingAgreement($request));
$response = OffAmazonPaymentsService_Model_ConfirmBillingAgreementResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Validate Billing Agreement
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_ValidateBillingAgreementRequest request
* or OffAmazonPaymentsService_Model_ValidateBillingAgreementRequest object itself
* @see OffAmazonPaymentsService_Model_ValidateBillingAgreement
* @return OffAmazonPaymentsService_Model_ValidateBillingAgreementResponse OffAmazonPaymentsService_Model_ValidateBillingAgreementResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function validateBillingAgreement($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_ValidateBillingAgreementRequest) {
$request = new OffAmazonPaymentsService_Model_ValidateBillingAgreementRequest($request);
}
$httpResponse = $this->_invoke($this->_convertValidateBillingAgreement($request));
$response = OffAmazonPaymentsService_Model_ValidateBillingAgreementResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Authorize On Billing Agreement
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_AuthorizeOnBillingAgreementRequest request
* or OffAmazonPaymentsService_Model_AuthorizeOnBillingAgreementRequest object itself
* @see OffAmazonPaymentsService_Model_AuthorizeOnBillingAgreement
* @return OffAmazonPaymentsService_Model_AuthorizeOnBillingAgreementResponse OffAmazonPaymentsService_Model_AuthorizeOnBillingAgreementResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function authorizeOnBillingAgreement($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_AuthorizeOnBillingAgreementRequest) {
$request = new OffAmazonPaymentsService_Model_AuthorizeOnBillingAgreementRequest($request);
}
$httpResponse = $this->_invoke($this->_convertAuthorizeOnBillingAgreement($request));
$response = OffAmazonPaymentsService_Model_AuthorizeOnBillingAgreementResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Close Billing Agreement
*
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_CloseBillingAgreementRequest request
* or OffAmazonPaymentsService_Model_CloseBillingAgreementRequest object itself
* @see OffAmazonPaymentsService_Model_CloseBillingAgreement
* @return OffAmazonPaymentsService_Model_CloseBillingAgreementResponse OffAmazonPaymentsService_Model_CloseBillingAgreementResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function closeBillingAgreement($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_CloseBillingAgreementRequest) {
$request = new OffAmazonPaymentsService_Model_CloseBillingAgreementRequest($request);
}
$httpResponse = $this->_invoke($this->_convertCloseBillingAgreement($request));
$response = OffAmazonPaymentsService_Model_CloseBillingAgreementResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Get Provider Credit Details
* A query API for ProviderCredits. Both Provider and Seller sellerIds are authorized to call this API.
*
* @see http://docs.amazonwebservices.com/${docPath}GetProviderCreditDetails.html
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_GetProviderCreditDetailsRequest request
* or OffAmazonPaymentsService_Model_GetProviderCreditDetailsRequest object itself
* @see OffAmazonPaymentsService_Model_GetProviderCreditDetails
* @return OffAmazonPaymentsService_Model_GetProviderCreditDetailsResponse OffAmazonPaymentsService_Model_GetProviderCreditDetailsResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function getProviderCreditDetails($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_GetProviderCreditDetailsRequest) {
$request = new OffAmazonPaymentsService_Model_GetProviderCreditDetailsRequest($request);
}
$httpResponse = $this->_invoke($this->_convertGetProviderCreditDetails($request));
$response = OffAmazonPaymentsService_Model_GetProviderCreditDetailsResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Get Provider Credit Reversal Details
* Activity to query the funds reversed against a given Provider Credit reversal.
*
* @see http://docs.amazonwebservices.com/${docPath}GetProviderCreditReversalDetails.html
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_GetProviderCreditReversalDetailsRequest request
* or OffAmazonPaymentsService_Model_GetProviderCreditReversalDetailsRequest object itself
* @see OffAmazonPaymentsService_Model_GetProviderCreditReversalDetails
* @return OffAmazonPaymentsService_Model_GetProviderCreditReversalDetailsResponse OffAmazonPaymentsService_Model_GetProviderCreditReversalDetailsResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function getProviderCreditReversalDetails($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_GetProviderCreditReversalDetailsRequest) {
$request = new OffAmazonPaymentsService_Model_GetProviderCreditReversalDetailsRequest($request);
}
$httpResponse = $this->_invoke($this->_convertGetProviderCreditReversalDetails($request));
$response = OffAmazonPaymentsService_Model_GetProviderCreditReversalDetailsResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
/**
* Reverse Provider Credit
* Activity to enable the Caller/Provider to reverse the funds credited to Provider.
*
* @see http://docs.amazonwebservices.com/${docPath}ReverseProviderCredit.html
* @param mixed $request array of parameters for OffAmazonPaymentsService_Model_ReverseProviderCreditRequest request
* or OffAmazonPaymentsService_Model_ReverseProviderCreditRequest object itself
* @see OffAmazonPaymentsService_Model_ReverseProviderCredit
* @return OffAmazonPaymentsService_Model_ReverseProviderCreditResponse OffAmazonPaymentsService_Model_ReverseProviderCreditResponse
*
* @throws OffAmazonPaymentsService_Exception
*/
public function reverseProviderCredit($request)
{
if (!$request instanceof OffAmazonPaymentsService_Model_ReverseProviderCreditRequest) {
$request = new OffAmazonPaymentsService_Model_ReverseProviderCreditRequest($request);
}
$httpResponse = $this->_invoke($this->_convertReverseProviderCredit($request));
$response = OffAmazonPaymentsService_Model_ReverseProviderCreditResponse::fromXML($httpResponse['ResponseBody']);
$response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']);
return $response;
}
// 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) {
$errorResponse = OffAmazonPaymentsService_Model_ErrorResponse::fromXML($response['ResponseBody']);
$errors = $errorResponse->getError();
$shouldRetry = ($errors[0]->getCode() === 'RequestThrottled') ? false : true;
if ($shouldRetry) {
$this->_pauseOnRetry(++$retries, $response['Status']);
} else {
throw $this->_reportAnyErrors($response['ResponseBody'], $response['Status'], $response['ResponseHeaderMetadata']);
}
} else {
throw $this->_reportAnyErrors($response['ResponseBody'], $response['Status'], $response['ResponseHeaderMetadata']);
}
}
/* Rethrow on deserializer error */
}
catch (Exception $e) {
if ($e instanceof OffAmazonPaymentsService_Exception) {
throw $e;
} else {
throw new OffAmazonPaymentsService_Exception(array(
'Exception' => $e,
'Message' => $e->getMessage()
));
}
}
} while ($shouldRetry);
}
catch (OffAmazonPaymentsService_Exception $se) {
throw $se;
}
catch (Exception $t) {
throw new OffAmazonPaymentsService_Exception(array(
'Exception' => $t,
'Message' => $t->getMessage()
));
}
return array(
'ResponseBody' => $response['ResponseBody'],
'ResponseHeaderMetadata' => $response['ResponseHeaderMetadata']
);
}
/**
* Look for additional error strings in the response and return formatted exception
*/
private function _reportAnyErrors($responseBody, $status, $responseHeaderMetadata, Exception $e = null)
{
$ex = null;
if (!is_null($responseBody) && strpos($responseBody, '<') === 0) {
if (preg_match('@(.*).*.*(.*)
.*(.*).*.*()?@mis', $responseBody, $errorMatcherOne)) {
$requestId = $errorMatcherOne[1];
$code = $errorMatcherOne[2];
$message = $errorMatcherOne[3];
$ex = new OffAmazonPaymentsService_Exception(array(
'Message' => $message,
'StatusCode' => $status,
'ErrorCode' => $code,
'ErrorType' => 'Unknown',
'RequestId' => $requestId,
'XML' => $responseBody,
'ResponseHeaderMetadata' => $responseHeaderMetadata
));
} elseif (preg_match('@.*(.*).*(.*)
.*(.*).*.*()?.*(.*)@mis', $responseBody, $errorMatcherThree)) {
$type = $errorMatcherThree[1];
$code = $errorMatcherThree[2];
$message = $errorMatcherThree[3];
$requestId = $errorMatcherThree[5];
$ex = new OffAmazonPaymentsService_Exception(array(
'Message' => $message,
'StatusCode' => $status,
'ErrorCode' => $code,
'ErrorType' => $type,
'RequestId' => $requestId,
'XML' => $responseBody,
'ResponseHeaderMetadata' => $responseHeaderMetadata
));
} elseif (preg_match('@.*(.*)
.*(.*).*.*()?.*(.*)@mis', $responseBody, $errorMatcherTwo)) {
$code = $errorMatcherTwo[1];
$message = $errorMatcherTwo[2];
$requestId = $errorMatcherTwo[4];
$ex = new OffAmazonPaymentsService_Exception(array(
'Message' => $message,
'StatusCode' => $status,
'ErrorCode' => $code,
'ErrorType' => 'Unknown',
'RequestId' => $requestId,
'XML' => $responseBody,
'ResponseHeaderMetadata' => $responseHeaderMetadata
));
} else {
$ex = new OffAmazonPaymentsService_Exception(array(
'Message' => 'Internal Error',
'StatusCode' => $status,
'ResponseHeaderMetadata' => $responseHeaderMetadata
));
}
} else {
$ex = new OffAmazonPaymentsService_Exception(array(
'Message' => 'Internal Error',
'StatusCode' => $status,
'ResponseHeaderMetadata' => $responseHeaderMetadata
));
}
return $ex;
}
/**
* Perform HTTP post with exponential retries on error 500 and 503
*
*/
private function _httpPost(array $parameters)
{
$query = $this->_getParametersAsString($parameters);
$response = '';
try {
$response = $this->_httpRequestFactory->createPostRequest($this->_merchantValues->getServiceUrl(), $query)->execute();
}
catch (OffAmazonPayments_HttpException $ex) {
$error_msg = "Unable to post request, underlying exception of " . $ex->getMessage();
throw new OffAmazonPaymentsService_Exception(array(
'Message' => $error_msg
));
}
//First split by 2 'CRLF'
$responseComponents = preg_split("/(?:\r?\n){2}/", $response);
$body = null;
for ($count = 0; $count < count($responseComponents) && $body == null; $count++) {
$headers = $responseComponents[$count];
$responseStatus = $this->_extractHttpStatusCode($headers);
if ($responseStatus != null && $this->_httpHeadersHaveContent($headers)) {
$responseHeaderMetadata = $this->_extractResponseHeaderMetadata($headers);
//The body will be the next item in the responseComponents array
$body = $responseComponents[++$count];
}
}
//If the body is null here then we were unable to parse the response and will throw an exception
if ($body == null) {
$exProps["Message"] = "Failed to parse valid HTTP response (" . $response . ")";
$exProps["ErrorType"] = "HTTP";
throw new OffAmazonPaymentsService_Exception($exProps);
}
return array(
'Status' => $responseStatus,
'ResponseBody' => $body,
'ResponseHeaderMetadata' => $responseHeaderMetadata
);
}
/**
* parse the status line of a header string for the proper format and
* return the status code
*
* Example: HTTP/1.1 200 OK
* ...
* returns String statusCode or null if the status line can't be parsed
*/
private function _extractHttpStatusCode($headers)
{
$statusCode = null;
if (1 === preg_match("/(\\S+) +(\\d+) +([^\n\r]+)(?:\r?\n|\r)/", $headers, $matches)) {
//The matches array [entireMatchString, protocol, statusCode, the rest]
$statusCode = $matches[2];
}
return $statusCode;
}
/**
* Tries to determine some valid headers indicating this response
* has content. In this case
* return true if there is a valid "Content-Length" or "Transfer-Encoding" header
*/
private function _httpHeadersHaveContent($headers)
{
return (1 === preg_match("/[cC]ontent-[lL]ength: +(?:\\d+)(?:\\r?\\n|\\r|$)/", $headers) || 1 === preg_match("/Transfer-Encoding: +(?!identity[\r\n;= ])(?:[^\r\n]+)(?:\r?\n|\r|$)/i", $headers));
}
/**
* extract a ResponseHeaderMetadata object from the raw headers
*/
private function _extractResponseHeaderMetadata($rawHeaders)
{
$inputHeaders = preg_split("/\r\n|\n|\r/", $rawHeaders);
$headers = array();
$headers['x-mws-request-id'] = null;
$headers['x-mws-response-context'] = null;
$headers['x-mws-timestamp'] = null;
foreach ($inputHeaders as $currentHeader) {
$keyValue = explode(': ', $currentHeader);
if (isset($keyValue[1])) {
list($key, $value) = $keyValue;
if (isset($headers[$key]) && $headers[$key] !== null) {
$headers[$key] = $headers[$key] . "," . $value;
} else {
$headers[$key] = $value;
}
}
}
return new OffAmazonPaymentsService_Model_ResponseHeaderMetadata($headers['x-mws-request-id'], $headers['x-mws-response-context'], $headers['x-mws-timestamp']);
}
/**
* Exponential sleep on failed request
* @param retries current retry
* @throws OffAmazonPaymentsService_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 {
throw new OffAmazonPaymentsService_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->_merchantValues->getAccessKey();
$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->_merchantValues->getSecretKey());
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 0, it signs concatenated Action and Timestamp
*
* If Signature Version is 1, it performs the following:
*
* Sorts all parameters (including SignatureVersion and excluding Signature,
* the value of which is being created), ignoring case.
*
* Iterate over the sorted list and append the parameter name (in original case)
* and then its value. It will not URL-encode the parameter values before
* constructing this string. There are no separators.
*
* 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->_merchantValues->getServiceUrl());
$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());
}
/**
* Formats date as ISO 8601 timestamp
*/
private function getFormattedTimestamp($dateTime)
{
return $dateTime->format(DATE_ISO8601);
}
/**
* Convert CaptureRequest to name value pairs
*/
private function _convertCapture($request)
{
$parameters = array();
$parameters['Action'] = 'Capture';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonAuthorizationId()) {
$parameters['AmazonAuthorizationId'] = $request->getAmazonAuthorizationId();
}
if ($request->isSetCaptureReferenceId()) {
$parameters['CaptureReferenceId'] = $request->getCaptureReferenceId();
}
if ($request->isSetCaptureAmount()) {
$captureAmountcaptureRequest = $request->getCaptureAmount();
if ($captureAmountcaptureRequest->isSetAmount()) {
$parameters['CaptureAmount' . '.' . 'Amount'] = $captureAmountcaptureRequest->getAmount();
}
if ($captureAmountcaptureRequest->isSetCurrencyCode()) {
$parameters['CaptureAmount' . '.' . 'CurrencyCode'] = $captureAmountcaptureRequest->getCurrencyCode();
}
}
if ($request->isSetSellerCaptureNote()) {
$parameters['SellerCaptureNote'] = $request->getSellerCaptureNote();
}
if ($request->isSetSoftDescriptor()) {
$parameters['SoftDescriptor'] = $request->getSoftDescriptor();
}
if ($request->isSetProviderCreditList()) {
$providerCreditListcaptureRequest = $request->getProviderCreditList();
foreach ($providerCreditListcaptureRequest->getmember() as $memberproviderCreditListIndex => $memberproviderCreditList) {
if ($memberproviderCreditList->isSetProviderId()) {
$parameters['ProviderCreditList' . '.' . 'member' . '.' . ($memberproviderCreditListIndex + 1) . '.' . 'ProviderId'] = $memberproviderCreditList->getProviderId();
}
if ($memberproviderCreditList->isSetCreditAmount()) {
$creditAmountmember = $memberproviderCreditList->getCreditAmount();
if ($creditAmountmember->isSetAmount()) {
$parameters['ProviderCreditList' . '.' . 'member' . '.' . ($memberproviderCreditListIndex + 1) . '.' . 'CreditAmount' . '.' . 'Amount'] = $creditAmountmember->getAmount();
}
if ($creditAmountmember->isSetCurrencyCode()) {
$parameters['ProviderCreditList' . '.' . 'member' . '.' . ($memberproviderCreditListIndex + 1) . '.' . 'CreditAmount' . '.' . 'CurrencyCode'] = $creditAmountmember->getCurrencyCode();
}
}
}
}
return $parameters;
}
/**
* Convert RefundRequest to name value pairs
*/
private function _convertRefund($request)
{
$parameters = array();
$parameters['Action'] = 'Refund';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonCaptureId()) {
$parameters['AmazonCaptureId'] = $request->getAmazonCaptureId();
}
if ($request->isSetRefundReferenceId()) {
$parameters['RefundReferenceId'] = $request->getRefundReferenceId();
}
if ($request->isSetRefundAmount()) {
$refundAmount = $request->getRefundAmount();
if ($refundAmount->isSetAmount()) {
$parameters['RefundAmount' . '.' . 'Amount'] = $refundAmount->getAmount();
}
if ($refundAmount->isSetCurrencyCode()) {
$parameters['RefundAmount' . '.' . 'CurrencyCode'] = $refundAmount->getCurrencyCode();
}
}
if ($request->isSetSellerRefundNote()) {
$parameters['SellerRefundNote'] = $request->getSellerRefundNote();
}
if ($request->isSetSoftDescriptor()) {
$parameters['SoftDescriptor'] = $request->getSoftDescriptor();
}
if ($request->isSetProviderCreditReversalList()) {
$providerCreditReversalListrefundRequest = $request->getProviderCreditReversalList();
foreach ($providerCreditReversalListrefundRequest->getmember() as $memberproviderCreditReversalListIndex => $memberproviderCreditReversalList) {
if ($memberproviderCreditReversalList->isSetProviderId()) {
$parameters['ProviderCreditReversalList' . '.' . 'member' . '.' . ($memberproviderCreditReversalListIndex + 1) . '.' . 'ProviderId'] = $memberproviderCreditReversalList->getProviderId();
}
if ($memberproviderCreditReversalList->isSetCreditReversalAmount()) {
$creditReversalAmountmember = $memberproviderCreditReversalList->getCreditReversalAmount();
if ($creditReversalAmountmember->isSetAmount()) {
$parameters['ProviderCreditReversalList' . '.' . 'member' . '.' . ($memberproviderCreditReversalListIndex + 1) . '.' . 'CreditReversalAmount' . '.' . 'Amount'] = $creditReversalAmountmember->getAmount();
}
if ($creditReversalAmountmember->isSetCurrencyCode()) {
$parameters['ProviderCreditReversalList' . '.' . 'member' . '.' . ($memberproviderCreditReversalListIndex + 1) . '.' . 'CreditReversalAmount' . '.' . 'CurrencyCode'] = $creditReversalAmountmember->getCurrencyCode();
}
}
}
}
return $parameters;
}
/**
* Convert CloseAuthorizationRequest to name value pairs
*/
private function _convertCloseAuthorization($request)
{
$parameters = array();
$parameters['Action'] = 'CloseAuthorization';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonAuthorizationId()) {
$parameters['AmazonAuthorizationId'] = $request->getAmazonAuthorizationId();
}
if ($request->isSetClosureReason()) {
$parameters['ClosureReason'] = $request->getClosureReason();
}
return $parameters;
}
/**
* Convert GetRefundDetailsRequest to name value pairs
*/
private function _convertGetRefundDetails($request)
{
$parameters = array();
$parameters['Action'] = 'GetRefundDetails';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonRefundId()) {
$parameters['AmazonRefundId'] = $request->getAmazonRefundId();
}
return $parameters;
}
/**
* Convert GetCaptureDetailsRequest to name value pairs
*/
private function _convertGetCaptureDetails($request)
{
$parameters = array();
$parameters['Action'] = 'GetCaptureDetails';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonCaptureId()) {
$parameters['AmazonCaptureId'] = $request->getAmazonCaptureId();
}
return $parameters;
}
/**
* Convert CloseOrderReferenceRequest to name value pairs
*/
private function _convertCloseOrderReference($request)
{
$parameters = array();
$parameters['Action'] = 'CloseOrderReference';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonOrderReferenceId()) {
$parameters['AmazonOrderReferenceId'] = $request->getAmazonOrderReferenceId();
}
if ($request->isSetClosureReason()) {
$parameters['ClosureReason'] = $request->getClosureReason();
}
return $parameters;
}
/**
* Convert ConfirmOrderReferenceRequest to name value pairs
*/
private function _convertConfirmOrderReference($request)
{
$parameters = array();
$parameters['Action'] = 'ConfirmOrderReference';
if ($request->isSetAmazonOrderReferenceId()) {
$parameters['AmazonOrderReferenceId'] = $request->getAmazonOrderReferenceId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
return $parameters;
}
/**
* Convert GetOrderReferenceDetailsRequest to name value pairs
*/
private function _convertGetOrderReferenceDetails($request)
{
$parameters = array();
$parameters['Action'] = 'GetOrderReferenceDetails';
if ($request->isSetAmazonOrderReferenceId()) {
$parameters['AmazonOrderReferenceId'] = $request->getAmazonOrderReferenceId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetAddressConsentToken()) {
$parameters['AddressConsentToken'] = $request->getAddressConsentToken();
}
return $parameters;
}
/**
* Convert AuthorizeRequest to name value pairs
*/
private function _convertAuthorize($request)
{
$parameters = array();
$parameters['Action'] = 'Authorize';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonOrderReferenceId()) {
$parameters['AmazonOrderReferenceId'] = $request->getAmazonOrderReferenceId();
}
if ($request->isSetAuthorizationReferenceId()) {
$parameters['AuthorizationReferenceId'] = $request->getAuthorizationReferenceId();
}
if ($request->isSetAuthorizationAmount()) {
$authorizationAmount = $request->getAuthorizationAmount();
if ($authorizationAmount->isSetAmount()) {
$parameters['AuthorizationAmount' . '.' . 'Amount'] = $authorizationAmount->getAmount();
}
if ($authorizationAmount->isSetCurrencyCode()) {
$parameters['AuthorizationAmount' . '.' . 'CurrencyCode'] = $authorizationAmount->getCurrencyCode();
}
}
if ($request->isSetSellerAuthorizationNote()) {
$parameters['SellerAuthorizationNote'] = $request->getSellerAuthorizationNote();
}
if ($request->isSetOrderItemCategories()) {
$orderItemCategories = $request->getOrderItemCategories();
foreach ($orderItemCategories->getOrderItemCategory() as $orderItemCategoryIndex => $orderItemCategory) {
$parameters['OrderItemCategories' . '.' . 'OrderItemCategory' . '.' . ($orderItemCategoryIndex + 1)] = $orderItemCategory;
}
}
if ($request->isSetTransactionTimeout()) {
$parameters['TransactionTimeout'] = $request->getTransactionTimeout();
}
if ($request->isSetCaptureNow()) {
$parameters['CaptureNow'] = $request->getCaptureNow() ? "true" : "false";
}
if ($request->isSetSoftDescriptor()) {
$parameters['SoftDescriptor'] = $request->getSoftDescriptor();
}
if ($request->isSetProviderCreditList()) {
$providerCreditListauthorizeRequest = $request->getProviderCreditList();
foreach ($providerCreditListauthorizeRequest->getmember() as $memberproviderCreditListIndex => $memberproviderCreditList) {
if ($memberproviderCreditList->isSetProviderId()) {
$parameters['ProviderCreditList' . '.' . 'member' . '.' . ($memberproviderCreditListIndex + 1) . '.' . 'ProviderId'] = $memberproviderCreditList->getProviderId();
}
if ($memberproviderCreditList->isSetCreditAmount()) {
$creditAmountmember = $memberproviderCreditList->getCreditAmount();
if ($creditAmountmember->isSetAmount()) {
$parameters['ProviderCreditList' . '.' . 'member' . '.' . ($memberproviderCreditListIndex + 1) . '.' . 'CreditAmount' . '.' . 'Amount'] = $creditAmountmember->getAmount();
}
if ($creditAmountmember->isSetCurrencyCode()) {
$parameters['ProviderCreditList' . '.' . 'member' . '.' . ($memberproviderCreditListIndex + 1) . '.' . 'CreditAmount' . '.' . 'CurrencyCode'] = $creditAmountmember->getCurrencyCode();
}
}
}
}
return $parameters;
}
/**
* Convert SetOrderReferenceDetailsRequest to name value pairs
*/
private function _convertSetOrderReferenceDetails($request)
{
$parameters = array();
$parameters['Action'] = 'SetOrderReferenceDetails';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonOrderReferenceId()) {
$parameters['AmazonOrderReferenceId'] = $request->getAmazonOrderReferenceId();
}
if ($request->isSetOrderReferenceAttributes()) {
$orderReferenceAttributes = $request->getOrderReferenceAttributes();
if ($orderReferenceAttributes->isSetOrderTotal()) {
$orderTotal = $orderReferenceAttributes->getOrderTotal();
if ($orderTotal->isSetCurrencyCode()) {
$parameters['OrderReferenceAttributes' . '.' . 'OrderTotal' . '.' . 'CurrencyCode'] = $orderTotal->getCurrencyCode();
}
if ($orderTotal->isSetAmount()) {
$parameters['OrderReferenceAttributes' . '.' . 'OrderTotal' . '.' . 'Amount'] = $orderTotal->getAmount();
}
}
if ($orderReferenceAttributes->isSetPlatformId()) {
$parameters['OrderReferenceAttributes' . '.' . 'PlatformId'] = $orderReferenceAttributes->getPlatformId();
}
if ($orderReferenceAttributes->isSetSellerNote()) {
$parameters['OrderReferenceAttributes' . '.' . 'SellerNote'] = $orderReferenceAttributes->getSellerNote();
}
if ($orderReferenceAttributes->isSetSellerOrderAttributes()) {
$sellerOrderAttributes = $orderReferenceAttributes->getSellerOrderAttributes();
if ($sellerOrderAttributes->isSetSellerOrderId()) {
$parameters['OrderReferenceAttributes' . '.' . 'SellerOrderAttributes' . '.' . 'SellerOrderId'] = $sellerOrderAttributes->getSellerOrderId();
}
if ($sellerOrderAttributes->isSetStoreName()) {
$parameters['OrderReferenceAttributes' . '.' . 'SellerOrderAttributes' . '.' . 'StoreName'] = $sellerOrderAttributes->getStoreName();
}
if ($sellerOrderAttributes->isSetOrderItemCategories()) {
$orderItemCategories = $sellerOrderAttributes->getOrderItemCategories();
foreach ($orderItemCategories->getOrderItemCategory() as $orderItemCategoryIndex => $orderItemCategory) {
$parameters['OrderReferenceAttributes' . '.' . 'SellerOrderAttributes' . '.' . 'OrderItemCategories' . '.' . 'OrderItemCategory' . '.' . ($orderItemCategoryIndex + 1)] = $orderItemCategory;
}
}
if ($sellerOrderAttributes->isSetCustomInformation()) {
$parameters['OrderReferenceAttributes' . '.' . 'SellerOrderAttributes' . '.' . 'CustomInformation'] = $sellerOrderAttributes->getCustomInformation();
}
}
}
return $parameters;
}
/**
* Convert GetAuthorizationDetailsRequest to name value pairs
*/
private function _convertGetAuthorizationDetails($request)
{
$parameters = array();
$parameters['Action'] = 'GetAuthorizationDetails';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonAuthorizationId()) {
$parameters['AmazonAuthorizationId'] = $request->getAmazonAuthorizationId();
}
return $parameters;
}
/**
* Convert CancelOrderReferenceRequest to name value pairs
*/
private function _convertCancelOrderReference($request)
{
$parameters = array();
$parameters['Action'] = 'CancelOrderReference';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonOrderReferenceId()) {
$parameters['AmazonOrderReferenceId'] = $request->getAmazonOrderReferenceId();
}
if ($request->isSetCancelationReason()) {
$parameters['CancelationReason'] = $request->getCancelationReason();
}
return $parameters;
}
/**
* Convert CreateOrderReferenceForIdRequest to name value pairs
*/
private function _convertCreateOrderReferenceForId($request)
{
$parameters = array();
$parameters['Action'] = 'CreateOrderReferenceForId';
if ($request->isSetId()) {
$parameters['Id'] = $request->getId();
}
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetIdType()) {
$parameters['IdType'] = $request->getIdType();
}
if ($request->isSetInheritShippingAddress()) {
$parameters['InheritShippingAddress'] = $request->getInheritShippingAddress() ? "true" : "false";
}
if ($request->isSetConfirmNow()) {
$parameters['ConfirmNow'] = $request->getConfirmNow() ? "true" : "false";
}
if ($request->isSetOrderReferenceAttributes()) {
$orderReferenceAttributescreateOrderReferenceForIdRequest = $request->getOrderReferenceAttributes();
if ($orderReferenceAttributescreateOrderReferenceForIdRequest->isSetOrderTotal()) {
$orderTotalorderReferenceAttributes = $orderReferenceAttributescreateOrderReferenceForIdRequest->getOrderTotal();
if ($orderTotalorderReferenceAttributes->isSetCurrencyCode()) {
$parameters['OrderReferenceAttributes' . '.' . 'OrderTotal' . '.' . 'CurrencyCode'] = $orderTotalorderReferenceAttributes->getCurrencyCode();
}
if ($orderTotalorderReferenceAttributes->isSetAmount()) {
$parameters['OrderReferenceAttributes' . '.' . 'OrderTotal' . '.' . 'Amount'] = $orderTotalorderReferenceAttributes->getAmount();
}
}
if ($orderReferenceAttributescreateOrderReferenceForIdRequest->isSetPlatformId()) {
$parameters['OrderReferenceAttributes' . '.' . 'PlatformId'] = $orderReferenceAttributescreateOrderReferenceForIdRequest->getPlatformId();
}
if ($orderReferenceAttributescreateOrderReferenceForIdRequest->isSetSellerNote()) {
$parameters['OrderReferenceAttributes' . '.' . 'SellerNote'] = $orderReferenceAttributescreateOrderReferenceForIdRequest->getSellerNote();
}
if ($orderReferenceAttributescreateOrderReferenceForIdRequest->isSetSellerOrderAttributes()) {
$sellerOrderAttributesorderReferenceAttributes = $orderReferenceAttributescreateOrderReferenceForIdRequest->getSellerOrderAttributes();
if ($sellerOrderAttributesorderReferenceAttributes->isSetSellerOrderId()) {
$parameters['OrderReferenceAttributes' . '.' . 'SellerOrderAttributes' . '.' . 'SellerOrderId'] = $sellerOrderAttributesorderReferenceAttributes->getSellerOrderId();
}
if ($sellerOrderAttributesorderReferenceAttributes->isSetStoreName()) {
$parameters['OrderReferenceAttributes' . '.' . 'SellerOrderAttributes' . '.' . 'StoreName'] = $sellerOrderAttributesorderReferenceAttributes->getStoreName();
}
if ($sellerOrderAttributesorderReferenceAttributes->isSetOrderItemCategories()) {
$orderItemCategoriessellerOrderAttributes = $sellerOrderAttributesorderReferenceAttributes->getOrderItemCategories();
foreach ($orderItemCategoriessellerOrderAttributes->getOrderItemCategory() as $orderItemCategoryorderItemCategoriesIndex => $orderItemCategoryorderItemCategories) {
$parameters['OrderReferenceAttributes' . '.' . 'SellerOrderAttributes' . '.' . 'OrderItemCategories' . '.' . 'OrderItemCategory' . '.' . ($orderItemCategoryorderItemCategoriesIndex + 1)] = $orderItemCategoryorderItemCategories;
}
}
if ($sellerOrderAttributesorderReferenceAttributes->isSetCustomInformation()) {
$parameters['OrderReferenceAttributes' . '.' . 'SellerOrderAttributes' . '.' . 'CustomInformation'] = $sellerOrderAttributesorderReferenceAttributes->getCustomInformation();
}
}
}
return $parameters;
}
/**
* Convert GetBillingAgreementDetailsRequest to name value pairs
*/
private function _convertGetBillingAgreementDetails($request)
{
$parameters = array();
$parameters['Action'] = 'GetBillingAgreementDetails';
if ($request->isSetAmazonBillingAgreementId()) {
$parameters['AmazonBillingAgreementId'] = $request->getAmazonBillingAgreementId();
}
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAddressConsentToken()) {
$parameters['AddressConsentToken'] = $request->getAddressConsentToken();
}
return $parameters;
}
/**
* Convert SetBillingAgreementDetailsRequest to name value pairs
*/
private function _convertSetBillingAgreementDetails($request)
{
$parameters = array();
$parameters['Action'] = 'SetBillingAgreementDetails';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonBillingAgreementId()) {
$parameters['AmazonBillingAgreementId'] = $request->getAmazonBillingAgreementId();
}
if ($request->isSetBillingAgreementAttributes()) {
$billingAgreementAttributessetBillingAgreementDetailsRequest = $request->getBillingAgreementAttributes();
if ($billingAgreementAttributessetBillingAgreementDetailsRequest->isSetPlatformId()) {
$parameters['BillingAgreementAttributes' . '.' . 'PlatformId'] = $billingAgreementAttributessetBillingAgreementDetailsRequest->getPlatformId();
}
if ($billingAgreementAttributessetBillingAgreementDetailsRequest->isSetSellerNote()) {
$parameters['BillingAgreementAttributes' . '.' . 'SellerNote'] = $billingAgreementAttributessetBillingAgreementDetailsRequest->getSellerNote();
}
if ($billingAgreementAttributessetBillingAgreementDetailsRequest->isSetSellerBillingAgreementAttributes()) {
$sellerBillingAgreementAttributesbillingAgreementAttributes = $billingAgreementAttributessetBillingAgreementDetailsRequest->getSellerBillingAgreementAttributes();
if ($sellerBillingAgreementAttributesbillingAgreementAttributes->isSetSellerBillingAgreementId()) {
$parameters['BillingAgreementAttributes' . '.' . 'SellerBillingAgreementAttributes' . '.' . 'SellerBillingAgreementId'] = $sellerBillingAgreementAttributesbillingAgreementAttributes->getSellerBillingAgreementId();
}
if ($sellerBillingAgreementAttributesbillingAgreementAttributes->isSetStoreName()) {
$parameters['BillingAgreementAttributes' . '.' . 'SellerBillingAgreementAttributes' . '.' . 'StoreName'] = $sellerBillingAgreementAttributesbillingAgreementAttributes->getStoreName();
}
if ($sellerBillingAgreementAttributesbillingAgreementAttributes->isSetCustomInformation()) {
$parameters['BillingAgreementAttributes' . '.' . 'SellerBillingAgreementAttributes' . '.' . 'CustomInformation'] = $sellerBillingAgreementAttributesbillingAgreementAttributes->getCustomInformation();
}
}
}
return $parameters;
}
/**
* Convert ConfirmBillingAgreementRequest to name value pairs
*/
private function _convertConfirmBillingAgreement($request)
{
$parameters = array();
$parameters['Action'] = 'ConfirmBillingAgreement';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonBillingAgreementId()) {
$parameters['AmazonBillingAgreementId'] = $request->getAmazonBillingAgreementId();
}
return $parameters;
}
/**
* Convert ValidateBillingAgreementRequest to name value pairs
*/
private function _convertValidateBillingAgreement($request)
{
$parameters = array();
$parameters['Action'] = 'ValidateBillingAgreement';
if ($request->isSetAmazonBillingAgreementId()) {
$parameters['AmazonBillingAgreementId'] = $request->getAmazonBillingAgreementId();
}
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
return $parameters;
}
/**
* Convert AuthorizeOnBillingAgreementRequest to name value pairs
*/
private function _convertAuthorizeOnBillingAgreement($request)
{
$parameters = array();
$parameters['Action'] = 'AuthorizeOnBillingAgreement';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonBillingAgreementId()) {
$parameters['AmazonBillingAgreementId'] = $request->getAmazonBillingAgreementId();
}
if ($request->isSetAuthorizationReferenceId()) {
$parameters['AuthorizationReferenceId'] = $request->getAuthorizationReferenceId();
}
if ($request->isSetAuthorizationAmount()) {
$authorizationAmountauthorizeOnBillingAgreementRequest = $request->getAuthorizationAmount();
if ($authorizationAmountauthorizeOnBillingAgreementRequest->isSetAmount()) {
$parameters['AuthorizationAmount' . '.' . 'Amount'] = $authorizationAmountauthorizeOnBillingAgreementRequest->getAmount();
}
if ($authorizationAmountauthorizeOnBillingAgreementRequest->isSetCurrencyCode()) {
$parameters['AuthorizationAmount' . '.' . 'CurrencyCode'] = $authorizationAmountauthorizeOnBillingAgreementRequest->getCurrencyCode();
}
}
if ($request->isSetSellerAuthorizationNote()) {
$parameters['SellerAuthorizationNote'] = $request->getSellerAuthorizationNote();
}
if ($request->isSetTransactionTimeout()) {
$parameters['TransactionTimeout'] = $request->getTransactionTimeout();
}
if ($request->isSetCaptureNow()) {
$parameters['CaptureNow'] = $request->getCaptureNow() ? "true" : "false";
}
if ($request->isSetSoftDescriptor()) {
$parameters['SoftDescriptor'] = $request->getSoftDescriptor();
}
if ($request->isSetSellerNote()) {
$parameters['SellerNote'] = $request->getSellerNote();
}
if ($request->isSetPlatformId()) {
$parameters['PlatformId'] = $request->getPlatformId();
}
if ($request->isSetSellerOrderAttributes()) {
$sellerOrderAttributesauthorizeOnBillingAgreementRequest = $request->getSellerOrderAttributes();
if ($sellerOrderAttributesauthorizeOnBillingAgreementRequest->isSetSellerOrderId()) {
$parameters['SellerOrderAttributes' . '.' . 'SellerOrderId'] = $sellerOrderAttributesauthorizeOnBillingAgreementRequest->getSellerOrderId();
}
if ($sellerOrderAttributesauthorizeOnBillingAgreementRequest->isSetStoreName()) {
$parameters['SellerOrderAttributes' . '.' . 'StoreName'] = $sellerOrderAttributesauthorizeOnBillingAgreementRequest->getStoreName();
}
if ($sellerOrderAttributesauthorizeOnBillingAgreementRequest->isSetOrderItemCategories()) {
$orderItemCategoriessellerOrderAttributes = $sellerOrderAttributesauthorizeOnBillingAgreementRequest->getOrderItemCategories();
foreach ($orderItemCategoriessellerOrderAttributes->getOrderItemCategory() as $orderItemCategoryorderItemCategoriesIndex => $orderItemCategoryorderItemCategories) {
$parameters['SellerOrderAttributes' . '.' . 'OrderItemCategories' . '.' . 'OrderItemCategory' . '.' . ($orderItemCategoryorderItemCategoriesIndex + 1)] = $orderItemCategoryorderItemCategories;
}
}
if ($sellerOrderAttributesauthorizeOnBillingAgreementRequest->isSetCustomInformation()) {
$parameters['SellerOrderAttributes' . '.' . 'CustomInformation'] = $sellerOrderAttributesauthorizeOnBillingAgreementRequest->getCustomInformation();
}
}
if ($request->isSetInheritShippingAddress()) {
$parameters['InheritShippingAddress'] = $request->getInheritShippingAddress() ? "true" : "false";
}
return $parameters;
}
/**
* Convert CloseBillingAgreementRequest to name value pairs
*/
private function _convertCloseBillingAgreement($request)
{
$parameters = array();
$parameters['Action'] = 'CloseBillingAgreement';
if ($request->isSetAmazonBillingAgreementId()) {
$parameters['AmazonBillingAgreementId'] = $request->getAmazonBillingAgreementId();
}
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetClosureReason()) {
$parameters['ClosureReason'] = $request->getClosureReason();
}
if ($request->isSetReasonCode()) {
$parameters['ReasonCode'] = $request->getReasonCode();
}
return $parameters;
}
/**
* Convert GetProviderCreditDetailsRequest to name value pairs
*/
private function _convertGetProviderCreditDetails($request)
{
$parameters = array();
$parameters['Action'] = 'GetProviderCreditDetails';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonProviderCreditId()) {
$parameters['AmazonProviderCreditId'] = $request->getAmazonProviderCreditId();
}
return $parameters;
}
/**
* Convert GetProviderCreditReversalDetailsRequest to name value pairs
*/
private function _convertGetProviderCreditReversalDetails($request)
{
$parameters = array();
$parameters['Action'] = 'GetProviderCreditReversalDetails';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonProviderCreditReversalId()) {
$parameters['AmazonProviderCreditReversalId'] = $request->getAmazonProviderCreditReversalId();
}
return $parameters;
}
/**
* Convert ReverseProviderCreditRequest to name value pairs
*/
private function _convertReverseProviderCredit($request)
{
$parameters = array();
$parameters['Action'] = 'ReverseProviderCredit';
if ($request->isSetSellerId()) {
$parameters['SellerId'] = $request->getSellerId();
}
if ($request->isSetMWSAuthToken()) {
$parameters['MWSAuthToken'] = $request->getMWSAuthToken();
}
if ($request->isSetAmazonProviderCreditId()) {
$parameters['AmazonProviderCreditId'] = $request->getAmazonProviderCreditId();
}
if ($request->isSetCreditReversalReferenceId()) {
$parameters['CreditReversalReferenceId'] = $request->getCreditReversalReferenceId();
}
if ($request->isSetCreditReversalAmount()) {
$creditReversalAmountreverseProviderCreditRequest = $request->getCreditReversalAmount();
if ($creditReversalAmountreverseProviderCreditRequest->isSetAmount()) {
$parameters['CreditReversalAmount' . '.' . 'Amount'] = $creditReversalAmountreverseProviderCreditRequest->getAmount();
}
if ($creditReversalAmountreverseProviderCreditRequest->isSetCurrencyCode()) {
$parameters['CreditReversalAmount' . '.' . 'CurrencyCode'] = $creditReversalAmountreverseProviderCreditRequest->getCurrencyCode();
}
}
if ($request->isSetCreditReversalNote()) {
$parameters['CreditReversalNote'] = $request->getCreditReversalNote();
}
return $parameters;
}
}