We're moving the community! Starting July 7, the current community will be read-only for approx. 2 weeks. You can browse content, but posting will be temporarily unavailable. Learn more

How to connect API for order tracking on Origin theme?

How to connect API for order tracking on Origin theme?

basicbastardco
Pathfinder
171 1 31

Hi guys, 

 

I am currently working on building an order tracking page using the Shopify Origin theme. I have implemented all the necessary components and UI elements. However, I am facing some difficulties in connecting with the API to retrieve and display the actual order status.

 

If you have experience with Shopify and API integrations, I kindly request your assistance in resolving this issue. Your expertise and guidance would be greatly appreciated. Thank you in advance for your help!

 

URL: https://basicbastard.co/pages/notes

 

I used the below code: 

 

<div class="order-tracking">
    <div class="input-container">
        <input type="text" id="order_number" class="order-input" placeholder="Order number">
        <button class="order-button" onclick="trackOrder()">TRACK</button>
    </div>
    <div id="order_status"></div>
</div>

<style>
    .order-tracking {
        display: flex;
        flex-direction: column;
        align-items: center;
        margin-bottom: 20px;
    }

    .input-container {
        display: flex;
        align-items: center;
    }

    .order-tracking input.order-input {
        flex-grow: 1;
        text-align: left;
        padding: 1.5rem;
        margin: var(--inputs-border-width);
        transition: box-shadow var(--duration-short) ease, border-color 0.3s; /* Added transition for border color */
        appearance: none;
        background-color: rgb(var(--color-background));
        color: rgb(var(--color-foreground));
        font-size: 13px;
        width: 80%;
        box-sizing: border-box;
        border-radius: var(--inputs-radius);
        height: 4rem;
        min-height: calc(var(--inputs-border-width) * 2);
        min-width: calc(7rem + (var(--inputs-border-width) * 2));
        position: relative;
        border: 0;
        border: 1px solid lightgrey;
        margin-bottom: 13px;
        box-shadow: none; /* Remove the box shadow */
    }

    .order-tracking input.order-input:focus,
    .order-tracking input.order-input:hover {
        outline: none;
        border: 2px solid grey; /* Set the border color to 2px solid grey on hover */
        box-shadow: none; /* Remove the box shadow */
    }

    .order-tracking input.order-input:focus {
        border-color: #282F3D; /* Set the border color to #282F3D on focus */
    }

    .order-tracking button.order-button {
        background-color: #282F3D;
        color: #faf9f6;
        padding: 10px 20px;
        border: none;
        border-radius: 0;
        cursor: pointer;
        width: 30%;
        text-align: center;
        font-size: 11px;
        font-weight: 600;
        margin-left: 2px; /* Added margin to separate the button from the input field */
        height: 4rem; /* Set the height of the button to match the input field */
        margin-bottom: 12px;
    }

    .order-tracking #order_status {
        margin-top: 7px;
        font-weight: bold;
        font-size: 11px !important;
    }
</style>



<script>
    function trackOrder() {
        var orderNumber = document.getElementById("order_number").value;
        var orderStatusDiv = document.getElementById("order_status");

        fetchOrderStatus(orderNumber)
            .then(function (status) {
                orderStatusDiv.innerText = "Order #" + orderNumber + ": " + status;
            })
            .catch(function (error) {
                orderStatusDiv.innerText = "Oops! Something went wrong.";
            });
    }

    function fetchOrderStatus(orderNumber) {
        return new Promise(function (resolve, reject) {
            fetch("/admin/api/2021-09/orders.json?name=" + orderNumber)
                .then(function (response) {
                    if (response.ok) {
                        return response.json();
                    } else {
                        throw new Error("Oops! Something went wrong.");
                    }
                })
                .then(function (data) {
                    var order = data.orders[0];
                    var status = order.financial_status;

                    if (status) {
                        resolve(status);
                    } else {
                        throw new Error("Oops! Something went wrong.");
                    }
                })
                .catch(function (error) {
                    reject(error);
                });
        });
    }
</script>
Liaz
Replies 0 (0)