示例#1
0
 /**
  * {@inheritDoc}
  */
 public function execute($request)
 {
     /** @var $request Capture */
     RequestNotSupportedException::assertSupports($this, $request);
     $postData = ArrayObject::ensureArrayObject($request->getModel());
     if (empty($postData['Ds_Merchant_MerchantURL']) && $request->getToken() && $this->tokenFactory) {
         $notifyToken = $this->tokenFactory->createNotifyToken($request->getToken()->getGatewayName(), $request->getToken()->getDetails());
         $postData['Ds_Merchant_MerchantURL'] = $notifyToken->getTargetUrl();
     }
     $postData->validatedKeysSet(array('Ds_Merchant_Amount', 'Ds_Merchant_Order', 'Ds_Merchant_Currency', 'Ds_Merchant_TransactionType', 'Ds_Merchant_MerchantURL'));
     $postData['Ds_Merchant_MerchantCode'] = $this->api->getMerchantCode();
     $postData['Ds_Merchant_Terminal'] = $this->api->getMerchantTerminalCode();
     if (false == $postData['Ds_Merchant_UrlOK'] && $request->getToken()) {
         $postData['Ds_Merchant_UrlOK'] = $request->getToken()->getTargetUrl();
     }
     if (false == $postData['Ds_Merchant_UrlKO'] && $request->getToken()) {
         $postData['Ds_Merchant_UrlKO'] = $request->getToken()->getTargetUrl();
     }
     $postData['Ds_SignatureVersion'] = Api::SIGNATURE_VERSION;
     if (false == $postData['Ds_MerchantParameters'] && $request->getToken()) {
         $postData['Ds_MerchantParameters'] = $this->api->createMerchantParameters($postData->toUnsafeArray());
     }
     if (false == $postData['Ds_Signature']) {
         $postData['Ds_Signature'] = $this->api->sign($postData->toUnsafeArray());
         throw new HttpPostRedirect($this->api->getRedsysUrl(), $postData->toUnsafeArray());
     }
 }