Skip to content

Commit

Permalink
Use version 2 messages and sha256 digest
Browse files Browse the repository at this point in the history
  • Loading branch information
dnna committed Jul 15, 2019
1 parent 8c9b797 commit 96bb35c
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 14 deletions.
3 changes: 3 additions & 0 deletions Action/Api/CreateChargeAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@ public function execute($request): void
$model['hashedOrderid'] = md5($model['orderid'] . 'H' . $request->getToken()->getHash() . $retries);

$mappedModel = new ArrayObject();
if (isset($model['version'])) {
$mappedModel['version'] = $model['version'];
}
if (isset($model['mid'])) {
$mappedModel['mid'] = $model['mid'];
} elseif ($this->mid != null) {
Expand Down
22 changes: 12 additions & 10 deletions Action/ConvertPaymentAction.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php

namespace Dnna\Payum\AlphaBank\Action;

use Payum\Core\Bridge\Spl\ArrayObject;
Expand All @@ -17,7 +18,8 @@ class ConvertPaymentAction implements ActionInterface
private $lang;
private $cssUrl;

public function __construct(bool $isSandbox, bool $useMasterPass, string $lang, string $cssUrl) {
public function __construct(bool $isSandbox, bool $useMasterPass, string $lang, string $cssUrl)
{
$this->isSandbox = $isSandbox;
$this->useMasterPass = $useMasterPass;
$this->lang = $lang;
Expand All @@ -29,42 +31,42 @@ public function __construct(bool $isSandbox, bool $useMasterPass, string $lang,
*
* @param Convert $request
*/
public function execute($request)
public function execute($request): void
{
RequestNotSupportedException::assertSupports($this, $request);

/** @var PaymentInterface $payment */
$payment = $request->getSource();

$details = ArrayObject::ensureArrayObject($payment->getDetails());
$details['version'] = 2;
$details['lang'] = $this->lang;
$details['orderid'] = $payment->getNumber();
$details['orderDesc'] = $payment->getDescription();
$details['orderAmount'] = $payment->getTotalAmount()/100;
$details['orderAmount'] = $payment->getTotalAmount() / 100;
$details['currency'] = $payment->getCurrencyCode();
$details['payerEmail'] = $payment->getClientEmail();
if($this->isSandbox) {
if ($this->isSandbox) {
$details['orderAmount'] = 0.5; // Alpha Bank's sandbox requires <1 EUR
}
if($this->useMasterPass == true) {
if ($this->useMasterPass == true) {
$details['payMethod'] = 'auto:MasterPass';
}
if($this->cssUrl != null) {
if ($this->cssUrl != null) {
$details['cssUrl'] = $this->cssUrl;
}

$request->setResult((array) $details);
$request->setResult((array)$details);
}

/**
* {@inheritDoc}
*/
public function supports($request)
public function supports($request): bool
{
return
$request instanceof Convert &&
$request->getSource() instanceof PaymentInterface &&
$request->getTo() == 'array'
;
$request->getTo() == 'array';
}
}
7 changes: 3 additions & 4 deletions Util/DigestCalculator.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,15 @@ public function calculateDigest(ArrayObject $model): string
$string .= $curValue;
}
$string .= $this->sharedSecretKey;
error_log($string);

return base64_encode(sha1($string, true));
return base64_encode(hash('sha256', $string, true));
}

public function calculateDigestForString(string $string): string
{
$string .= $this->sharedSecretKey;

return base64_encode(sha1($string, true));
return base64_encode(hash('sha256', $string, true));
}

public function verifyDigest(array $model, string $digest): bool
Expand All @@ -45,7 +44,7 @@ public function verifyDigest(array $model, string $digest): bool
$string .= $curValue;
}
$string .= $this->sharedSecretKey;
$newDigest = base64_encode(sha1($string, true));
$newDigest = base64_encode(hash('sha256', $string, true));

return $newDigest === $digest;
}
Expand Down

0 comments on commit 96bb35c

Please sign in to comment.