112 lines
3.4 KiB
PHP
112 lines
3.4 KiB
PHP
<?php
|
|
|
|
namespace Moneta;
|
|
|
|
class MonetaSdkService {
|
|
/**
|
|
* Exception messages text
|
|
*/
|
|
const EXCEPTION_ERROR_ACTION_NAME = "Wrong action name: ";
|
|
|
|
/**
|
|
* @param string $action
|
|
* @param string $transactionId
|
|
* @param float|int $amount
|
|
* @param string $subscriber
|
|
* @return string
|
|
* @throws MonetaSdkException
|
|
*/
|
|
public static function createSignature($action, $transactionId, $configPath, ?float $amount = null,) {
|
|
switch ($action) {
|
|
case 'generateLink':
|
|
return md5(
|
|
MonetaSdkSettings::getSettings('id', $configPath) .
|
|
$transactionId .
|
|
number_format($amount, 2, '.', '') .
|
|
MonetaSdkSettings::getSettings('currency', $configPath) .
|
|
'' .
|
|
0 .
|
|
MonetaSdkSettings::getSettings('secret', $configPath)
|
|
);
|
|
break;
|
|
|
|
case 'checkRequest':
|
|
return md5(
|
|
402 .
|
|
MonetaSdkSettings::getSettings('id', $configPath) .
|
|
$transactionId .
|
|
MonetaSdkSettings::getSettings('secret', $configPath)
|
|
);
|
|
break;
|
|
|
|
case 'paymentNotification':
|
|
return md5(
|
|
200 .
|
|
MonetaSdkSettings::getSettings('id', $configPath) .
|
|
$transactionId .
|
|
MonetaSdkSettings::getSettings('secret', $configPath)
|
|
);
|
|
break;
|
|
|
|
default:
|
|
throw new MonetaSdkException(self::EXCEPTION_ERROR_ACTION_NAME . $action);
|
|
break;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param string $jsonVat
|
|
* @return string
|
|
*/
|
|
public static function getXmlVat($jsonVat) {
|
|
$xmlVatList = [
|
|
'none' => '1105',
|
|
'vat0' => '1104',
|
|
'vat10' => '1103',
|
|
'vat110' => '1107',
|
|
'vat20' => '7000',
|
|
'vat120' => '7001',
|
|
'vat5' => '1108',
|
|
'vat7' => '1109',
|
|
'vat15' => '1110',
|
|
'vat17' => '1111'
|
|
];
|
|
|
|
return isset($xmlVatList[$jsonVat]) ? $xmlVatList[$jsonVat] : '1105';
|
|
}
|
|
|
|
/**
|
|
* MerchantAPI query builder
|
|
*/
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
private static function getApiUrl($configPath) {
|
|
$url = MonetaSdkSettings::getSettings('demo_mode', $configPath) ? MonetaSdkSettings::getSettings('payment_url', $configPath)['demo'] : MonetaSdkSettings::getSettings('payment_url', $configPath)['production'];
|
|
|
|
$urn = MonetaSdkSettings::getSettings('urn');
|
|
|
|
return $url . $urn;
|
|
}
|
|
|
|
/**
|
|
* @param array $params
|
|
* @return string
|
|
*/
|
|
public static function sendCurl($params, $configPath) {
|
|
$ch = curl_init(self::getApiUrl($configPath));
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params, JSON_UNESCAPED_UNICODE));
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|
curl_setopt($ch, CURLOPT_HEADER, false);
|
|
$result = curl_exec($ch);
|
|
curl_close($ch);
|
|
|
|
return json_decode($result, true);
|
|
}
|
|
}
|