|
14 | 14 | use Ixopay\Client\Data\Result\ScheduleResultData;
|
15 | 15 | use Ixopay\Client\Data\Result\WalletData as ReturnWalletData;
|
16 | 16 | use Ixopay\Client\Data\RiskCheckData;
|
| 17 | +use Ixopay\Client\Data\TracingData\TracingData; |
| 18 | +use Ixopay\Client\Data\TracingData\TracingDataConnector; |
| 19 | +use Ixopay\Client\Data\TracingData\TracingDataTransaction; |
17 | 20 | use Ixopay\Client\Data\TransactionSplit;
|
18 | 21 | use Ixopay\Client\Dispute\DisputeResult;
|
19 | 22 | use Ixopay\Client\Options\OptionsResult;
|
@@ -183,6 +186,8 @@ public function parseStatusResult($jsonString) {
|
183 | 186 | $result->setTransactionSubType($json['transactionSubType']);
|
184 | 187 | }
|
185 | 188 |
|
| 189 | + $this->setTracingData($json, $result); |
| 190 | + |
186 | 191 | return $result;
|
187 | 192 | }
|
188 | 193 |
|
@@ -304,6 +309,8 @@ public function parseCallback($jsonString){
|
304 | 309 | $result->setTransactionSubType($json['transactionSubType']);
|
305 | 310 | }
|
306 | 311 |
|
| 312 | + $this->setTracingData($json, $result); |
| 313 | + |
307 | 314 | return $result;
|
308 | 315 | }
|
309 | 316 |
|
@@ -544,6 +551,72 @@ protected function parseCustomerProfileData($data){
|
544 | 551 | return $customerProfileData;
|
545 | 552 | }
|
546 | 553 |
|
| 554 | + /** |
| 555 | + * @param $data |
| 556 | + * |
| 557 | + * @return TracingData |
| 558 | + */ |
| 559 | + protected function parseTracingData($data) |
| 560 | + { |
| 561 | + $transactions = $this->arrGet($data, 'transactions'); |
| 562 | + $transactions = array_map( |
| 563 | + fn(array $transactionData) => $this->parseTracingDataTransaction($transactionData), |
| 564 | + $transactions |
| 565 | + ); |
| 566 | + |
| 567 | + $tracingData = new TracingData(); |
| 568 | + $tracingData->setTransactions($transactions); |
| 569 | + |
| 570 | + return $tracingData; |
| 571 | + } |
| 572 | + |
| 573 | + /** |
| 574 | + * @param $json |
| 575 | + * @param StatusResult|CallbackResult $result |
| 576 | + * |
| 577 | + * @return void |
| 578 | + */ |
| 579 | + public function setTracingData($json, $result) |
| 580 | + { |
| 581 | + if (!isset($json['tracingData'])) { |
| 582 | + return; |
| 583 | + } |
| 584 | + |
| 585 | + $tracingData = $this->parseTracingData($json['tracingData']); |
| 586 | + $result->setTracingData($tracingData); |
| 587 | + } |
| 588 | + |
| 589 | + /** |
| 590 | + * @param $data |
| 591 | + * |
| 592 | + * @return TracingDataTransaction |
| 593 | + */ |
| 594 | + protected function parseTracingDataTransaction($data) |
| 595 | + { |
| 596 | + $tracingDataTransaction = new TracingDataTransaction(); |
| 597 | + $tracingDataTransaction->setUuid($this->arrGet($data, 'uuid')); |
| 598 | + $tracingDataTransaction->setSequenceNumber($this->arrGet($data, 'sequence_number')); |
| 599 | + $tracingDataTransaction->setStatus($this->arrGet($data, 'status')); |
| 600 | + |
| 601 | + $connector = $this->parseTracingDataConnector($this->arrGet($data, 'connector')); |
| 602 | + $tracingDataTransaction->setConnector($connector); |
| 603 | + |
| 604 | + return $tracingDataTransaction; |
| 605 | + } |
| 606 | + |
| 607 | + /** |
| 608 | + * @param $data |
| 609 | + * |
| 610 | + * @return TracingDataConnector |
| 611 | + */ |
| 612 | + protected function parseTracingDataConnector($data) |
| 613 | + { |
| 614 | + $tracingDataConnector = new TracingDataConnector(); |
| 615 | + $tracingDataConnector->setGuid($this->arrGet($data, 'guid')); |
| 616 | + |
| 617 | + return $tracingDataConnector; |
| 618 | + } |
| 619 | + |
547 | 620 | /**
|
548 | 621 | * helper function: array get
|
549 | 622 | * -> returns value at given key if exists
|
|
0 commit comments