/** * {@inheritDoc} * * @throws HttpPostRedirect if authorization required. */ public function execute($request) { /** @var $request Capture */ if (false == $this->supports($request)) { throw RequestNotSupportedException::createActionNotSupported($this, $request); } $model = ArrayObject::ensureArrayObject($request->getModel()); $httpRequest = new GetHttpRequest(); $this->payment->execute($httpRequest); //we are back from be2bill site so we have to just update model. if (isset($httpRequest->query['EXECCODE'])) { $model->replace($httpRequest->query); } else { throw new HttpPostRedirect($this->api->getOnsiteUrl(), $this->api->prepareOnsitePayment($model->toUnsafeArray())); } }
/** * @test */ public function shouldKeepSupportedOnPrepareOnsitePayment() { $api = new Api($this->createClientMock(), array('identifier' => 'anId', 'password' => 'aPass', 'sandbox' => true)); $post = $api->prepareOnsitePayment(array('AMOUNT' => 100, 'DESCRIPTION' => 'a desc')); $this->assertInternalType('array', $post); $this->assertArrayHasKey('AMOUNT', $post); $this->assertEquals(100, $post['AMOUNT']); $this->assertArrayHasKey('DESCRIPTION', $post); $this->assertEquals('a desc', $post['DESCRIPTION']); }