public function initPayment($wsdl, $sAmount, $cAmount, $banks) { $bkmClient = new InitializePaymentSoapClient($wsdl, ['trace' => 1, 'cache_wsdl' => WSDL_CACHE_NONE]); $initPayment = new InitializePayment(); $initPaymentRequest = new InitializePaymentWSRequest(); $initPaymentRequest->setMerchantId($this->mid)->setSuccessUrl($this->successUrl)->setCancelUrl($this->cancelUrl)->setSaleAmount($sAmount)->setCargoAmount($cAmount)->setBanks($banks)->setTimestamp(date('Ymd-H:i:s')); $dataToBeHashed = $initPaymentRequest->getDataToBeHashed(); $signature = Certificate::sign($dataToBeHashed, $this->privateKeyPath); $verified = Certificate::verify($signature, $dataToBeHashed, $this->publicKeyPath); if (!$verified) { throw new VerificationException("Private / Public key does not match!"); } $initPaymentRequest->setSignature(base64_encode($signature)); $initPayment->setRequest($initPaymentRequest); $bkmClient->setParams($initPayment); $response = $bkmClient->initializePayment(); $verified = $response->verify($this->bkmPublicKeyPath); if (!$verified) { throw new VerificationException("Response cannot be verified!"); } if ($response->success()) { return new RedirectRequest($response, $this->privateKeyPath); } return null; }
/** * @param $bkmPublicKeyPath * @return boolean */ public function verify($bkmPublicKeyPath) { $dataToBeVerified = $this->t . $this->posRef . $this->xid . $this->md . $this->ts; $decodedSignature = base64_decode($this->s); return Certificate::verify($decodedSignature, $dataToBeVerified, $bkmPublicKeyPath); }
public function verifyRequest(RequestMerchInfoWSRequest $wsRequest, $bkmPublicKeyPath) { $decodedSignature = base64_decode($wsRequest->getSignature()); $dataToBeHashed = $wsRequest->getToken() . $wsRequest->getBankId() . $wsRequest->getBankName() . $wsRequest->getCardBin() . $wsRequest->getInstallment() . $wsRequest->getTimestamp(); return Certificate::verify($decodedSignature, $dataToBeHashed, $bkmPublicKeyPath); }
/** * @param $bkmPublicKeyPath * @return boolean */ public function verify($bkmPublicKeyPath) { $dataToBeVerified = $this->initializePaymentWSResponse->getToken() . $this->initializePaymentWSResponse->getUrl() . $this->initializePaymentWSResponse->getTimestamp(); $decodedSignature = base64_decode($this->initializePaymentWSResponse->getSignature()); return Certificate::verify($decodedSignature, $dataToBeVerified, $bkmPublicKeyPath); }