@@ -27,34 +27,46 @@ public function execute()
27
27
28
28
if ($ order ->getState () === Order::STATE_NEW ) {
29
29
$ this ->changePendingPaymentStatus ($ order );
30
+
30
31
$ invoice = $ this ->createInvoice ($ apiData );
31
32
$ this ->addInvoiceData ($ order , $ invoice );
32
- $ redirectUrl = $ this ->getXenditRedirectUrl ($ invoice , $ apiData ['preferred_method ' ]);
33
33
34
+ $ redirectUrl = $ this ->getXenditRedirectUrl ($ invoice , $ apiData ['preferred_method ' ]);
35
+ $ this ->getLogger ()->info (
36
+ 'Redirect customer to Xendit ' ,
37
+ ['order_id ' => $ order ->getIncrementId (), 'redirect_url ' => $ redirectUrl ]
38
+ );
34
39
$ resultRedirect = $ this ->getRedirectFactory ()->create ();
35
40
$ resultRedirect ->setUrl ($ redirectUrl );
36
41
return $ resultRedirect ;
37
42
} elseif ($ order ->getState () === Order::STATE_CANCELED ) {
43
+ $ this ->getLogger ()->info ('Order is already canceled ' , ['order_id ' => $ order ->getIncrementId ()]);
44
+
38
45
$ this ->_redirect ('checkout/cart ' );
39
46
} else {
40
- $ this ->getLogger ()->debug ('Order in unrecognized state: ' . $ order ->getState ());
47
+ $ this ->getLogger ()->info ('Order in unrecognized state ' , [ ' state ' => $ order ->getState (), ' order_id ' => $ order -> getIncrementId ()] );
41
48
$ this ->_redirect ('checkout/cart ' );
42
49
}
43
50
} catch (\Throwable $ e ) {
51
+ $ errorMessage = sprintf ('xendit/checkout/invoice failed: Order #%s - %s ' , $ order ->getIncrementId (), $ e ->getMessage ());
52
+
53
+ $ this ->getLogger ()->error ($ errorMessage , ['order_id ' => $ order ->getIncrementId ()]);
44
54
$ this ->getLogger ()->debug ('Exception caught on xendit/checkout/invoice: ' . $ e ->getMessage ());
45
55
$ this ->getLogger ()->debug ($ e ->getTraceAsString ());
46
56
47
- $ this ->cancelOrder ($ order , $ e ->getMessage ());
48
-
49
- // log metric error
50
- $ this ->metricHelper ->sendMetric (
51
- 'magento2_checkout ' ,
52
- [
53
- 'type ' => 'error ' ,
54
- 'payment_method ' => $ this ->getPreferredMethod ($ order ),
55
- 'error_message ' => $ e ->getMessage ()
56
- ]
57
- );
57
+ // cancel order
58
+ try {
59
+ $ this ->cancelOrder ($ order , $ e ->getMessage ());
60
+ $ this ->metricHelper ->sendMetric (
61
+ 'magento2_checkout ' ,
62
+ [
63
+ 'type ' => 'error ' ,
64
+ 'payment_method ' => $ this ->getPreferredMethod ($ order ),
65
+ 'error_message ' => $ errorMessage
66
+ ]
67
+ );
68
+ } catch (\Exception $ e ) {
69
+ }
58
70
59
71
return $ this ->redirectToCart ($ e ->getMessage ());
60
72
}
@@ -124,6 +136,8 @@ private function createInvoice($requestData)
124
136
125
137
try {
126
138
if (isset ($ requestData ['preferred_method ' ])) {
139
+ $ this ->getLogger ()->info ('createInvoice start ' , ['data ' => $ requestData ]);
140
+
127
141
$ invoice = $ this ->getApiHelper ()->request (
128
142
$ invoiceUrl ,
129
143
$ invoiceMethod ,
@@ -147,6 +161,7 @@ private function createInvoice($requestData)
147
161
);
148
162
}
149
163
164
+ $ this ->getLogger ()->info ('createInvoice success ' , ['xendit_invoice ' => $ invoice ]);
150
165
return $ invoice ;
151
166
}
152
167
@@ -163,32 +178,65 @@ private function getXenditRedirectUrl($invoice, $preferredMethod)
163
178
/**
164
179
* @param Order $order
165
180
* @return void
181
+ * @throws LocalizedException
166
182
*/
167
183
private function changePendingPaymentStatus (Order $ order )
168
184
{
169
- $ order ->setState (Order::STATE_PENDING_PAYMENT )->setStatus (Order::STATE_PENDING_PAYMENT );
170
- $ order ->addCommentToStatusHistory ("Pending Xendit payment. " );
171
- $ this ->getOrderRepo ()->save ($ order );
185
+ try {
186
+ $ order ->setState (Order::STATE_PENDING_PAYMENT )->setStatus (Order::STATE_PENDING_PAYMENT );
187
+ $ order ->addCommentToStatusHistory ("Pending Xendit payment. " );
188
+ $ this ->getOrderRepo ()->save ($ order );
189
+
190
+ $ this ->getLogger ()->info (
191
+ 'changePendingPaymentStatus success ' ,
192
+ ['order_id ' => $ order ->getIncrementId ()]
193
+ );
194
+ } catch (\Exception $ e ) {
195
+ $ this ->getLogger ()->error (
196
+ sprintf ('changePendingPaymentStatus failed: %s ' , $ e ->getMessage ()),
197
+ ['order_id ' => $ order ->getIncrementId ()]
198
+ );
199
+
200
+ throw new LocalizedException (
201
+ new Phrase ($ e ->getMessage ())
202
+ );
203
+ }
172
204
}
173
205
174
206
/**
175
207
* @param Order $order
176
208
* @param array $invoice
177
209
* @return void
210
+ * @throws \Exception
178
211
*/
179
212
private function addInvoiceData (Order $ order , array $ invoice )
180
213
{
181
- $ payment = $ order ->getPayment ();
182
- $ payment ->setAdditionalInformation ('payment_gateway ' , 'xendit ' );
183
- if (isset ($ invoice ['id ' ])) {
184
- $ payment ->setAdditionalInformation ('xendit_invoice_id ' , $ invoice ['id ' ]);
185
- $ order ->setXenditTransactionId ($ invoice ['id ' ]);
186
- }
187
- if (isset ($ invoice ['expiry_date ' ])) {
188
- $ payment ->setAdditionalInformation ('xendit_invoice_exp_date ' , $ invoice ['expiry_date ' ]);
189
- }
214
+ try {
215
+ $ payment = $ order ->getPayment ();
216
+ $ payment ->setAdditionalInformation ('payment_gateway ' , 'xendit ' );
217
+ if (isset ($ invoice ['id ' ])) {
218
+ $ payment ->setAdditionalInformation ('xendit_invoice_id ' , $ invoice ['id ' ]);
219
+ $ order ->setXenditTransactionId ($ invoice ['id ' ]);
220
+ }
221
+ if (isset ($ invoice ['expiry_date ' ])) {
222
+ $ payment ->setAdditionalInformation ('xendit_invoice_exp_date ' , $ invoice ['expiry_date ' ]);
223
+ }
224
+
225
+ $ this ->getOrderRepo ()->save ($ order );
226
+ $ this ->getLogger ()->info (
227
+ 'addInvoiceData success ' ,
228
+ ['order_id ' => $ order ->getIncrementId (), 'xendit_transaction_id ' => $ invoice ['id ' ]]
229
+ );
230
+ } catch (\Exception $ e ) {
231
+ $ this ->getLogger ()->error (
232
+ sprintf ('addInvoiceData failed: %s ' , $ e ->getMessage ()),
233
+ ['order_id ' => $ order ->getIncrementId (), 'xendit_transaction_id ' => $ invoice ['id ' ]]
234
+ );
190
235
191
- $ this ->getOrderRepo ()->save ($ order );
236
+ throw new LocalizedException (
237
+ new Phrase ($ e ->getMessage ())
238
+ );
239
+ }
192
240
}
193
241
194
242
/**
0 commit comments