/**
* {@inheritDoc}
*
* @param Authorize $request
*/
public function execute($request)
{
RequestNotSupportedException::assertSupports($this, $request);
$details = ArrayObject::ensureArrayObject($request->getModel());
if (!empty($details['PayerID'])) {
return parent::execute($request);
}
if (empty($details['approval_url'])) {
$this->createPayment($details);
}
$paypalConfig = ['approvalUrl' => $details['approval_url'], 'preselection' => 'none', 'mode' => $this->api->get('mode'), 'country' => $details['PAYMENTREQUEST_SHIPPING_ADDRESS']['country_code'], 'showPuiOnSandbox' => true, 'useraction' => 'commit'];
$renderTemplate = new RenderTemplate(self::TEMPLATE, ['config' => $paypalConfig]);
$this->gateway->execute($renderTemplate);
throw new HttpResponse($renderTemplate->getResult());
}