PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.20.0
GiveWP – Donation Plugin and Fundraising Platform v2.20.0
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / PaymentGateways / DataTransferObjects / FormData.php
give / src / PaymentGateways / DataTransferObjects Last commit date
FormData.php 4 years ago GatewayPaymentData.php 4 years ago GatewaySubscriptionData.php 4 years ago GiveInsertPaymentData.php 4 years ago SubscriptionData.php 4 years ago
FormData.php
242 lines
1 <?php
2
3 namespace Give\PaymentGateways\DataTransferObjects;
4
5 use Exception;
6 use Give\Donations\Models\Donation;
7 use Give\Donations\Properties\BillingAddress;
8 use Give\Donations\ValueObjects\DonationStatus;
9 use Give\ValueObjects\Address;
10 use Give\ValueObjects\CardInfo;
11 use Give\ValueObjects\DonorInfo;
12
13 /**
14 * Class FormData
15 * @since 2.18.0
16 */
17 class FormData
18 {
19 /**
20 * @var float
21 */
22 public $price;
23 /**
24 * @var string
25 */
26 public $formTitle;
27 /**
28 * @var string
29 */
30 public $date;
31 /**
32 * @var string
33 */
34 public $purchaseKey;
35 /**
36 * @var string
37 */
38 public $currency;
39 /**
40 * @var array
41 */
42 public $userInfo;
43 /**
44 * @var string
45 */
46 public $paymentGateway;
47 /**
48 * @var string
49 */
50 public $gatewayNonce;
51 /**
52 * @var array
53 */
54 public $postData;
55 /**
56 * @var CardInfo
57 */
58 public $cardInfo;
59 /**
60 * @var int
61 */
62 public $formId;
63 /**
64 * @var string
65 */
66 public $priceId;
67 /**
68 * @var string
69 */
70 public $formIdPrefix;
71 /**
72 * @var string
73 */
74 public $currentUrl;
75 /**
76 * @var string
77 */
78 public $formMinimum;
79 /**
80 * @var string
81 */
82 public $formMaximum;
83 /**
84 * @var string
85 */
86 public $formHash;
87 /**
88 * @var string
89 */
90 public $amount;
91 /**
92 * @var string
93 */
94 public $userId;
95 /**
96 * @var Address
97 */
98 public $billingAddress;
99 /**
100 * @var DonorInfo
101 */
102 public $donorInfo;
103 /**
104 * This property is only for internal use. It will be removed in the future.
105 * We will use this property to gracefully deprecate action and filter which exist in existing donation flow.
106 *
107 * @deprecated
108 * @var array
109 */
110 public $legacyDonationData;
111
112 /**
113 * Convert data from request into DTO
114 *
115 * @since 2.18.0
116 *
117 * @return self
118 */
119 public static function fromRequest(array $request)
120 {
121 $self = new static();
122
123 $self->legacyDonationData = $request;
124 $self->price = $request['price'];
125 $self->date = $request['date'];
126 $self->purchaseKey = $request['purchase_key'];
127 $self->currency = give_get_currency($request['post_data']['give-form-id'], $request);
128 $self->userInfo = $request['user_info'];
129 $self->postData = $request['post_data'];
130 $self->formTitle = $request['post_data']['give-form-title'];
131 $self->formId = (int)$request['post_data']['give-form-id'];
132 $self->priceId = isset($request['post_data']['give-price-id']) ? $request['post_data']['give-price-id'] : '';
133 $self->formIdPrefix = $request['post_data']['give-form-id-prefix'];
134 $self->currentUrl = $request['post_data']['give-current-url'];
135 $self->formMinimum = $request['post_data']['give-form-minimum'];
136 $self->formMaximum = $request['post_data']['give-form-maximum'];
137 $self->formHash = $request['post_data']['give-form-hash'];
138 $self->amount = $request['post_data']['give-amount'];
139 $self->paymentGateway = $request['post_data']['give-gateway'];
140 $self->gatewayNonce = $request['gateway_nonce'];
141 $self->donorInfo = DonorInfo::fromArray([
142 'wpUserId' => $request['user_info']['id'],
143 'firstName' => $request['user_info']['first_name'],
144 'lastName' => $request['user_info']['last_name'],
145 'email' => $request['user_info']['email'],
146 'honorific' => ! empty($request['user_info']['title']) ? $request['user_info']['title'] : '',
147 'address' => $request['user_info']['address']
148 ]);
149 $self->cardInfo = CardInfo::fromArray([
150 'name' => $request['card_info']['card_name'],
151 'cvc' => $request['card_info']['card_cvc'],
152 'expMonth' => $request['card_info']['card_exp_month'],
153 'expYear' => $request['card_info']['card_exp_year'],
154 'number' => $request['card_info']['card_number'],
155 ]);
156 $self->billingAddress = Address::fromArray([
157 'line1' => $request['card_info']['card_address'],
158 'line2' => $request['card_info']['card_address_2'],
159 'city' => $request['card_info']['card_city'],
160 'state' => $request['card_info']['card_state'],
161 'country' => $request['card_info']['card_country'],
162 'postalCode' => $request['card_info']['card_zip'],
163 ]);
164
165 return $self;
166 }
167
168 /**
169 * @since 2.19.6
170 *
171 * @return Donation
172 * @throws Exception
173 */
174 public function toDonation($donorId)
175 {
176 return new Donation([
177 'status' => DonationStatus::PENDING(),
178 'gateway' => $this->paymentGateway,
179 'amount' => (int)$this->price,
180 'currency' => $this->currency,
181 'donorId' => $donorId,
182 'firstName' => $this->donorInfo->firstName,
183 'lastName' => $this->donorInfo->lastName,
184 'email' => $this->donorInfo->email,
185 'formId' => $this->formId,
186 'formTitle' => $this->formTitle,
187 'billingAddress' => BillingAddress::fromArray([
188 'country' => $this->billingAddress->country,
189 'city' => $this->billingAddress->city,
190 'state' => $this->billingAddress->state,
191 'zip' => $this->billingAddress->postalCode,
192 'address1' => $this->billingAddress->line1,
193 'address2' => $this->billingAddress->line2
194 ]),
195 'levelId' => (int)$this->priceId
196 ]);
197 }
198
199 /**
200 *
201 * @return GiveInsertPaymentData
202 */
203 public function toGiveInsertPaymentData()
204 {
205 return GiveInsertPaymentData::fromArray([
206 'price' => $this->price,
207 'formTitle' => $this->formTitle,
208 'formId' => $this->formId,
209 'priceId' => $this->priceId,
210 'date' => $this->date,
211 'donorEmail' => $this->donorInfo->email,
212 'purchaseKey' => $this->purchaseKey,
213 'currency' => $this->currency,
214 'userInfo' => $this->userInfo,
215 'paymentGateway' => $this->paymentGateway
216 ]);
217 }
218
219 /**
220 * @param int $donationId
221 *
222 * @return GatewayPaymentData
223 */
224 public function toGatewayPaymentData($donationId)
225 {
226 return GatewayPaymentData::fromArray([
227 'legacyPaymentData' => $this->legacyDonationData,
228 'amount' => $this->amount,
229 'currency' => $this->currency,
230 'date' => $this->date,
231 'price' => $this->price,
232 'priceId' => $this->priceId,
233 'gatewayId' => $this->paymentGateway,
234 'donationId' => $donationId,
235 'purchaseKey' => $this->purchaseKey,
236 'donorInfo' => $this->donorInfo,
237 'cardInfo' => $this->cardInfo,
238 'billingAddress' => $this->billingAddress,
239 ]);
240 }
241 }
242