From 1237788a295223ec57c4f12fdfebb1360e51c107 Mon Sep 17 00:00:00 2001 From: Sergey Gonimar Date: Tue, 2 Jul 2019 10:12:41 +0500 Subject: [PATCH 1/2] fix user params --- Merchant.php | 8 ++++++-- tests/unit/MerchantTest.php | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Merchant.php b/Merchant.php index a63e267..ad89ca3 100644 --- a/Merchant.php +++ b/Merchant.php @@ -39,7 +39,7 @@ public function payment($nOutSum, $nInvId, $sInvDesc = null, $sIncCurrLabel = nu { $url = $this->baseUrl; - $sSignatureValue = $this->generateSignature($nOutSum, $nInvId); + $sSignatureValue = $this->generateSignature($nOutSum, $nInvId, $shp); $url .= '?' . http_build_query([ 'MrchLogin' => $this->sMerchantLogin, @@ -80,7 +80,7 @@ private function implodeShp($shp) return implode(':', $shp); } - private function generateSignature($nOutSum, $nInvId) + private function generateSignature($nOutSum, $nInvId, $shp = []) { if ($nInvId === null) { // MerchantLogin:OutSum:Пароль#1 @@ -90,6 +90,10 @@ private function generateSignature($nOutSum, $nInvId) $signature = "{$this->sMerchantLogin}:{$nOutSum}:{$nInvId}:{$this->sMerchantPass1}"; } + if (!empty($shp)) { + $signature .= ':' . $this->implodeShp($shp); + } + return strtolower($this->encryptSignature($signature)); } diff --git a/tests/unit/MerchantTest.php b/tests/unit/MerchantTest.php index 0eb0615..620ed76 100644 --- a/tests/unit/MerchantTest.php +++ b/tests/unit/MerchantTest.php @@ -67,9 +67,11 @@ public function testRedirectUrlUserParams() 'shp_login' => 'user1', ]; + $signatureHash = md5('demo:100:password_1:shp_id=1:shp_login=user1'); + $returnUrl = $merchant->payment(100, 1, 'Description', null, null, 'en', $userParams, true); - $this->assertEquals("https://auth.robokassa.ru/Merchant/Index.aspx?MrchLogin=demo&OutSum=100&InvId=1&Desc=Description&SignatureValue=8a50b8d86ed28921edfc371cff6e156f&Culture=en&IsTest=1&shp_id=1&shp_login=user1", $returnUrl); + $this->assertEquals("https://auth.robokassa.ru/Merchant/Index.aspx?MrchLogin=demo&OutSum=100&InvId=1&Desc=Description&SignatureValue={$signatureHash}&Culture=en&IsTest=1&shp_id=1&shp_login=user1", $returnUrl); } public function testResponseRedirect() From e99126a4625bb78efea888664647d2c623d5a4f9 Mon Sep 17 00:00:00 2001 From: Sergey Gonimar Date: Tue, 2 Jul 2019 10:25:54 +0500 Subject: [PATCH 2/2] fix tests --- tests/unit/MerchantTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/MerchantTest.php b/tests/unit/MerchantTest.php index 620ed76..45725d2 100644 --- a/tests/unit/MerchantTest.php +++ b/tests/unit/MerchantTest.php @@ -67,7 +67,7 @@ public function testRedirectUrlUserParams() 'shp_login' => 'user1', ]; - $signatureHash = md5('demo:100:password_1:shp_id=1:shp_login=user1'); + $signatureHash = md5('demo:100:1:password_1:shp_id=1:shp_login=user1'); $returnUrl = $merchant->payment(100, 1, 'Description', null, null, 'en', $userParams, true);