1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Stadem\VivaPayments\Request; |
4
|
|
|
use Stadem\VivaPayments\Config\Config; |
5
|
|
|
use Stadem\VivaPayments\Traits\getConfigSettings; |
6
|
|
|
use Stadem\VivaPayments\Services\CurlWrapper; |
7
|
|
|
use Stadem\VivaPayments\Enums; |
8
|
|
|
|
9
|
|
|
|
10
|
|
|
|
11
|
|
|
class Transaction |
12
|
|
|
{ |
13
|
|
|
|
14
|
|
|
use getConfigSettings; |
15
|
|
|
|
16
|
|
|
private $accessToken; |
17
|
|
|
public Config|Array $configObject; |
18
|
|
|
|
19
|
|
|
public function __construct($accessToken,Config|array $configObject) |
20
|
|
|
{ |
21
|
|
|
$this->accessToken = $accessToken; |
22
|
|
|
$this->configObject=$configObject; |
23
|
|
|
} |
24
|
|
|
|
25
|
|
|
|
26
|
|
|
public function getnById($vivaOrdercode) |
27
|
|
|
{ |
28
|
|
|
return $vivaOrdercode; |
29
|
|
|
} |
30
|
|
|
|
31
|
|
|
public function getByTransaction($vivaTransaction) |
32
|
|
|
{ |
33
|
|
|
// https://demo.vivapayments.com/api/transactions/:transaction_id |
34
|
|
|
if (!$vivaTransaction) throw new \Exception('Invalid transaction code'); |
35
|
|
|
$config = $this->configObject; |
36
|
|
|
$url = $config->getEnvConfig('VIVA_URL'); |
37
|
|
|
$curl = new CurlWrapper($url . '/api/transactions/' . $vivaTransaction); |
38
|
|
|
$curl->addHeader('Content-Type: application/json'); |
39
|
|
|
$curl->addHeader('User-Agent: PHPGatewayRuntime/0.0.1'); |
40
|
|
|
$curl->addHeader('Accept: */*'); |
41
|
|
|
$curl->setBasicAuth($config->getEnvConfig('VIVA_MERCHANT_ID'), $config->getEnvConfig('VIVA_API_KEY')); |
42
|
|
|
$response = $curl->get(); |
43
|
|
|
// $response= '{"Transactions":[{"Fee":0.00,"BankId":"CLK_ALPHA","ParentId":null,"Switching":false,"Amount":1.20,"StatusId":"F","ChannelId":"245a790d-c98d-4d80-ad97-a9b1efb5771e","MerchantId":"41ebd27c-d39c-418f-875f-433fec10c9ac","ResellerId":null,"InsDate":"2024-06-08T23:30:14.65+03:00","CreatedBy":null,"TipAmount":0.00,"SourceCode":"8541","TransactionId":"f1bad807-15d7-4c41-b578-656e5cf40a16","Commission":0.27,"PanEntryMode":"01","MerchantTrns":"This is a short description that helps you uniquely identify the transaction","CurrencyCode":"978","CustomerTrns":"Test POST - No End Payment","IsManualRefund":false,"TargetPersonId":null,"AcquirerApproved":false,"SourceTerminalId":79504090,"RedeemedAmount":0.00,"AuthorizationId":"208330","TotalInstallments":0,"CurrentInstallment":0,"ClearanceDate":"2024-06-09T02:05:57.6+03:00","ConversionRate":1.0000000,"OriginalAmount":1.2000,"ResellerSourceCode":null,"OriginalCurrencyCode":"978","RetrievalReferenceNumber":"416020208330","Order":{"OrderCode":4694439209472602,"ChannelId":"245a790d-c98d-4d80-ad97-a9b1efb5771e","ResellerId":null,"SourceCode":"8541","Tags":["tag1","tag2"],"RequestLang":"el-GR","ResellerSourceCode":null},"Payment":{"Email":"[email protected]","Phone":"+306987654321","ChannelId":"245a790d-c98d-4d80-ad97-a9b1efb5771e","FullName":"Stavros Dem","Installments":0,"RecurringSupport":false},"TransactionType":{"Name":"CardCharge","TransactionTypeId":5},"CreditCard":{"Token":"2BFCB1FD4F000DB41CB5BA76CAFB68D76AB87752","Number":"414746XXXXXX0133","CountryCode":"SG","IssuingBank":"Citibank Singapore Ltd.","CardHolderName":"Lang WoodrowKyprios Testopoulos","ExpirationDate":"2028-01-31T00:00:00","CardType":{"Name":"VISA","CardTypeId":0}}}],"ErrorCode":0,"ErrorText":null,"TimeStamp":"2024-06-09T12:11:27.1514931+03:00","CorrelationId":null,"EventId":0,"Success":true}'; |
44
|
|
|
$response = json_decode($response, true); |
|
|
|
|
45
|
|
|
$response['Payment'] = $this->getByTransactionMapper($response); |
46
|
|
|
return $response; |
47
|
|
|
} |
48
|
|
|
|
49
|
|
|
|
50
|
|
|
public function getByTransactionMapper($response) |
51
|
|
|
{ |
52
|
|
|
$mapper['TransactionId'] = $response['Transactions'][0]['TransactionId']; |
|
|
|
|
53
|
|
|
$mapper['OrderCode'] = $response['Transactions'][0]['Order']['OrderCode']; |
54
|
|
|
$mapper['PaymentStatus'] = Enums\TransactionStatus::fromValue($response['Transactions'][0]['StatusId']); |
55
|
|
|
$mapper['TransactionType'] = Enums\TransactionType::fromValue($response['Transactions'][0]['TransactionType']['TransactionTypeId']); |
56
|
|
|
$mapper['Amount'] = $response['Transactions'][0]['Amount']; |
57
|
|
|
$mapper['Commission'] = $response['Transactions'][0]['Commission']; |
58
|
|
|
$mapper['Tags'] = $response['Transactions'][0]['Order']['Tags']; |
59
|
|
|
return $mapper; |
60
|
|
|
} |
61
|
|
|
|
62
|
|
|
|
63
|
|
|
public function getByTransactionV2($vivaTransaction) |
64
|
|
|
{ |
65
|
|
|
// https://demo.vivapayments.com/checkout/v2/transactions/:transaction_id |
66
|
|
|
if (!$vivaTransaction) throw new \Exception('Invalid transaction code'); |
67
|
|
|
$token = $this->accessToken->getToken(); |
68
|
|
|
$config = $this->configObject; |
69
|
|
|
$url = $config->getEnvConfig('VIVA_API_URL') . '/checkout/v2/transactions/' . $vivaTransaction; |
70
|
|
|
$curl = new CurlWrapper($url); |
71
|
|
|
$curl->addHeader('Content-Type: application/json'); |
72
|
|
|
$curl->addHeader('User-Agent: PHPGatewayRuntime/0.0.1'); |
73
|
|
|
$curl->setBearer($token); |
74
|
|
|
$response = $curl->get(); |
75
|
|
|
$response = json_decode($response, true); |
|
|
|
|
76
|
|
|
$response['PaymentStatus'] = Enums\TransactionStatus::fromValue($response['statusId']); |
77
|
|
|
$response['TransactionType'] = Enums\TransactionType::fromValue($response['transactionTypeId']); |
78
|
|
|
return $response; |
79
|
|
|
} |
80
|
|
|
|
81
|
|
|
|
82
|
|
|
public function getByOrderCode($orderCode) |
83
|
|
|
{ |
84
|
|
|
// https://demo.vivapayments.com/api/orders/:orderCode |
85
|
|
|
if (!$orderCode) throw new \Exception('Invalid transaction code'); |
86
|
|
|
$config = $this->configObject; |
87
|
|
|
$url = $config->getEnvConfig('VIVA_URL'); |
88
|
|
|
$curl = new CurlWrapper($url . '/api/orders/' . $orderCode); |
89
|
|
|
$curl->addHeader('Content-Type: application/json'); |
90
|
|
|
$curl->addHeader('User-Agent: PHPGatewayRuntime/0.0.1'); |
91
|
|
|
$curl->addHeader('Accept: */*'); |
92
|
|
|
$curl->setBasicAuth($config->getEnvConfig('VIVA_MERCHANT_ID'), $config->getEnvConfig('VIVA_API_KEY')); |
93
|
|
|
$response = $curl->get(); |
94
|
|
|
$response = json_decode($response, true); |
|
|
|
|
95
|
|
|
$response['orderStatus'] = Enums\OrderStatus::fromValue($response['StateId']); |
96
|
|
|
// $response['PaymentStatus'] = Enums\TransactionStatus::fromValue($response['StateId']); |
97
|
|
|
return $response; |
98
|
|
|
} |
99
|
|
|
|
100
|
|
|
|
101
|
|
|
} |
102
|
|
|
|