public function execute($request)
 {
     RequestNotSupportedException::assertSupports($this, $request);
     $model = ArrayObject::ensureArrayObject($request->getModel());
     $httpRequest = new GetHttpRequest();
     $this->payment->execute($httpRequest);
     if ($httpRequest->request) {
         $model->replace($httpRequest->request);
         $this->payment->execute(new Notify($model));
     } else {
         throw new HttpPostRedirect($this->api->getNewPaymentUrl(), $this->api->buildFormParamsForPostRequest($model->toUnsafeArray()));
     }
 }