Skip to content

Commit efe59a9

Browse files
angbpyChetanGN
andauthored
Saving CartBounty abandonment data for compatibility (#290)
* Saving CartBounty abandonment data for compatibility * CartBounty compatibility * Removed white-spaces * restructured the code and removed whitespaces * removed trailing whitespaces * added conditional to correct position maintaining formatting * added session-id info * Added new logic for sessionID * new logic for logged-in user * updated save abndment data * updated recover logic * updated woo-razorpay file for recovered query on CartBounty * Updated CartBounty save abandonment and URL redirection * Removed stylehandler logic from CartBounty PR * save abandonment stash * stash * CB removed stylehandler * removed include statements of non-existing files * updating cb status * Fixed duplicate Order ID issue in order.php using order ID from transient * Order ID hash fix * Fixed mobile number not updating error * empty email fix * cleaning cb code * removed log messages from code * removed whitespaces * cleaned code format and removed print_r statements * fixed according to comments * Removed repeated code for same variable * removed unused lines * changed function names to camel case * fixed formatting * changed variable names to camelCase and handleOrder function name * update refactor * update refactoring * used cartbounty functions if possible and removed repeated functions * updated with all correct usable admin fxns * Formatted * Code format * Added plugin-active check before using filter Co-authored-by: ChetanGN <[email protected]>
1 parent 1341f86 commit efe59a9

File tree

5 files changed

+363
-49
lines changed

5 files changed

+363
-49
lines changed

includes/api/order.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,8 @@ function createWcOrder(WP_REST_Request $request)
8484
return new WP_REST_Response($response, $statusCode);
8585
}
8686

87-
$cartHash = WC()->cart->get_cart_hash();
88-
89-
$orderIdFromHash = $woocommerce->session->get(RZP_1CC_CART_HASH . $cartHash);
87+
$cartHash = WC()->cart->get_cart_hash();
88+
$orderIdFromHash = get_transient(RZP_1CC_CART_HASH . $cartHash);
9089

9190
if ($orderIdFromHash == null) {
9291
$checkout = WC()->checkout();
@@ -100,7 +99,6 @@ function createWcOrder(WP_REST_Request $request)
10099
} else {
101100
$existingOrder = wc_get_order($orderIdFromHash);
102101
$existingOrder->calculate_totals();
103-
104102
if ($existingOrder->needs_payment() == false) {
105103
$woocommerce->session->__unset(RZP_1CC_CART_HASH . $cartHash);
106104
$checkout = WC()->checkout();
@@ -112,8 +110,7 @@ function createWcOrder(WP_REST_Request $request)
112110
//Keep order in draft status untill customer info available
113111
updateOrderStatus($orderId, 'draft');
114112
} else {
115-
$orderId = $woocommerce->session->get(RZP_1CC_CART_HASH . $cartHash);
116-
113+
$orderId = $orderIdFromHash;
117114
//To get the applied coupon details from cart object.
118115
$coupons = WC()->cart->get_coupons();
119116
$couponCode = !empty($coupons) ? array_key_first($coupons) : null;
@@ -242,6 +239,7 @@ function createWcOrder(WP_REST_Request $request)
242239

243240
$woocommerce->session->set(RZP_1CC_CART_HASH . $cartHash, $orderId);
244241
set_transient(RZP_1CC_CART_HASH . $orderId, $cartHash, 3600);
242+
set_transient(RZP_1CC_CART_HASH . $cartHash, $orderId, 3600);
245243
set_transient($razorpay::SESSION_KEY, $orderId, 3600);
246244

247245
$logObj['response'] = $response;

includes/api/save-abandonment-data.php

100644100755
Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
* For abandon cart recovery related API
44
*/
55

6+
require_once __DIR__ . '/../support/cartbounty.php';
7+
68
function saveCartAbandonmentData(WP_REST_Request $request)
79
{
810
global $woocommerce;
@@ -31,7 +33,6 @@ function saveCartAbandonmentData(WP_REST_Request $request)
3133

3234
return new WP_REST_Response($response, $statusCode);
3335
}
34-
3536
if (isset($razorpayData['receipt'])) {
3637
$wcOrderId = $razorpayData['receipt'];
3738

@@ -63,6 +64,14 @@ function saveCartAbandonmentData(WP_REST_Request $request)
6364
return new WP_REST_Response($result['response'], $result['status_code']);
6465
}
6566

67+
//Check CartBounty plugin is activated or not
68+
if (is_plugin_active('woo-save-abandoned-carts/cartbounty-abandoned-carts.php') && (empty($razorpayData['customer_details']['email']) == false || empty($customerEmail) == false)) {
69+
70+
$result = saveCartBountyData($razorpayData); //save abandonment data
71+
72+
return new WP_REST_Response($result['response'], $result['status_code']);
73+
}
74+
6675
if (is_plugin_active('klaviyo/klaviyo.php') && empty($razorpayData['customer_details']['email']) == false) {
6776
WC()->cart->empty_cart();
6877
$cart1cc = create1ccCart($wcOrderId);
@@ -131,9 +140,8 @@ function saveWooAbandonmentCartLiteData($razorpayData, $wcOrderId)
131140
$billingLastName = " ";
132141
$billingZipcode = $razorpayData['customer_details']['billing_address']['zipcode'] ?? '';
133142
$shippingZipcode = $razorpayData['customer_details']['shipping_address']['zipcode'] ?? '';
134-
135-
$shippingCharges = $razorpayData['shipping_fee'] / 100;
136-
$email = $razorpayData['customer_details']['email'];
143+
$shippingCharges = $razorpayData['shipping_fee'] / 100;
144+
$email = $razorpayData['customer_details']['email'];
137145

138146
// Insert record in abandoned cart table for the guest user.
139147
$userId = saveGuestUserDetails($billingFirstName, $billingLastName, $email, $billingZipcode, $shippingZipcode, $shippingCharges);

includes/razorpay-webhook.php

Lines changed: 23 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -102,20 +102,17 @@ public function process()
102102
//
103103
// If the webhook secret isn't set on wordpress, return
104104
//
105-
if (empty($razorpayWebhookSecret) === true ) {
106-
$razorpayWebhookSecret = get_option('rzp_webhook_secret');
107-
if (empty($razorpayWebhookSecret) === false){
105+
if (empty($razorpayWebhookSecret) === true) {
106+
$razorpayWebhookSecret = get_option('rzp_webhook_secret');
107+
if (empty($razorpayWebhookSecret) === false) {
108108
$this->razorpay->update_option('webhook_secret', $razorpayWebhookSecret);
109-
}
110-
else
111-
{
109+
} else {
112110
rzpLogInfo("Woocommerce orderId: $orderId webhook process exited due to secret not available");
113111

114112
return;
115-
}
113+
}
116114
}
117-
118-
115+
119116
try
120117
{
121118
$this->api->utility->verifyWebhookSignature($post,
@@ -240,23 +237,21 @@ protected function paymentAuthorized(array $data)
240237

241238
rzpLogInfo("Woocommerce orderId: $orderId webhook process intitiated for payment authorized event");
242239

243-
if(!empty($orderId))
244-
{
245-
$order = $this->checkIsObject($orderId);
240+
if (!empty($orderId)) {
241+
$order = $this->checkIsObject($orderId);
246242
}
247243

248-
$orderStatus = $order->get_status();
244+
$orderStatus = $order->get_status();
249245
rzpLogInfo("Woocommerce orderId: $orderId order status: $orderStatus");
250246

251247
// If it is already marked as paid, ignore the event
252248
if ($orderStatus != 'draft' && $order->needs_payment() === false) {
253-
rzpLogInfo("Woocommerce orderId: $orderId webhook process exited with need payment status :". $order->needs_payment());
249+
rzpLogInfo("Woocommerce orderId: $orderId webhook process exited with need payment status :" . $order->needs_payment());
254250

255251
return;
256252
}
257253

258-
if($orderStatus == 'draft')
259-
{
254+
if ($orderStatus == 'draft') {
260255
updateOrderStatus($orderId, 'wc-pending');
261256
}
262257

@@ -326,7 +321,7 @@ protected function paymentPending(array $data)
326321
return;
327322
}
328323

329-
if (isset($data['payload']['payment']['entity']['method']) != 'cod' ) {
324+
if (isset($data['payload']['payment']['entity']['method']) != 'cod') {
330325
return;
331326
}
332327

@@ -337,23 +332,21 @@ protected function paymentPending(array $data)
337332

338333
rzpLogInfo("Woocommerce orderId: $orderId webhook process intitiated for COD method payment pending event");
339334

340-
if(!empty($orderId))
341-
{
342-
$order = $this->checkIsObject($orderId);
335+
if (!empty($orderId)) {
336+
$order = $this->checkIsObject($orderId);
343337
}
344338

345-
$orderStatus = $order->get_status();
339+
$orderStatus = $order->get_status();
346340
rzpLogInfo("Woocommerce orderId: $orderId order status: $orderStatus");
347341

348342
// If it is already marked as paid, ignore the event
349343
if ($orderStatus != 'draft' && $order->needs_payment() === false) {
350-
rzpLogInfo("Woocommerce orderId: $orderId webhook process exited with need payment status :". $order->needs_payment());
344+
rzpLogInfo("Woocommerce orderId: $orderId webhook process exited with need payment status :" . $order->needs_payment());
351345

352346
return;
353347
}
354348

355-
if($orderStatus == 'draft')
356-
{
349+
if ($orderStatus == 'draft') {
357350
updateOrderStatus($orderId, 'wc-pending');
358351
}
359352

@@ -392,9 +385,8 @@ protected function virtualAccountCredited(array $data)
392385
//
393386
$orderId = $data['payload']['payment']['entity']['notes']['woocommerce_order_number'];
394387

395-
if(!empty($orderId))
396-
{
397-
$order = $this->checkIsObject($orderId);
388+
if (!empty($orderId)) {
389+
$order = $this->checkIsObject($orderId);
398390
}
399391
// If it is already marked as paid, ignore the event
400392
if ($order->needs_payment() === false) {
@@ -531,9 +523,8 @@ public function refundedCreated(array $data)
531523
//
532524
$orderId = $payment['notes']['woocommerce_order_number'];
533525

534-
if(!empty($orderId))
535-
{
536-
$order = $this->checkIsObject($orderId);
526+
if (!empty($orderId)) {
527+
$order = $this->checkIsObject($orderId);
537528
}
538529

539530
// If it is already marked as unpaid, ignore the event
@@ -596,12 +587,9 @@ public function refundedCreated(array $data)
596587
public function checkIsObject($orderId)
597588
{
598589
$order = wc_get_order($orderId);
599-
if(is_object($order))
600-
{
590+
if (is_object($order)) {
601591
return wc_get_order($orderId);
602-
}
603-
else
604-
{
592+
} else {
605593
rzpLogInfo("Woocommerce order Object does not exist");
606594
exit();
607595
}

0 commit comments

Comments
 (0)