From b8c1ba23b3b3c423e18ffa71fc99d9213c661ab6 Mon Sep 17 00:00:00 2001 From: Jason Judge Date: Wed, 18 May 2016 18:37:20 +0100 Subject: [PATCH] Issue #11 Set ClientIp via the parameters form. Still not ideal - seems too much repitition in code. Also the clientIp is not retreived from the session, but many other fields (e.g. return URLs) are also not retrieved from the session when re-presenting the request form, so it is consistent at least, but could do with some improvements. --- index.php | 13 ++++++------- views/request.twig | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/index.php b/index.php index 1c9f0e8..893d0d8 100644 --- a/index.php +++ b/index.php @@ -68,6 +68,7 @@ $gateway->initialize((array) $app['session']->get($sessionVar)); $params = $app['session']->get($sessionVar.'.authorize', array()); + $params['clientIp'] = $app['request']->getClientIp(); $params['returnUrl'] = str_replace('/authorize', '/completeAuthorize', $app['request']->getUri()); $params['cancelUrl'] = $app['request']->getUri(); $card = new CreditCard($app['session']->get($sessionVar.'.card')); @@ -95,7 +96,6 @@ $app['session']->set($sessionVar.'.card', $card); $params['card'] = $card; - $params['clientIp'] = $app['request']->getClientIp(); $response = $gateway->authorize($params)->send(); return $app['twig']->render('response.twig', array( @@ -126,6 +126,7 @@ $gateway->initialize((array) $app['session']->get($sessionVar)); $params = $app['session']->get($sessionVar.'.capture', array()); + $params['clientIp'] = $app['request']->getClientIp(); return $app['twig']->render('request.twig', array( 'gateway' => $gateway, @@ -146,7 +147,6 @@ // save POST data into session $app['session']->set($sessionVar.'.capture', $params); - $params['clientIp'] = $app['request']->getClientIp(); $response = $gateway->capture($params)->send(); return $app['twig']->render('response.twig', array( @@ -162,6 +162,7 @@ $gateway->initialize((array) $app['session']->get($sessionVar)); $params = $app['session']->get($sessionVar.'.purchase', array()); + $params['clientIp'] = $app['request']->getClientIp(); $params['returnUrl'] = str_replace('/purchase', '/completePurchase', $app['request']->getUri()); $params['cancelUrl'] = $app['request']->getUri(); $card = new CreditCard($app['session']->get($sessionVar.'.card')); @@ -189,7 +190,6 @@ $app['session']->set($sessionVar.'.card', $card); $params['card'] = $card; - $params['clientIp'] = $app['request']->getClientIp(); $response = $gateway->purchase($params)->send(); return $app['twig']->render('response.twig', array( @@ -208,7 +208,6 @@ // load request data from session $params = $app['session']->get($sessionVar.'.purchase', array()); - $params['clientIp'] = $app['request']->getClientIp(); $response = $gateway->completePurchase($params)->send(); return $app['twig']->render('response.twig', array( @@ -224,6 +223,7 @@ $gateway->initialize((array) $app['session']->get($sessionVar)); $params = $app['session']->get($sessionVar.'.create', array()); + $params['clientIp'] = $app['request']->getClientIp(); $card = new CreditCard($app['session']->get($sessionVar.'.card')); return $app['twig']->render('request.twig', array( @@ -249,7 +249,6 @@ $app['session']->set($sessionVar.'.card', $card); $params['card'] = $card; - $params['clientIp'] = $app['request']->getClientIp(); $response = $gateway->createCard($params)->send(); return $app['twig']->render('response.twig', array( @@ -265,6 +264,7 @@ $gateway->initialize((array) $app['session']->get($sessionVar)); $params = $app['session']->get($sessionVar.'.update', array()); + $params['clientIp'] = $app['request']->getClientIp(); $card = new CreditCard($app['session']->get($sessionVar.'.card')); return $app['twig']->render('request.twig', array( @@ -290,7 +290,6 @@ $app['session']->set($sessionVar.'.card', $card); $params['card'] = $card; - $params['clientIp'] = $app['request']->getClientIp(); $response = $gateway->updateCard($params)->send(); return $app['twig']->render('response.twig', array( @@ -306,6 +305,7 @@ $gateway->initialize((array) $app['session']->get($sessionVar)); $params = $app['session']->get($sessionVar.'.delete', array()); + $params['clientIp'] = $app['request']->getClientIp(); return $app['twig']->render('request.twig', array( 'gateway' => $gateway, @@ -326,7 +326,6 @@ // save POST data into session $app['session']->set($sessionVar.'.delete', $params); - $params['clientIp'] = $app['request']->getClientIp(); $response = $gateway->deleteCard($params)->send(); return $app['twig']->render('response.twig', array( diff --git a/views/request.twig b/views/request.twig index 4d582de..76ba951 100644 --- a/views/request.twig +++ b/views/request.twig @@ -14,7 +14,7 @@ $response = $gateway->{{ method }}($params);

The following parameters are available. Not all options are required by all gateways.

Note Normally these parameters would be generated by your application and not set via form input.

- {% for key in ["amount", "currency", "description", "transactionId", "transactionReference", "cardReference", "returnUrl", "cancelUrl", "notifyUrl", "issuer"] %} + {% for key in ["amount", "currency", "description", "transactionId", "transactionReference", "cardReference", "returnUrl", "cancelUrl", "notifyUrl", "issuer", "clientIp"] %}