Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
Complex classes like Builder often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use Builder, and based on these observations, apply Extract Interface, too.
1 | <?php |
||
8 | class Builder |
||
9 | { |
||
10 | /** |
||
11 | * @var string |
||
12 | */ |
||
13 | private $type; |
||
14 | /** |
||
15 | * @var string |
||
16 | */ |
||
17 | private $sequenceId; |
||
18 | /** |
||
19 | * @var IdentityNodeInterface[] |
||
20 | */ |
||
21 | private $identities = array(); |
||
22 | /** |
||
23 | * @var array |
||
24 | */ |
||
25 | private $data = array(); |
||
26 | |||
27 | /** |
||
28 | * Returns builder for confirmation event |
||
29 | * |
||
30 | * @param string $sequenceId |
||
31 | * @param string $userId |
||
32 | * @param int|null $timestamp If null provided, takes current time |
||
33 | * @param bool|null $isEmailConfirmed |
||
34 | * @param bool|null $idPhoneConfirmed |
||
35 | * @param string|null $email |
||
36 | * @param string|null $phone |
||
37 | * @param string|null $groupId |
||
38 | * |
||
39 | * @return Builder |
||
40 | */ |
||
41 | public static function confirmationEvent( |
||
75 | |||
76 | /** |
||
77 | * Returns builder for login event |
||
78 | * |
||
79 | * @param string $sequenceId |
||
80 | * @param string $userId |
||
81 | * @param int|null $timestamp |
||
82 | * @param string|null $email |
||
83 | * @param bool|null $failed |
||
84 | * @param string|null $gender |
||
85 | * @param string|null $trafficSource |
||
86 | * @param string|null $affiliateId |
||
87 | * @param string|null $password |
||
88 | * @param string|null $campaign |
||
89 | * @param string|null $groupId |
||
90 | * |
||
91 | * @return Builder |
||
92 | */ |
||
93 | public static function loginEvent( |
||
137 | |||
138 | /** |
||
139 | * Returns builder for registration event |
||
140 | * |
||
141 | * @param string $sequenceId |
||
142 | * @param string $userId |
||
143 | * @param int|null $timestamp |
||
144 | * @param string|null $email |
||
145 | * @param string|null $userName |
||
146 | * @param string|null $firstName |
||
147 | * @param string|null $lastName |
||
148 | * @param int|null $age |
||
149 | * @param string|null $gender |
||
150 | * @param string|null $phone |
||
151 | * @param string|null $country |
||
152 | * @param string|null $socialType |
||
153 | * @param string|null $websiteUrl |
||
154 | * @param string|null $trafficSource |
||
155 | * @param string|null $affiliateId |
||
156 | * @param string|null $password |
||
157 | * @param string|null $campaign |
||
158 | * @param string|null $groupId |
||
159 | * |
||
160 | * @return Builder |
||
161 | */ |
||
162 | public static function registrationEvent( |
||
218 | |||
219 | /** |
||
220 | * Returns builder for payout request |
||
221 | * |
||
222 | * @param string $sequenceId |
||
223 | * @param string $userId |
||
224 | * @param string $payoutId |
||
225 | * @param string $currency |
||
226 | * @param int|float $amount |
||
227 | * @param int|null $payoutTimestamp |
||
228 | * @param string|null $cardId |
||
229 | * @param string|null $accountId |
||
230 | * @param string|null $method |
||
231 | * @param string|null $system |
||
232 | * @param string|null $mid |
||
233 | * @param int|float $amountConverted |
||
234 | * @param string|null $firstName |
||
235 | * @param string|null $lastName |
||
236 | * @param string|null $country |
||
237 | * @param string|null $email |
||
238 | * @param string|null $phone |
||
239 | * @param int|null $cardBin |
||
240 | * @param string|null $cardLast4 |
||
241 | * @param int|null $cardExpirationMonth |
||
242 | * @param int|null $cardExpirationYear |
||
243 | * @param string|null $groupId |
||
244 | * |
||
245 | * @return Builder |
||
246 | */ |
||
247 | public static function payoutEvent( |
||
292 | |||
293 | /** |
||
294 | * Returns builder for transaction request |
||
295 | * |
||
296 | * @param string $sequenceId |
||
297 | * @param string $userId |
||
298 | * @param string $transactionId |
||
299 | * @param int|float $transactionAmount |
||
300 | * @param string $transactionCurrency |
||
301 | * @param int|null $transactionTimestamp |
||
302 | * @param string|null $transactionMode |
||
303 | * @param string|null $transactionType |
||
304 | * @param int|null $cardBin |
||
305 | * @param string|null $cardId |
||
306 | * @param string|null $cardLast4 |
||
307 | * @param int|null $expirationMonth |
||
308 | * @param int|null $expirationYear |
||
309 | * @param int|null $age |
||
310 | * @param string|null $country |
||
311 | * @param string|null $email |
||
312 | * @param string|null $gender |
||
313 | * @param string|null $firstName |
||
314 | * @param string|null $lastName |
||
315 | * @param string|null $phone |
||
316 | * @param string|null $userName |
||
317 | * @param string|null $paymentAccountId |
||
318 | * @param string|null $paymentMethod |
||
319 | * @param string|null $paymentMidName |
||
320 | * @param string|null $paymentSystem |
||
321 | * @param int|float|null $transactionAmountConverted |
||
322 | * @param string|null $transactionSource |
||
323 | * @param string|null $billingAddress |
||
324 | * @param string|null $billingCity |
||
325 | * @param string|null $billingCountry |
||
326 | * @param string|null $billingFirstName |
||
327 | * @param string|null $billingLastName |
||
328 | * @param string|null $billingFullName |
||
329 | * @param string|null $billingState |
||
330 | * @param string|null $billingZip |
||
331 | * @param string|null $productDescription |
||
332 | * @param string|null $productName |
||
333 | * @param int|float|null $productQuantity |
||
334 | * @param string|null $websiteUrl |
||
335 | * @param string|null $merchantIp |
||
336 | * @param string|null $affiliateId |
||
337 | * @param string|null $campaign |
||
338 | * @param string|null $merchantCountry |
||
339 | * @param string|null $mcc |
||
340 | * @param string|null $acquirerMerchantId |
||
341 | * @param string|null $groupId |
||
342 | * |
||
343 | * @return Builder |
||
344 | */ |
||
345 | public static function transactionEvent( |
||
444 | |||
445 | /** |
||
446 | * Returns builder for install request |
||
447 | * |
||
448 | * @param string $sequenceId |
||
449 | * @param string|null $userId |
||
450 | * @param int|null $installTimestamp |
||
451 | * @param string|null $country |
||
452 | * @param string|null $websiteUrl |
||
453 | * @param string|null $trafficSource |
||
454 | * @param string|null $affiliateId |
||
455 | * @param string|null $campaign |
||
456 | * @param string|null $groupId |
||
457 | * @return Builder |
||
458 | */ |
||
459 | public static function installEvent( |
||
481 | |||
482 | /** |
||
483 | * Returns builder for refund request |
||
484 | * |
||
485 | * @param string $sequenceId |
||
486 | * @param string $refundId |
||
487 | * @param int|float $refundAmount |
||
488 | * @param string $refundCurrency |
||
489 | * @param int|null $refundTimestamp |
||
490 | * @param int|float|null $refundAmountConverted |
||
491 | * @param string|null $refundSource |
||
492 | * @param string|null $refundType |
||
493 | * @param string|null $refundCode |
||
494 | * @param string|null $refundReason |
||
495 | * @param string|null $agentId |
||
496 | * @param string|null $refundMethod |
||
497 | * @param string|null $refundSystem |
||
498 | * @param string|null $refundMid |
||
499 | * @param string|null $email |
||
500 | * @param string|null $phone |
||
501 | * @param string|null $userId |
||
502 | * @param string|null $groupId |
||
503 | * |
||
504 | * @return Builder |
||
505 | */ |
||
506 | public static function refundEvent( |
||
547 | |||
548 | /** |
||
549 | * Returns builder for transfer request |
||
550 | * |
||
551 | * @param string $sequenceId |
||
552 | * @param string $eventId |
||
553 | * @param float $amount |
||
554 | * @param string $currency |
||
555 | * @param string $accountId |
||
556 | * @param string $secondAccountId |
||
557 | * @param string $accountSystem |
||
558 | * @param string $userId |
||
559 | * @param string|null $method |
||
560 | * @param int|null $eventTimestamp |
||
561 | * @param float|null $amountConverted |
||
562 | * @param string|null $email |
||
563 | * @param string|null $phone |
||
564 | * @param int|null $birthDate |
||
565 | * @param string|null $firstname |
||
566 | * @param string|null $lastname |
||
567 | * @param string|null $fullname |
||
568 | * @param string|null $state |
||
569 | * @param string|null $city |
||
570 | * @param string|null $address |
||
571 | * @param string|null $zip |
||
572 | * @param string|null $gender |
||
573 | * @param string|null $country |
||
574 | * @param string|null $operation |
||
575 | * @param string|null $secondEmail |
||
576 | * @param string|null $secondPhone |
||
577 | * @param int|null $secondBirthDate |
||
578 | * @param string|null $secondFirstname |
||
579 | * @param string|null $secondLastname |
||
580 | * @param string|null $secondFullname |
||
581 | * @param string|null $secondState |
||
582 | * @param string|null $secondCity |
||
583 | * @param string|null $secondAddress |
||
584 | * @param string|null $secondZip |
||
585 | * @param string|null $secondGender |
||
586 | * @param string|null $secondCountry |
||
587 | * @param string|null $productDescription |
||
588 | * @param string|null $productName |
||
589 | * @param int|float|null $productQuantity |
||
590 | * @param string|null $iban |
||
591 | * @param string|null $secondIban |
||
592 | * @param string|null $bic |
||
593 | * @param string|null $source |
||
594 | * @param string|null $groupId |
||
595 | * |
||
596 | * @return Builder |
||
597 | */ |
||
598 | public static function transferEvent( |
||
705 | |||
706 | /** |
||
707 | * Returns builder for kyc_profile request |
||
708 | * |
||
709 | * @param string $sequenceId |
||
710 | * @param string $eventId |
||
711 | * @param string $userId |
||
712 | * @param int|null $eventTimestamp |
||
713 | * @param string|null $groupId |
||
714 | * @param string|null $status |
||
715 | * @param string|null $code |
||
716 | * @param string|null $reason |
||
717 | * @param string|null $providerResult |
||
718 | * @param string|null $providerCode |
||
719 | * @param string|null $providerReason |
||
720 | * @param string|null $profileId |
||
721 | * @param string|null $profileType |
||
722 | * @param string|null $profileSubType |
||
723 | * @param string|null $firstName |
||
724 | * @param string|null $lastName |
||
725 | * @param string|null $fullName |
||
726 | * @param string|null $industry |
||
727 | * @param string|null $websiteUrl |
||
728 | * @param string|null $description |
||
729 | * @param int|null $birthDate |
||
730 | * @param int|null $regDate |
||
731 | * @param string|null $regNumber |
||
732 | * @param string|null $vatNumber |
||
733 | * @param string|null $email |
||
734 | * @param bool|null $emailConfirmed |
||
735 | * @param string|null $phone |
||
736 | * @param bool|null $phoneConfirmed |
||
737 | * @param string|null $country |
||
738 | * @param string|null $state |
||
739 | * @param string|null $city |
||
740 | * @param string|null $address |
||
741 | * @param string|null $zip |
||
742 | * @param string|null $secondCountry |
||
743 | * @param string|null $secondState |
||
744 | * @param string|null $secondCity |
||
745 | * @param string|null $secondAddress |
||
746 | * @param string|null $secondZip |
||
747 | * @param string|null $providerId |
||
748 | * @param string|null $contactEmail |
||
749 | * @param string|null $contactPhone |
||
750 | * @param string|null $walletType |
||
751 | * @param string|null $nationality |
||
752 | * @param bool|null $finalBeneficiary |
||
753 | * @param string|null $employmentStatus |
||
754 | * @param string|null $sourceOfFunds |
||
755 | * @param int|null $issueDate |
||
756 | * @param int|null $expiryDate |
||
757 | * @param string|null $gender |
||
758 | * @return Builder |
||
759 | */ |
||
760 | public static function kycProfileEvent( |
||
877 | |||
878 | /** |
||
879 | * Returns builder for kyc_submit request |
||
880 | * |
||
881 | * @param string $sequenceId |
||
882 | * @param string $eventId |
||
883 | * @param string $userId |
||
884 | * @param int|null $eventTimestamp |
||
885 | * @param string|null $groupId |
||
886 | * @param string|null $status |
||
887 | * @param string|null $code |
||
888 | * @param string|null $reason |
||
889 | * @param string|null $providerResult |
||
890 | * @param string|null $providerCode |
||
891 | * @param string|null $providerReason |
||
892 | * |
||
893 | * @return Builder |
||
894 | */ |
||
895 | public static function kycSubmitEvent( |
||
929 | |||
930 | /** |
||
931 | * Returns builder for kyc_start request |
||
932 | * |
||
933 | * @param string $sequenceId |
||
934 | * @param string $eventId |
||
935 | * @param string $userMerchantId |
||
936 | * @param string $verificationMode |
||
937 | * @param string $verificationSource |
||
938 | * @param bool $consent |
||
939 | * @param null|int $eventTimestamp |
||
940 | * @param bool|null $allowNaOcrInputs |
||
941 | * @param bool|null $declineOnSingleStep |
||
942 | * @param bool|null $backsideProof |
||
943 | * @param string|null $groupId |
||
944 | * @param string|null $country |
||
945 | * @param string|null $kycLanguage |
||
946 | * @param string|null $redirectUrl |
||
947 | * @param string|null $email |
||
948 | * @param string|null $firstName |
||
949 | * @param string|null $lastName |
||
950 | * @param string|null $profileId |
||
951 | * @param string|null $phone |
||
952 | * @param string|null $birthDate |
||
953 | * @param string|null $regNumber |
||
954 | * @param int|null $issueDate |
||
955 | * @param int|null $expiryDate |
||
956 | * @param int|null $numberOfDocuments |
||
957 | * @return Builder |
||
958 | */ |
||
959 | public static function kycStartEvent( |
||
1060 | |||
1061 | /** |
||
1062 | * Returns builder for kyc_proof request |
||
1063 | * |
||
1064 | * @param int|null $kycStartId |
||
1065 | */ |
||
1066 | public static function kycProofEvent($kycStartId = null) |
||
1076 | |||
1077 | /** |
||
1078 | * Returns builder for order_item request |
||
1079 | * |
||
1080 | * @param string $sequenceId |
||
1081 | * @param float $amount |
||
1082 | * @param string $currency |
||
1083 | * @param string $eventId |
||
1084 | * @param int $eventTimestamp |
||
1085 | * @param string $orderType |
||
1086 | * @param string|null $transactionId |
||
1087 | * @param string|null $groupId |
||
1088 | * @param string|null $affiliateId |
||
1089 | * @param float|null $amountConverted |
||
1090 | * @param string|null $campaign |
||
1091 | * @param string|null $carrier |
||
1092 | * @param string|null $carrierShippingId |
||
1093 | * @param string|null $carrierUrl |
||
1094 | * @param string|null $carrierPhone |
||
1095 | * @param int|null $couponStartDate |
||
1096 | * @param int|null $couponEndDate |
||
1097 | * @param string|null $couponId |
||
1098 | * @param string|null $couponName |
||
1099 | * @param string|null $customerComment |
||
1100 | * @param int|null $deliveryEstimate |
||
1101 | * @param string|null $email |
||
1102 | * @param string|null $firstName |
||
1103 | * @param string|null $lastName |
||
1104 | * @param string|null $phone |
||
1105 | * @param string|null $productDescription |
||
1106 | * @param string|null $productName |
||
1107 | * @param int|null $productQuantity |
||
1108 | * @param string|null $shippingAddress |
||
1109 | * @param string|null $shippingCity |
||
1110 | * @param string|null $shippingCountry |
||
1111 | * @param string|null $shippingCurrency |
||
1112 | * @param float|null $shippingFee |
||
1113 | * @param float|null $shippingFeeConverted |
||
1114 | * @param string|null $shippingState |
||
1115 | * @param string|null $shippingZip |
||
1116 | * @param string|null $socialType |
||
1117 | * @param string|null $source |
||
1118 | * @param string|null $sourceFeeCurrency |
||
1119 | * @param float|null $sourceFee |
||
1120 | * @param float|null $sourceFeeConverted |
||
1121 | * @param string|null $taxCurrency |
||
1122 | * @param float|null $taxFee |
||
1123 | * @param float|null $taxFeeConverted |
||
1124 | * @param string|null $userMerchantId |
||
1125 | * @param string|null $websiteUrl |
||
1126 | * @param string|null $productUrl |
||
1127 | * @param string|null $productImageUrl |
||
1128 | * @return Builder |
||
1129 | */ |
||
1130 | public static function orderItemEvent( |
||
1249 | |||
1250 | /** |
||
1251 | * Returns builder for order_submit request |
||
1252 | * |
||
1253 | * @param string $sequenceId |
||
1254 | * @param float $amount |
||
1255 | * @param string $currency |
||
1256 | * @param string $eventId |
||
1257 | * @param int $eventTimestamp |
||
1258 | * @param int $itemsQuantity |
||
1259 | * @param string|null $transactionId |
||
1260 | * @param string|null $groupId |
||
1261 | * @param string|null $affiliateId |
||
1262 | * @param float|null $amountConverted |
||
1263 | * @param string|null $campaign |
||
1264 | * @param string|null $carrier |
||
1265 | * @param string|null $carrierShippingId |
||
1266 | * @param string|null $carrierUrl |
||
1267 | * @param string|null $carrierPhone |
||
1268 | * @param int|null $couponStartDate |
||
1269 | * @param int|null $couponEndDate |
||
1270 | * @param string|null $couponId |
||
1271 | * @param string|null $couponName |
||
1272 | * @param string|null $customerComment |
||
1273 | * @param int|null $deliveryEstimate |
||
1274 | * @param string|null $email |
||
1275 | * @param string|null $firstName |
||
1276 | * @param string|null $lastName |
||
1277 | * @param string|null $phone |
||
1278 | * @param string|null $shippingAddress |
||
1279 | * @param string|null $shippingCity |
||
1280 | * @param string|null $shippingCountry |
||
1281 | * @param string|null $shippingCurrency |
||
1282 | * @param float|null $shippingFee |
||
1283 | * @param float|null $shippingFeeConverted |
||
1284 | * @param string|null $shippingState |
||
1285 | * @param string|null $shippingZip |
||
1286 | * @param string|null $socialType |
||
1287 | * @param string|null $source |
||
1288 | * @param string|null $sourceFeeCurrency |
||
1289 | * @param float|null $sourceFee |
||
1290 | * @param float|null $sourceFeeConverted |
||
1291 | * @param string|null $taxCurrency |
||
1292 | * @param float|null $taxFee |
||
1293 | * @param float|null $taxFeeConverted |
||
1294 | * @param string|null $userMerchantId |
||
1295 | * @param string|null $websiteUrl |
||
1296 | * @param string|null $productUrl |
||
1297 | * @param string|null $productImageUrl |
||
1298 | * @return Builder |
||
1299 | */ |
||
1300 | public static function orderSubmitEvent( |
||
1411 | |||
1412 | /** |
||
1413 | * Returns builder for postback request |
||
1414 | * |
||
1415 | * @param int|null $requestId |
||
1416 | * @param string|null $transactionId |
||
1417 | * @param string|null $transactionStatus |
||
1418 | * @param string|null $code |
||
1419 | * @param string|null $reason |
||
1420 | * @param string|null $secure3d |
||
1421 | * @param string|null $avsResult |
||
1422 | * @param string|null $cvvResult |
||
1423 | * @param string|null $pspCode |
||
1424 | * @param string|null $pspReason |
||
1425 | * @param string|null $arn |
||
1426 | * @param string|null $paymentAccountId |
||
1427 | * @return Builder |
||
1428 | */ |
||
1429 | public static function postBackEvent( |
||
1459 | |||
1460 | /** |
||
1461 | * Builder constructor. |
||
1462 | * |
||
1463 | * @param string $envelopeType |
||
1464 | * @param string $sequenceId |
||
1465 | */ |
||
1466 | public function __construct($envelopeType, $sequenceId) |
||
1478 | |||
1479 | /** |
||
1480 | * Returns built envelope |
||
1481 | * |
||
1482 | * @return EnvelopeInterface |
||
1483 | */ |
||
1484 | public function build() |
||
1495 | |||
1496 | /** |
||
1497 | * Replaces value in internal array if provided value not empty |
||
1498 | * |
||
1499 | * @param string $key |
||
1500 | * @param string|int|float|bool|null $value |
||
1501 | */ |
||
1502 | private function replace($key, $value) |
||
1508 | |||
1509 | /** |
||
1510 | * Adds identity node |
||
1511 | * |
||
1512 | * @param IdentityNodeInterface $identity |
||
1513 | * |
||
1514 | * @return $this |
||
1515 | */ |
||
1516 | public function addIdentity(IdentityNodeInterface $identity) |
||
1521 | |||
1522 | /** |
||
1523 | * Provides website URL to envelope |
||
1524 | * |
||
1525 | * @param string|null $websiteUrl |
||
1526 | * @param string|null $traffic_source |
||
1527 | * @param string|null $affiliate_id |
||
1528 | * @param string|null $campaign |
||
1529 | * |
||
1530 | * @return $this |
||
1531 | */ |
||
1532 | public function addWebsiteData($websiteUrl = null, $traffic_source = null, $affiliate_id = null, $campaign = null) |
||
1553 | |||
1554 | /** |
||
1555 | * Provides IP information for envelope |
||
1556 | * |
||
1557 | * @param string|null $ip User's IP address |
||
1558 | * @param string|null $realIp User's real IP address, if available |
||
1559 | * @param string|null $merchantIp Your website's IP address |
||
1560 | * |
||
1561 | * @return $this |
||
1562 | */ |
||
1563 | public function addIpData($ip = '', $realIp = '', $merchantIp = '') |
||
1581 | |||
1582 | /** |
||
1583 | * Provides browser information for envelope |
||
1584 | * |
||
1585 | * @param string|null $deviceFingerprint |
||
1586 | * @param string|null $userAgent |
||
1587 | * @param string|null $cpuClass |
||
1588 | * @param string|null $screenOrientation |
||
1589 | * @param string|null $screenResolution |
||
1590 | * @param string|null $os |
||
1591 | * @param int|null $timezoneOffset |
||
1592 | * @param string|null $languages |
||
1593 | * @param string|null $language |
||
1594 | * @param string|null $languageBrowser |
||
1595 | * @param string|null $languageUser |
||
1596 | * @param string|null $languageSystem |
||
1597 | * @param bool|null $cookieEnabled |
||
1598 | * @param bool|null $doNotTrack |
||
1599 | * @param bool|null $ajaxValidation |
||
1600 | * @param string|null $deviceId |
||
1601 | * @param string|null $ipList |
||
1602 | * @param string|null $plugins |
||
1603 | * @param string|null $refererUrl |
||
1604 | * @param string|null $originUrl |
||
1605 | * @param string|null $clientResolution |
||
1606 | * @return $this |
||
1607 | */ |
||
1608 | public function addBrowserData( |
||
1719 | |||
1720 | /** |
||
1721 | * Provides user data for envelope |
||
1722 | * |
||
1723 | * @param string|null $email |
||
1724 | * @param string|null $userId |
||
1725 | * @param string|null $phone |
||
1726 | * @param string|null $userName |
||
1727 | * @param string|null $firstName |
||
1728 | * @param string|null $lastName |
||
1729 | * @param string|null $gender |
||
1730 | * @param int|null $age |
||
1731 | * @param string|null $country |
||
1732 | * @param string|null $socialType |
||
1733 | * @param int|null $registrationTimestamp |
||
1734 | * @param int|null $loginTimeStamp |
||
1735 | * @param int|null $confirmationTimeStamp |
||
1736 | * @param bool|null $emailConfirmed |
||
1737 | * @param bool|null $phoneConfirmed |
||
1738 | * @param bool|null $loginFailed |
||
1739 | * @param int|null $birthDate |
||
1740 | * @param string|null $fullname |
||
1741 | * @param string|null $state |
||
1742 | * @param string|null $city |
||
1743 | * @param string|null $address |
||
1744 | * @param string|null $zip |
||
1745 | * @param string|null $password |
||
1746 | * |
||
1747 | * @return $this |
||
1748 | */ |
||
1749 | public function addUserData( |
||
1849 | |||
1850 | /** |
||
1851 | * Provides user data for envelope |
||
1852 | * |
||
1853 | * @param string|null $email |
||
1854 | * @param string|null $userId |
||
1855 | * @param string|null $phone |
||
1856 | * @param string|null $firstName |
||
1857 | * @param string|null $lastName |
||
1858 | * @param string|null $country |
||
1859 | * |
||
1860 | * @return $this |
||
1861 | */ |
||
1862 | public function addShortUserData( |
||
1901 | |||
1902 | /** |
||
1903 | * Provides credit card data to envelope |
||
1904 | * |
||
1905 | * @param string|null $transactionId |
||
1906 | * @param string|null $transactionSource |
||
1907 | * @param string|null $transactionType |
||
1908 | * @param string|null $transactionMode |
||
1909 | * @param string|null $transactionTimestamp |
||
1910 | * @param string|null $transactionCurrency |
||
1911 | * @param string|null $transactionAmount |
||
1912 | * @param float|null $amountConverted |
||
1913 | * @param string|null $paymentMethod |
||
1914 | * @param string|null $paymentSystem |
||
1915 | * @param string|null $paymentMidName |
||
1916 | * @param string|null $paymentAccountId |
||
1917 | * @param string|null $merchantCountry |
||
1918 | * @param string|null $mcc |
||
1919 | * @param string|null $acquirerMerchantId |
||
1920 | * @return $this |
||
1921 | */ |
||
1922 | public function addCCTransactionData( |
||
2003 | |||
2004 | /** |
||
2005 | * Provides Card data to envelope |
||
2006 | * |
||
2007 | * @param string|null $cardId |
||
2008 | * @param int|null $cardBin |
||
2009 | * @param string|null $cardLast4 |
||
2010 | * @param int|null $expirationMonth |
||
2011 | * @param int|null $expirationYear |
||
2012 | * |
||
2013 | * @return $this |
||
2014 | */ |
||
2015 | public function addCardData( |
||
2046 | |||
2047 | /** |
||
2048 | * Provides billing data to envelope |
||
2049 | * |
||
2050 | * @param string|null $billingFirstName |
||
2051 | * @param string|null $billingLastName |
||
2052 | * @param string|null $billingFullName |
||
2053 | * @param string|null $billingCountry |
||
2054 | * @param string|null $billingState |
||
2055 | * @param string|null $billingCity |
||
2056 | * @param string|null $billingAddress |
||
2057 | * @param string|null $billingZip |
||
2058 | * |
||
2059 | * @return $this |
||
2060 | */ |
||
2061 | public function addBillingData( |
||
2107 | |||
2108 | /** |
||
2109 | * Provides product information to envelope |
||
2110 | * |
||
2111 | * @param float|null $productQuantity |
||
2112 | * @param string|null $productName |
||
2113 | * @param string|null $productDescription |
||
2114 | * |
||
2115 | * @return $this |
||
2116 | */ |
||
2117 | public function addProductData( |
||
2138 | |||
2139 | /** |
||
2140 | * Provides payout information to envelope |
||
2141 | * |
||
2142 | * @param string $payoutId |
||
2143 | * @param int $payoutTimestamp |
||
2144 | * @param int|float $payoutAmount |
||
2145 | * @param string $payoutCurrency |
||
2146 | * @param string|null $payoutCardId |
||
2147 | * @param string|null $payoutAccountId |
||
2148 | * @param string|null $payoutMethod |
||
2149 | * @param string|null $payoutSystem |
||
2150 | * @param string|null $payoutMid |
||
2151 | * @param int|float|null $amountConverted |
||
2152 | * @param int|null $payoutCardBin |
||
2153 | * @param string|null $payoutCardLast4 |
||
2154 | * @param int|null $payoutExpirationMonth |
||
2155 | * @param int|null $payoutExpirationYear |
||
2156 | * |
||
2157 | * @return $this |
||
2158 | */ |
||
2159 | public function addPayoutData( |
||
2235 | |||
2236 | /** |
||
2237 | * Provides install information to envelope |
||
2238 | * |
||
2239 | * @param int $installTimestamp |
||
2240 | * |
||
2241 | * @return $this |
||
2242 | */ |
||
2243 | public function addInstallData($installTimestamp) |
||
2253 | |||
2254 | /** |
||
2255 | * Provides refund information to envelope |
||
2256 | * |
||
2257 | * @param string $refundId |
||
2258 | * @param int|float $refundAmount |
||
2259 | * @param string $refundCurrency |
||
2260 | * @param int|null $refundTimestamp |
||
2261 | * @param int|float|null $refundAmountConverted |
||
2262 | * @param string|null $refundSource |
||
2263 | * @param string|null $refundType |
||
2264 | * @param string|null $refundCode |
||
2265 | * @param string|null $refundReason |
||
2266 | * @param string|null $agentId |
||
2267 | * @param string|null $refundMethod |
||
2268 | * @param string|null $refundSystem |
||
2269 | * @param string|null $refundMid |
||
2270 | * |
||
2271 | * @return $this |
||
2272 | */ |
||
2273 | public function addRefundData( |
||
2344 | |||
2345 | /** |
||
2346 | * Provides transfer information to envelope |
||
2347 | * |
||
2348 | * @param string $eventId |
||
2349 | * @param int $eventTimestamp |
||
2350 | * @param float $amount |
||
2351 | * @param string $currency |
||
2352 | * @param string $accountId |
||
2353 | * @param string $secondAccountId |
||
2354 | * @param string $accountSystem |
||
2355 | * @param float|null $amountConverted |
||
2356 | * @param string|null $method |
||
2357 | * @param string|null $operation |
||
2358 | * @param string|null $secondEmail |
||
2359 | * @param string|null $secondPhone |
||
2360 | * @param string|int $secondBirthDate |
||
2361 | * @param string|null $secondFirstname |
||
2362 | * @param string|null $secondLastname |
||
2363 | * @param string|null $secondFullname |
||
2364 | * @param string|null $secondState |
||
2365 | * @param string|null $secondCity |
||
2366 | * @param string|null $secondAddress |
||
2367 | * @param string|null $secondZip |
||
2368 | * @param string|null $secondGender |
||
2369 | * @param string|null $secondCountry |
||
2370 | * @param string|null $iban |
||
2371 | * @param string|null $secondIban |
||
2372 | * @param string|null $bic |
||
2373 | * @param string|null $source |
||
2374 | * |
||
2375 | * @return $this |
||
2376 | */ |
||
2377 | public function addTransferData( |
||
2513 | |||
2514 | /** |
||
2515 | * Provides kyc information to envelope |
||
2516 | * |
||
2517 | * @param string $eventId |
||
2518 | * @param int $eventTimestamp |
||
2519 | * @param string|null $groupId |
||
2520 | * @param string|null $status |
||
2521 | * @param string|null $code |
||
2522 | * @param string|null $reason |
||
2523 | * @param string|null $providerResult |
||
2524 | * @param string|null $providerCode |
||
2525 | * @param string|null $providerReason |
||
2526 | * @param string|null $profileId |
||
2527 | * @param string|null $profileType |
||
2528 | * @param string|null $profileSubType |
||
2529 | * @param string|null $industry |
||
2530 | * @param string|null $description |
||
2531 | * @param int|null $regDate |
||
2532 | * @param string|null $regNumber |
||
2533 | * @param string|null $vatNumber |
||
2534 | * @param string|null $secondCountry |
||
2535 | * @param string|null $secondState |
||
2536 | * @param string|null $secondCity |
||
2537 | * @param string|null $secondAddress |
||
2538 | * @param string|null $secondZip |
||
2539 | * @param string|null $providerId |
||
2540 | * @param string|null $contactEmail |
||
2541 | * @param string|null $contactPhone |
||
2542 | * @param string|null $walletType |
||
2543 | * @param string|null $nationality |
||
2544 | * @param bool|null $finalBeneficiary |
||
2545 | * @param string|null $employmentStatus |
||
2546 | * @param string|null $sourceOfFunds |
||
2547 | * @param int|null $issueDate |
||
2548 | * @param int|null $expiryDate |
||
2549 | * @param string|null $verificationMode |
||
2550 | * @param string|null $verificationSource |
||
2551 | * @param bool|null $consent |
||
2552 | * @param bool|null $allowNaOcrInputs |
||
2553 | * @param bool|null $declineOnSingleStep |
||
2554 | * @param bool|null $backsideProof |
||
2555 | * @param string|null $kycLanguage |
||
2556 | * @param string|null $redirectUrl |
||
2557 | * @param int|null $numberOfDocuments |
||
2558 | * @return $this |
||
2559 | */ |
||
2560 | public function addKycData( |
||
2561 | $eventId, |
||
2562 | $eventTimestamp, |
||
2563 | $groupId = null, |
||
2564 | $status = null, |
||
2565 | $code = null, |
||
2566 | $reason = null, |
||
2567 | $providerResult = null, |
||
2568 | $providerCode = null, |
||
2569 | $providerReason = null, |
||
2570 | $profileId = null, |
||
2571 | $profileType = null, |
||
2572 | $profileSubType = null, |
||
2573 | $industry = null, |
||
2574 | $description = null, |
||
2575 | $regDate = null, |
||
2576 | $regNumber = null, |
||
2577 | $vatNumber = null, |
||
2578 | $secondCountry = null, |
||
2579 | $secondState = null, |
||
2580 | $secondCity = null, |
||
2581 | $secondAddress = null, |
||
2582 | $secondZip = null, |
||
2583 | $providerId = null, |
||
2584 | $contactEmail = null, |
||
2585 | $contactPhone = null, |
||
2586 | $walletType = null, |
||
2587 | $nationality = null, |
||
2588 | $finalBeneficiary = null, |
||
2589 | $employmentStatus = null, |
||
2590 | $sourceOfFunds = null, |
||
2591 | $issueDate = null, |
||
2592 | $expiryDate = null, |
||
2593 | $verificationMode = null, |
||
2594 | $verificationSource = null, |
||
2595 | $consent = null, |
||
2596 | $allowNaOcrInputs = null, |
||
2597 | $declineOnSingleStep = null, |
||
2598 | $backsideProof = null, |
||
2599 | $kycLanguage = null, |
||
2600 | $redirectUrl = null, |
||
2601 | $numberOfDocuments = null |
||
2602 | ) { |
||
2603 | if (!is_string($eventId)) { |
||
2604 | throw new \InvalidArgumentException('Event ID must be string'); |
||
2605 | } |
||
2606 | if (!is_int($eventTimestamp)) { |
||
2607 | throw new \InvalidArgumentException('Event timestamp must be int'); |
||
2608 | } |
||
2609 | if ($groupId !== null && !is_string($groupId)) { |
||
2610 | throw new \InvalidArgumentException('Group id must be string'); |
||
2611 | } |
||
2612 | if ($status !== null && !is_string($status)) { |
||
2613 | throw new \InvalidArgumentException('Status must be string'); |
||
2614 | } |
||
2615 | if ($code !== null && !is_string($code)) { |
||
2616 | throw new \InvalidArgumentException('Code must be string'); |
||
2617 | } |
||
2618 | if ($reason !== null && !is_string($reason)) { |
||
2619 | throw new \InvalidArgumentException('Reason must be string'); |
||
2620 | } |
||
2621 | if ($providerResult !== null && !is_string($providerResult)) { |
||
2622 | throw new \InvalidArgumentException('Provider result must be string'); |
||
2623 | } |
||
2624 | if ($providerCode !== null && !is_string($providerCode)) { |
||
2625 | throw new \InvalidArgumentException('Provider code must be string'); |
||
2626 | } |
||
2627 | if ($providerReason !== null && !is_string($providerReason)) { |
||
2628 | throw new \InvalidArgumentException('Provider reason must be string'); |
||
2629 | } |
||
2630 | if ($profileId !== null && !is_string($profileId)) { |
||
2631 | throw new \InvalidArgumentException('Profile id must be string'); |
||
2632 | } |
||
2633 | if ($profileType !== null && !is_string($profileType)) { |
||
2634 | throw new \InvalidArgumentException('Profile type must be string'); |
||
2635 | } |
||
2636 | if ($profileSubType !== null && !is_string($profileSubType)) { |
||
2637 | throw new \InvalidArgumentException('Profile sub type must be string'); |
||
2638 | } |
||
2639 | if ($industry !== null && !is_string($industry)) { |
||
2640 | throw new \InvalidArgumentException('Industry must be string'); |
||
2641 | } |
||
2642 | if ($description !== null && !is_string($description)) { |
||
2643 | throw new \InvalidArgumentException('Description must be string'); |
||
2644 | } |
||
2645 | if ($regDate !== null && !is_int($regDate)) { |
||
2646 | throw new \InvalidArgumentException('Reg date must be integer'); |
||
2647 | } |
||
2648 | if ($regNumber !== null && !is_string($regNumber)) { |
||
2649 | throw new \InvalidArgumentException('Reg number must be string'); |
||
2650 | } |
||
2651 | if ($vatNumber !== null && !is_string($vatNumber)) { |
||
2652 | throw new \InvalidArgumentException('Vat number must be string'); |
||
2653 | } |
||
2654 | if ($secondCountry !== null && !is_string($secondCountry)) { |
||
2655 | throw new \InvalidArgumentException('Secondary country must be string'); |
||
2656 | } |
||
2657 | if ($secondState !== null && !is_string($secondState)) { |
||
2658 | throw new \InvalidArgumentException('Second state must be string'); |
||
2659 | } |
||
2660 | if ($secondCity !== null && !is_string($secondCity)) { |
||
2661 | throw new \InvalidArgumentException('Second city must be string'); |
||
2662 | } |
||
2663 | if ($secondAddress !== null && !is_string($secondAddress)) { |
||
2664 | throw new \InvalidArgumentException('Second address must be string'); |
||
2665 | } |
||
2666 | if ($secondZip !== null && !is_string($secondZip)) { |
||
2667 | throw new \InvalidArgumentException('Second zip must be string'); |
||
2668 | } |
||
2669 | if ($providerId !== null && !is_string($providerId)) { |
||
2670 | throw new \InvalidArgumentException('Provider id must be string'); |
||
2671 | } |
||
2672 | if ($contactEmail !== null && !is_string($contactEmail)) { |
||
2673 | throw new \InvalidArgumentException('Contact email must be string'); |
||
2674 | } |
||
2675 | if ($contactPhone !== null && !is_string($contactPhone)) { |
||
2676 | throw new \InvalidArgumentException('Contact phone must be string'); |
||
2677 | } |
||
2678 | if ($walletType !== null && !is_string($walletType)) { |
||
2679 | throw new \InvalidArgumentException('Wallet type must be string'); |
||
2680 | } |
||
2681 | if ($nationality !== null && !is_string($nationality)) { |
||
2682 | throw new \InvalidArgumentException('Nationality must be string'); |
||
2683 | } |
||
2684 | if ($finalBeneficiary !== null && !is_bool($finalBeneficiary)) { |
||
2685 | throw new \InvalidArgumentException('Final beneficiary must be boolean'); |
||
2686 | } |
||
2687 | if ($employmentStatus !== null && !is_string($employmentStatus)) { |
||
2688 | throw new \InvalidArgumentException('Employment status must be string'); |
||
2689 | } |
||
2690 | if ($sourceOfFunds !== null && !is_string($sourceOfFunds)) { |
||
2691 | throw new \InvalidArgumentException('Source of funds must be string'); |
||
2692 | } |
||
2693 | if ($issueDate !== null && !is_int($issueDate)) { |
||
2694 | throw new \InvalidArgumentException('Issue date must be integer'); |
||
2695 | } |
||
2696 | if ($expiryDate !== null && !is_int($expiryDate)) { |
||
2697 | throw new \InvalidArgumentException('Expiry date must be integer'); |
||
2698 | } |
||
2699 | if ($verificationMode !== null && !is_string($verificationMode)) { |
||
2700 | throw new \InvalidArgumentException('Verification mode must be string'); |
||
2701 | } |
||
2702 | if ($verificationSource !== null && !is_string($verificationSource)) { |
||
2703 | throw new \InvalidArgumentException('Verification source must be string'); |
||
2704 | } |
||
2705 | if ($consent !== null && !is_bool($consent)) { |
||
2706 | throw new \InvalidArgumentException('Consent must be boolean'); |
||
2707 | } |
||
2708 | if ($allowNaOcrInputs !== null && !is_bool($allowNaOcrInputs)) { |
||
2709 | throw new \InvalidArgumentException('Allow na ocr inputs must be boolean'); |
||
2710 | } |
||
2711 | if ($declineOnSingleStep !== null && !is_bool($declineOnSingleStep)) { |
||
2712 | throw new \InvalidArgumentException('Decline on single step must be boolean'); |
||
2713 | } |
||
2714 | if ($backsideProof !== null && !is_bool($backsideProof)) { |
||
2715 | throw new \InvalidArgumentException('Backside proof must be boolean'); |
||
2716 | } |
||
2717 | if ($kycLanguage !== null && !is_string($kycLanguage)) { |
||
2718 | throw new \InvalidArgumentException('Kyc language must be string'); |
||
2719 | } |
||
2720 | if ($redirectUrl !== null && !is_string($redirectUrl)) { |
||
2721 | throw new \InvalidArgumentException('Redirect url must be string'); |
||
2722 | } |
||
2723 | if ($numberOfDocuments !== null && !in_array($numberOfDocuments, [0, 1, 2])) { |
||
2724 | $numberOfDocuments = 1; //Default value |
||
2725 | //throw new \InvalidArgumentException('Incorrect value. Number Of Documents must contain 0, 1 or 2'); |
||
2726 | } |
||
2727 | |||
2728 | $this->replace('event_id', $eventId); |
||
2729 | $this->replace('event_timestamp', $eventTimestamp); |
||
2730 | $this->replace('group_id', $groupId); |
||
2731 | $this->replace('status', $status); |
||
2732 | $this->replace('code', $code); |
||
2733 | $this->replace('reason', $reason); |
||
2734 | $this->replace('provider_result', $providerResult); |
||
2735 | $this->replace('provider_code', $providerCode); |
||
2736 | $this->replace('provider_reason', $providerReason); |
||
2737 | $this->replace('profile_id', $profileId); |
||
2738 | $this->replace('profile_type', $profileType); |
||
2739 | $this->replace('profile_sub_type', $profileSubType); |
||
2740 | $this->replace('industry', $industry); |
||
2741 | $this->replace('description', $description); |
||
2742 | $this->replace('reg_date', $regDate); |
||
2743 | $this->replace('reg_number', $regNumber); |
||
2744 | $this->replace('vat_number', $vatNumber); |
||
2745 | $this->replace('second_country', $secondCountry); |
||
2746 | $this->replace('second_state', $secondState); |
||
2747 | $this->replace('second_city', $secondCity); |
||
2748 | $this->replace('second_address', $secondAddress); |
||
2749 | $this->replace('second_zip', $secondZip); |
||
2750 | $this->replace('provider_id', $providerId); |
||
2751 | $this->replace('contact_email', $contactEmail); |
||
2752 | $this->replace('contact_phone', $contactPhone); |
||
2753 | $this->replace('wallet_type', $walletType); |
||
2754 | $this->replace('nationality', $nationality); |
||
2755 | $this->replace('final_beneficiary', $finalBeneficiary); |
||
2756 | $this->replace('employment_status', $employmentStatus); |
||
2757 | $this->replace('source_of_funds', $sourceOfFunds); |
||
2758 | $this->replace('issue_date', $issueDate); |
||
2759 | $this->replace('expiry_date', $expiryDate); |
||
2760 | $this->replace('verification_mode', $verificationMode); |
||
2761 | $this->replace('verification_source', $verificationSource); |
||
2762 | $this->replace('consent', $consent); |
||
2763 | $this->replace('allow_na_ocr_inputs', $allowNaOcrInputs); |
||
2764 | $this->replace('decline_on_single_step', $declineOnSingleStep); |
||
2765 | $this->replace('backside_proof', $backsideProof); |
||
2766 | $this->replace('kyc_language', $kycLanguage); |
||
2767 | $this->replace('redirect_url', $redirectUrl); |
||
2768 | $this->replace('number_of_documents', $numberOfDocuments); |
||
2769 | |||
2770 | return $this; |
||
2771 | } |
||
2772 | |||
2773 | /** |
||
2774 | * Provides order information to envelope |
||
2775 | * |
||
2776 | * @param string $envelopeType |
||
2777 | * @param float $amount |
||
2778 | * @param string $currency |
||
2779 | * @param string $eventId |
||
2780 | * @param int $eventTimestamp |
||
2781 | * @param string|null $transactionId |
||
2782 | * @param string|null $groupId |
||
2783 | * @param int|null $itemsQuantity |
||
2784 | * @param string|null $orderType |
||
2785 | * @param float|null $amountConverted |
||
2786 | * @param string|null $campaign |
||
2787 | * @param string|null $carrier |
||
2788 | * @param string|null $carrierShippingId |
||
2789 | * @param string|null $carrierUrl |
||
2790 | * @param string|null $carrierPhone |
||
2791 | * @param int|null $couponStartDate |
||
2792 | * @param int|null $couponEndDate |
||
2793 | * @param string|null $couponId |
||
2794 | * @param string|null $couponName |
||
2795 | * @param string|null $customerComment |
||
2796 | * @param int|null $deliveryEstimate |
||
2797 | * @param string|null $shippingAddress |
||
2798 | * @param string|null $shippingCity |
||
2799 | * @param string|null $shippingCountry |
||
2800 | * @param string|null $shippingCurrency |
||
2801 | * @param float|null $shippingFee |
||
2802 | * @param float|null $shippingFeeConverted |
||
2803 | * @param string|null $shippingState |
||
2804 | * @param string|null $shippingZip |
||
2805 | * @param string|null $source |
||
2806 | * @param float|null $sourceFee |
||
2807 | * @param string|null $sourceFeeCurrency |
||
2808 | * @param float|null $sourceFeeConverted |
||
2809 | * @param string|null $taxCurrency |
||
2810 | * @param float|null $taxFee |
||
2811 | * @param float|null $taxFeeConverted |
||
2812 | * @param string|null $productUrl |
||
2813 | * @param string|null $productImageUrl |
||
2814 | * @return Builder |
||
2815 | */ |
||
2816 | public function addOrderData( |
||
3013 | |||
3014 | /** |
||
3015 | * Provides postback information to envelope |
||
3016 | * |
||
3017 | * @param int|null $requestId |
||
3018 | * @param string|null $transactionId |
||
3019 | * @param string|null $transactionStatus |
||
3020 | * @param string|null $code |
||
3021 | * @param string|null $reason |
||
3022 | * @param string|null $secure3d |
||
3023 | * @param string|null $avsResult |
||
3024 | * @param string|null $cvvResult |
||
3025 | * @param string|null $pspCode |
||
3026 | * @param string|null $pspReason |
||
3027 | * @param string|null $arn |
||
3028 | * @param string|null $paymentAccountId |
||
3029 | * @return $this |
||
3030 | */ |
||
3031 | public function addPostbackData( |
||
3100 | |||
3101 | /** |
||
3102 | * Adds custom data field to envelope |
||
3103 | * |
||
3104 | * @param string $name |
||
3105 | * @param string $value |
||
3106 | * |
||
3107 | * @return $this |
||
3108 | */ |
||
3109 | public function addCustomField($name, $value) |
||
3125 | |||
3126 | /** |
||
3127 | * Provides group id value to envelope |
||
3128 | * |
||
3129 | * @param string|null $groupId |
||
3130 | * @return $this |
||
3131 | */ |
||
3132 | public function addGroupId($groupId = null) |
||
3141 | |||
3142 | /** |
||
3143 | * Provides kuc proof value to envelope |
||
3144 | * |
||
3145 | * @param int|null $kycStartId |
||
3146 | * @return $this |
||
3147 | */ |
||
3148 | public function addKycProofData($kycStartId = null) |
||
3158 | |||
3159 | |||
3160 | } |
||
3161 |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.