105 lines
2.8 KiB
PHP
105 lines
2.8 KiB
PHP
<?php
|
|
namespace Braintree;
|
|
|
|
use InvalidArgumentException;
|
|
|
|
/**
|
|
* Braintree IdealPaymentGateway module
|
|
*
|
|
* @package Braintree
|
|
* @category Resources
|
|
*/
|
|
|
|
/**
|
|
* Manages Braintree IdealPayments
|
|
*
|
|
* <b>== More information ==</b>
|
|
*
|
|
*
|
|
* @package Braintree
|
|
* @category Resources
|
|
*/
|
|
class IdealPaymentGateway
|
|
{
|
|
private $_gateway;
|
|
private $_config;
|
|
private $_http;
|
|
|
|
public function __construct($gateway)
|
|
{
|
|
$this->_gateway = $gateway;
|
|
$this->_config = $gateway->config;
|
|
$this->_config->assertHasAccessTokenOrKeys();
|
|
$this->_http = new Http($gateway->config);
|
|
}
|
|
|
|
/**
|
|
* find an IdealPayment by id
|
|
*
|
|
* @access public
|
|
* @param string $idealPaymentId
|
|
* @return IdealPayment
|
|
* @throws Exception\NotFound
|
|
*/
|
|
public function find($idealPaymentId)
|
|
{
|
|
try {
|
|
$path = $this->_config->merchantPath() . '/ideal_payments/' . $idealPaymentId;
|
|
$response = $this->_http->get($path);
|
|
return IdealPayment::factory($response['idealPayment']);
|
|
} catch (Exception\NotFound $e) {
|
|
throw new Exception\NotFound(
|
|
'iDEAL Payment with id ' . $idealPaymentId . ' not found'
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* create a new sale for the current IdealPayment
|
|
*
|
|
* @param string $idealPaymentId
|
|
* @param array $transactionAttribs
|
|
* @return Result\Successful|Result\Error
|
|
* @see Transaction::sale()
|
|
*/
|
|
public function sale($idealPaymentId, $transactionAttribs)
|
|
{
|
|
return Transaction::sale(
|
|
array_merge(
|
|
$transactionAttribs,
|
|
['paymentMethodNonce' => $idealPaymentId]
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* generic method for validating incoming gateway responses
|
|
*
|
|
* creates a new IdealPayment object and encapsulates
|
|
* it inside a Result\Successful object, or
|
|
* encapsulates a Errors object inside a Result\Error
|
|
* alternatively, throws an Unexpected exception if the response is invalid.
|
|
*
|
|
* @ignore
|
|
* @param array $response gateway response values
|
|
* @return Result\Successful|Result\Error
|
|
* @throws Exception\Unexpected
|
|
*/
|
|
private function _verifyGatewayResponse($response)
|
|
{
|
|
if (isset($response['idealPayment'])) {
|
|
// return a populated instance of IdealPayment
|
|
return new Result\Successful(
|
|
IdealPayment::factory($response['idealPayment'])
|
|
);
|
|
} else if (isset($response['apiErrorResponse'])) {
|
|
return new Result\Error($response['apiErrorResponse']);
|
|
} else {
|
|
throw new Exception\Unexpected(
|
|
'Expected Ideal Payment or apiErrorResponse'
|
|
);
|
|
}
|
|
}
|
|
}
|
|
class_alias('Braintree\IdealPaymentGateway', 'Braintree_IdealPaymentGateway');
|