/** * @param CheckoutRequestType $request * @return string A uri * @throws BadResponseException */ public function checkout(CheckoutRequestType $request) { // Prepare data $postData = ['ic_version' => self::API_VERSION, 'ic_country' => $request->getCountry(), 'ic_language' => $request->getLanguage(), 'ic_currency' => $request->getCurrency(), 'ic_amount' => $request->getAmount(), 'ic_orderid' => $request->getOrderID(), 'ic_reference' => $request->getReference(), 'ic_description' => $request->getDescription(), 'ic_urlcompleted' => $request->getURLCompleted(), 'ic_urlerror' => $request->getURLError(), 'ic_merchantid' => $request->getMerchantID(), 'chk' => sha1(implode('|', [$request->getMerchantID(), $this->secretCode, $request->getAmount(), $request->getOrderID(), $request->getReference(), $request->getCurrency(), $request->getCountry(), $request->getURLCompleted(), $request->getURLError()]))]; // There is no payment method specified to just generate the basic uri. if (empty($request->getPaymentMethod()) || empty($request->getIssuer())) { $uri = (new Uri($this->getHttpClient()->getConfig('base_uri')))->withPath('/basic/')->withQuery(http_build_query($postData, null, '&', PHP_QUERY_RFC3986)); return (string) $uri; } // Prepare data for request $postData['ic_paymentmethod'] = $request->getPaymentMethod(); $postData['ic_issuer'] = $request->getIssuer(); $queryString = ['type' => $request->getPaymentMethod(), 'checkout' => 'yes', 'ic_redirect' => 'no']; // Request the payment uri $response = $this->getHttpClient()->post('/basic/', ['form_params' => $postData, 'query' => $queryString]); // Validate response if ($response->getStatusCode() !== 200) { throw BadResponseException::forFailedRequest($response); } $uri = $response->getBody()->getContents(); $uriParts = parse_url($uri); if ($uriParts === false || !isset($uriParts['scheme']) || !isset($uriParts['host'])) { throw BadResponseException::forUnexpectedContent($response, 'valid uri'); } return $uri; }
/** * @param CheckoutRequestType $parameters * @return CheckoutResponseType */ public function checkout(CheckoutRequestType $parameters) { Assert::lazy()->that($parameters->getPaymentMethod(), 'PaymentMethod')->notEmpty()->that($parameters->getIssuer(), 'Issuer')->notEmpty()->verifyNow(); $response = $this->soapCall('Checkout', $parameters); return $this->checkResponse($response, 'CheckoutResult'); }
/** * @inheritdoc * @param string $consumerId */ public function __construct($consumerId, $orderId, $amount, $currency, $country, $language, $endUserIP, $paymentMethod, $paymentIssuer) { parent::__construct($orderId, $amount, $currency, $country, $language, $endUserIP, $paymentMethod, $paymentIssuer); Assert::lazy()->that($consumerId, 'consumerId')->notEmpty()->that($paymentMethod, 'paymentMethod')->notEmpty()->that($paymentIssuer, 'paymentIssuer')->notEmpty()->verifyNow(); $this->ConsumerID = $consumerId; }