|
21 | 21 | }; |
22 | 22 |
|
23 | 23 | this.setShopOrderData = async function (response, orderType) { |
24 | | - if (response.status === 'success') { |
25 | | - if (null !== this.currentOrder.shop) { |
26 | | - await PayPalPayment.deleteOrder().then(function (data) { |
27 | | - PayPalPayment.resetCurrentOrder(); |
28 | | - }); |
29 | | - } |
30 | | - |
31 | | - PayPalPayment.currentOrder[orderType] = response; |
32 | | - PayPalPayment.config.purchaseUnits.custom_id = response.customId; |
| 24 | + if (null !== this.currentOrder.shop) { |
| 25 | + await PayPalPayment.deleteOrder().then(function (data) { |
| 26 | + PayPalPayment.resetCurrentOrder(); |
| 27 | + }); |
33 | 28 | } |
| 29 | + |
| 30 | + PayPalPayment.currentOrder[orderType] = response; |
| 31 | + PayPalPayment.config.purchaseUnits.custom_id = response.customId; |
34 | 32 | }; |
35 | 33 |
|
36 | 34 | this.getCurrentOrderData = function (name, orderType) { |
|
114 | 112 | PayPalPayment.setShopOrderData(data.detail, 'shop'); |
115 | 113 | }; |
116 | 114 |
|
| 115 | + this.onPayPalOrderCreated = function (data) { |
| 116 | + PayPalPayment.setCreatePayPalOrderResponse(data.detail); |
| 117 | + }; |
| 118 | + |
117 | 119 | this.vaultingSettingSwitch = function (e) { |
118 | 120 | PayPalPayment.currentOrder.vaultPayment = e.currentTarget.checked; |
119 | 121 | }; |
|
123 | 125 |
|
124 | 126 | window.onload = function (e) { |
125 | 127 | const savePaymentChackbox = document.getElementById('oscPayPalVaultPaymentCheckbox'); |
| 128 | + if (savePaymentChackbox) { |
126 | 129 | savePaymentChackbox.onclick = PayPalPayment.vaultingSettingSwitch; |
| 130 | + } |
127 | 131 | }; |
128 | 132 |
|
129 | 133 | document.addEventListener('shopOrderCreated', this.onShopOrderCreated); |
| 134 | + document.addEventListener('payPalOrderCreated', this.onPayPalOrderCreated); |
130 | 135 |
|
131 | 136 | return this; |
132 | 137 | }; |
133 | 138 |
|
| 139 | + this.createACDCOrder = async function (data, actions) { |
| 140 | + let result = await PayPalPayment.backendRequest('shopACDCOrderCreationStatusUrl', {}, { |
| 141 | + 'deliveryAddressId': PayPalPayment.getConfigValue('deliveryAddressId') |
| 142 | + }); |
| 143 | + |
| 144 | + document.dispatchEvent(new CustomEvent('shopOrderCreated', new Object({detail: {...result.shopOrder}}))); |
| 145 | + document.dispatchEvent(new CustomEvent('payPalOrderCreated', new Object({detail: {...result.payPalOrder}}))); |
| 146 | + |
| 147 | + return result.payPalOrder.id |
| 148 | + } |
| 149 | + |
| 150 | + this.captureACDCOrder = async function (data, actions) { |
| 151 | + debugger |
| 152 | + |
| 153 | + const capture = await actions.order.capture(); |
| 154 | + debugger |
| 155 | + PayPalPayment.afterCaptureACDCOrder(); |
| 156 | + } |
| 157 | + |
134 | 158 | this.createOrder = async function (data, actions) { |
135 | 159 | let result = await PayPalPayment.backendRequest('shopOrderCreationStatusUrl', {}, { |
136 | 160 | 'deliveryAddressId': PayPalPayment.getConfigValue('deliveryAddressId') |
137 | 161 | }); |
138 | 162 |
|
139 | 163 | document.dispatchEvent(new CustomEvent('shopOrderCreated', new Object({detail: {...result}}))); |
140 | 164 |
|
141 | | - const paymentId = PayPalPayment.getConfigValue('paymentId'); |
142 | | - if (paymentId === 'oscpaypal_acdc'){ |
143 | | - debugger |
144 | | - } |
145 | | - |
146 | 165 | return actions.order.create(PayPalPayment.getPurchaseUnits()); |
147 | 166 | }; |
148 | 167 |
|
|
191 | 210 | }); |
192 | 211 | }; |
193 | 212 |
|
| 213 | + this.afterCaptureACDCOrder = function (details) { |
| 214 | + debugger |
| 215 | + window.location = PayPalPayment.getConfigValue('shopThankYouPageUrl'); |
| 216 | + }; |
| 217 | + |
194 | 218 | this.afterCaptureOrder = async function (details) { |
195 | 219 | const {paypalOrderDetails} = await PayPalPayment.patchOrder(details); |
196 | 220 |
|
|
202 | 226 | }; |
203 | 227 |
|
204 | 228 | this.handlePaymentAuthorization = async function (details) { |
| 229 | + debugger |
205 | 230 | PayPalPayment.setCreatePayPalOrderResponse(details); |
206 | 231 | const {paypalOrderDetails} = await PayPalPayment.patchOrder(details); |
207 | 232 |
|
|
258 | 283 | return; |
259 | 284 | } |
260 | 285 |
|
261 | | - const cardField = paypal.CardFields({ |
| 286 | + const cardFields = paypal.CardFields({ |
262 | 287 | style: { |
263 | 288 | 'input': { |
264 | 289 | 'color': '#3A3A3A', |
|
275 | 300 | 'color': 'red' |
276 | 301 | } |
277 | 302 | }, |
278 | | - createOrder: PayPalPayment.createOrder, |
279 | | - onApprove: PayPalPayment.handlePaymentAuthorization, |
| 303 | + createOrder: PayPalPayment.createACDCOrder, |
| 304 | + onApprove: PayPalPayment.captureACDCOrder, |
280 | 305 | onError: PayPalPayment.handleError |
281 | 306 | }); |
282 | 307 |
|
283 | | - if (cardField.isEligible()) { |
284 | | - const cardNameContainer = document.getElementById("card-name-field-container"); // Optional field |
| 308 | + if (cardFields.isEligible()) { |
| 309 | + const cardNameContainer = document.getElementById("card-name-field-container"); |
285 | 310 | const cardNumberContainer = document.getElementById("card-number-field-container"); |
286 | 311 | const cardCvvContainer = document.getElementById("card-cvv-field-container"); |
287 | 312 | const cardExpiryContainer = document.getElementById("card-expiry-field-container"); |
288 | | - const multiCardFieldButton = document.getElementById( |
| 313 | + const submitButton = document.getElementById( |
289 | 314 | PayPalPayment.getConfigValue('buttonSelector').split('#').reverse()[0] |
290 | 315 | ); |
291 | 316 |
|
292 | | - const nameField = cardField.NameField(); |
293 | | - nameField.render(cardNameContainer); |
294 | | - const numberField = cardField.NumberField(); |
295 | | - numberField.render(cardNumberContainer); |
296 | | - const cvvField = cardField.CVVField(); |
297 | | - cvvField.render(cardCvvContainer); |
298 | | - const expiryField = cardField.ExpiryField(); |
299 | | - expiryField.render(cardExpiryContainer); |
300 | | - // Add click listener to the submit button and call the submit function on the CardField component |
301 | | - multiCardFieldButton.addEventListener("click", () => { |
302 | | - cardField |
303 | | - .submit() |
304 | | - .then(() => { |
305 | | - debugger |
306 | | - // Handle a successful payment |
307 | | - }) |
308 | | - .catch((err) => { |
309 | | - debugger |
310 | | - // Handle an unsuccessful payment |
| 317 | + if (cardNameContainer) { |
| 318 | + cardFields.NameField().render(cardNameContainer); |
| 319 | + } |
| 320 | + if (cardNumberContainer) { |
| 321 | + cardFields.NumberField().render(cardNumberContainer); |
| 322 | + } |
| 323 | + if (cardCvvContainer) { |
| 324 | + cardFields.CVVField().render(cardCvvContainer); |
| 325 | + } |
| 326 | + if (cardExpiryContainer) { |
| 327 | + cardFields.ExpiryField().render(cardExpiryContainer); |
| 328 | + } |
| 329 | + if (submitButton) { |
| 330 | + submitButton.addEventListener("click", () => { |
| 331 | + cardFields.submit().catch(err => { |
| 332 | + console.error('Error submitting card fields:', err); |
311 | 333 | }); |
312 | 334 | }); |
313 | 335 | } |
| 336 | + } |
314 | 337 | }; |
315 | 338 |
|
316 | 339 | this.getPayButtonSettings = function () { |
317 | 340 | const buttonSettings = { |
318 | | - displayOnly: ["vaultable", "card"], |
319 | 341 | createOrder: PayPalPayment.createOrder, |
320 | 342 | onApprove: PayPalPayment.handlePaymentAuthorization, |
321 | 343 | onCancel: PayPalPayment.deleteOrder, |
|
0 commit comments