/** * FC Mobile — POST order JSON to your **Node fc-mobile** server (not the WordPress site URL). * * `webhook_url` must be the machine where `fc-mobile` runs, e.g. * https://fcmobile.YOURDOMAIN.com/webhook/woocommerce * Do NOT use https://your-shop.com/... — that is WooCommerce, not Node; nothing will hit the worker / order log. * * Install: Code Snippets → Run everywhere, or child theme functions.php. */ if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! function_exists( 'fc_mobile_push_get_settings' ) ) { /** * webhook_url → Node fc-mobile base + /webhook/woocommerce * webhook_secret → must match Node WEBHOOK_SECRET (same string). Leave empty only if server .env has WEBHOOK_SECRET empty (no auth — risky). * If .env has # in the secret, wrap in double quotes or Node truncates at #. * callback_secret → same string as Node WOO_STATUS_CALLBACK_SECRET — lets Node set order completed/failed via WP REST (when WC API PUT fails). * product_ids → empty array = any product; or list variation/parent IDs to restrict */ function fc_mobile_push_get_settings() { return array( 'webhook_url' => 'https://fcmobile.vertexbazaar.com/webhook/woocommerce', 'webhook_secret' => 'lamulove', 'callback_secret' => 'long-random-same-as-snippet-callback_secret', 'product_ids' => array( 152, ), ); } /** * @param int[] $allowed Empty = allow any line item. */ function fc_mobile_push_order_has_allowed_product( WC_Order $order, array $allowed ) { $allowed = array_map( 'absint', $allowed ); $allowed = array_values( array_unique( array_filter( $allowed ) ) ); if ( empty( $allowed ) ) { foreach ( $order->get_items( 'line_item' ) as $item ) { if ( $item instanceof WC_Order_Item_Product ) { return true; } } return false; } foreach ( $order->get_items( 'line_item' ) as $item ) { if ( ! $item instanceof WC_Order_Item_Product ) { continue; } $line_pid = (int) $item->get_product_id(); if ( $line_pid && in_array( $line_pid, $allowed, true ) ) { return true; } $product = $item->get_product(); if ( $product && $product->is_type( 'variation' ) ) { $parent = (int) $product->get_parent_id(); if ( $parent && in_array( $parent, $allowed, true ) ) { return true; } } } return false; } /** @return array */ function fc_mobile_webhook_build_payload( WC_Order $order ) { $line_items = array(); foreach ( $order->get_items( 'line_item' ) as $item_id => $item ) { if ( ! $item instanceof WC_Order_Item_Product ) { continue; } $product = $item->get_product(); $meta_rows = array(); foreach ( $item->get_meta_data() as $meta ) { $meta_rows[] = array( 'key' => $meta->key, 'value' => $meta->value, ); } $variation_id = (int) $item->get_variation_id(); $product_id = (int) $item->get_product_id(); $line_items[] = array( 'id' => (int) $item_id, 'product_id' => $product_id, 'variation_id' => $variation_id, 'quantity' => (float) $item->get_quantity(), 'sku' => $product ? (string) $product->get_sku() : '', 'meta_data' => $meta_rows, ); } $order_meta_rows = array(); foreach ( $order->get_meta_data() as $meta ) { $order_meta_rows[] = array( 'key' => $meta->key, 'value' => $meta->value, ); } $billing = array( 'country' => (string) $order->get_billing_country(), ); return array( 'id' => $order->get_id(), 'order_id' => $order->get_id(), 'status' => $order->get_status(), 'meta_data' => $order_meta_rows, 'line_items' => $line_items, 'billing' => $billing, ); } /** * @return array{ ok: bool, note: string } */ function fc_mobile_webhook_send_order( $order_id ) { $order_id = absint( $order_id ); if ( ! $order_id ) { return array( 'ok' => false, 'note' => 'FC Mobile: invalid order id.' ); } $cfg = fc_mobile_push_get_settings(); $url = isset( $cfg['webhook_url'] ) ? trim( (string) $cfg['webhook_url'] ) : ''; $secret = isset( $cfg['webhook_secret'] ) ? trim( (string) $cfg['webhook_secret'] ) : ''; $allowed = isset( $cfg['product_ids'] ) && is_array( $cfg['product_ids'] ) ? $cfg['product_ids'] : array(); if ( $url === '' ) { return array( 'ok' => false, 'note' => 'FC Mobile: set webhook_url in fc_mobile_push_get_settings(). Optional webhook_secret must match Node .env WEBHOOK_SECRET (or both empty for no auth).', ); } $order = wc_get_order( $order_id ); if ( ! $order ) { return array( 'ok' => false, 'note' => 'FC Mobile: order not found.' ); } if ( ! fc_mobile_push_order_has_allowed_product( $order, $allowed ) ) { return array( 'ok' => false, 'note' => 'FC Mobile: skipped — no matching product (check product_ids vs line item / variation ID).', ); } $body = fc_mobile_webhook_build_payload( $order ); // Many hosts strip non-standard headers — also send secret in query when set (server accepts both). $post_url = $url; if ( $secret !== '' ) { if ( strpos( $post_url, '?' ) !== false ) { $post_url .= '&'; } else { $post_url .= '?'; } $post_url .= 'webhook_secret=' . rawurlencode( $secret ); } $headers = array( 'Content-Type' => 'application/json; charset=utf-8', ); if ( $secret !== '' ) { $headers['x-webhook-secret'] = $secret; } $response = wp_remote_post( $post_url, array( 'timeout' => 20, 'headers' => $headers, 'body' => wp_json_encode( $body ), 'blocking' => true, ) ); if ( is_wp_error( $response ) ) { return array( 'ok' => false, 'note' => 'FC Mobile: push failed — ' . $response->get_error_message(), ); } $code = wp_remote_retrieve_response_code( $response ); $raw = wp_remote_retrieve_body( $response ); $trim = strlen( $raw ) > 400 ? substr( $raw, 0, 400 ) . '…' : $raw; if ( $code >= 200 && $code < 300 ) { return array( 'ok' => true, 'note' => 'FC Mobile: sent to automation server (HTTP ' . $code . '). ' . $trim, ); } return array( 'ok' => false, 'note' => 'FC Mobile: server rejected push (HTTP ' . $code . '). ' . $trim, ); } function fc_mobile_webhook_on_processing( $order_id, $order = null ) { $order_id = $order_id ? absint( $order_id ) : 0; if ( ! $order_id ) { return; } if ( get_post_meta( $order_id, '_fc_mobile_webhook_sent', true ) ) { return; } $order = $order instanceof WC_Order ? $order : wc_get_order( $order_id ); if ( ! $order ) { return; } if ( $order->get_status() !== 'processing' ) { return; } $result = fc_mobile_webhook_send_order( $order_id ); // Private note: admin only (customer email won’t include it). $order->add_order_note( $result['note'], false, false ); if ( ! empty( $result['ok'] ) ) { update_post_meta( $order_id, '_fc_mobile_webhook_sent', gmdate( 'c' ) ); } } add_action( 'woocommerce_order_status_processing', 'fc_mobile_webhook_on_processing', 20, 2 ); /** * Slugs allowed for fc-mobile/v1/order-status (core + any registered custom statuses e.g. waiting). * * @return string[] */ function fc_mobile_allowed_wc_order_statuses() { $base = array( 'pending', 'processing', 'on-hold', 'completed', 'cancelled', 'refunded', 'failed' ); if ( ! function_exists( 'wc_get_order_statuses' ) ) { return $base; } $norm = array(); foreach ( array_keys( wc_get_order_statuses() ) as $k ) { $k = (string) $k; if ( strpos( $k, 'wc-' ) === 0 ) { $norm[] = substr( $k, 3 ); } else { $norm[] = $k; } } return array_values( array_unique( array_merge( $base, $norm ) ) ); } /** * Node server calls this after redeem (success → completed, fail → failed). Same secret as WOO_STATUS_CALLBACK_SECRET in Node .env. * URL (set in Node): https://YOUR-SHOP.com/wp-json/fc-mobile/v1/order-status * * @param WP_REST_Request $req JSON: { "order_id": 123, "status": "completed"|"failed"|… } + header X-FC-Mobile-Callback-Secret * @return WP_REST_Response|WP_Error */ function fc_mobile_rest_order_status( WP_REST_Request $req ) { $cfg = fc_mobile_push_get_settings(); $expected = isset( $cfg['callback_secret'] ) ? trim( (string) $cfg['callback_secret'] ) : ''; if ( $expected === '' ) { return new WP_Error( 'fc_mobile_disabled', 'FC Mobile: set callback_secret in fc_mobile_push_get_settings (match Node WOO_STATUS_CALLBACK_SECRET).', array( 'status' => 403 ) ); } $hdr = $req->get_header( 'x_fc_mobile_callback_secret' ); $ok = is_string( $hdr ) && hash_equals( $expected, trim( $hdr ) ); if ( ! $ok ) { $body = $req->get_json_params(); if ( is_array( $body ) && isset( $body['secret'] ) ) { $ok = hash_equals( $expected, trim( (string) $body['secret'] ) ); } } if ( ! $ok ) { return new WP_Error( 'fc_mobile_forbidden', 'Invalid callback secret.', array( 'status' => 403 ) ); } $body = $req->get_json_params(); if ( ! is_array( $body ) ) { $body = array(); } $order_id = isset( $body['order_id'] ) ? absint( $body['order_id'] ) : 0; $status = isset( $body['status'] ) ? sanitize_key( (string) $body['status'] ) : ''; if ( ! $order_id || $status === '' ) { return new WP_Error( 'fc_mobile_bad_request', 'JSON body must include order_id and status.', array( 'status' => 400 ) ); } $allowed = fc_mobile_allowed_wc_order_statuses(); if ( ! in_array( $status, $allowed, true ) ) { return new WP_Error( 'fc_mobile_bad_status', 'Status not allowed.', array( 'status' => 400 ) ); } if ( ! function_exists( 'wc_get_order' ) ) { return new WP_Error( 'fc_mobile_no_wc', 'WooCommerce not active.', array( 'status' => 503 ) ); } $order = wc_get_order( $order_id ); if ( ! $order ) { return new WP_Error( 'fc_mobile_no_order', 'Order not found.', array( 'status' => 404 ) ); } $order->update_status( $status, sprintf( /* translators: %s: Woo order status slug */ __( 'FC Mobile automation: status set to %s.', 'fc-mobile' ), $status ) ); return rest_ensure_response( array( 'ok' => true, 'order_id' => $order_id, 'status' => $status, ) ); } add_action( 'rest_api_init', static function () { register_rest_route( 'fc-mobile/v1', '/order-status', array( 'methods' => 'POST', 'callback' => 'fc_mobile_rest_order_status', 'permission_callback' => '__return_true', ) ); } ); } Tinder Subscription - Vertex Bazaar
Tinder Subscription

Tinder Subscription

Instant Delivery

GLOBAL GLOBAL
২৪ ঘণ্টা অটোমেটিক ডেলিভারি
Tinder Subscription

Tinder Subscription

Instant Delivery

GLOBAL GLOBAL
২৪ ঘণ্টা অটোমেটিক ডেলিভারি
Tinder Plus 1 Month ৳0
Tinder Gold 1 Month ৳899
Tinder Gold 6 Month ৳0

Order Info :

Clear

Item : Tinder Plus 1 Month

Price : 0 TK

Product Quantity

1

ℹ️ Description

How to purchase & redeem tinder promo code?

How to Redeem “Promo Code”:

1. Login to your Tinder account here.
2. Click on your profile settings and select PROMO CODE.
3. Enter purchased “Promo Code” and submit to complete the redemption.

📌Tinder Plus Subscription Advantages📌

✅ unlimited likes
✅ undo the last swipe
✅ 5 super likes per day
✅ 1 boost per month
✅ location to find couples around the world
✅ lack of advertising

📌Tinder Gold Subscription Advantages📌

✅ unlimited likes
✅ see who like you
✅ undo the last swipe
✅ 5 super likes per day
✅ 1 boost per month
✅ location to find couples around the world
✅ lack of advertising

❓ Guide

🛒 How to Order in Vertex Bazaar (Step by Step)

  1. আপনার প্রয়োজনীয় Package নির্বাচন করুন।
  2. Top Up হলে আপনার প্লেয়ার ইনফো বা ইউসার ইনফো দিয়ে ফিল্ড পূরণ করুন।
  3. Quantity সিলেক্ট করে Go Payment ক্লিক করুন।
  4. আপনার Name, Email, Phone Number  লিখুন।
  5. Checkout এ গিয়ে আপনার পছন্দের Payment Method (bKash, Nagad, Binance Pay ইত্যাদি) বেছে নিন।
  6. Payment সম্পন্ন হওয়ার সংগে সংগে আপনি আপনার টপ আপ বা গিফট কার্ড পেয়ে যাবেন।

⭐ Reviews

No reviews yet. Be the first to review this game!

Welcome Back!

Sign in to continue to your account

or

By continuing, you agree to our Privacy Policy and Terms of Service

Complete Your Profile

Enter your details to continue