moneta-sdk-php/src/MonetaSdkService.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);
}
}