# Print Receipt WiFi Integration

## **Processing a Print Receipt Request**

To print a receipt using the **WiFi Integration** method, establish a WebSocket connection and send a `PrintImage` method along with the base64-encoded receipt data to Easypay's service in real-time.

**Example Code:**

```javascript
// Function to print receipt using WebSocket Integration
function printReceiptWebSocket(socket, base64Receipt) {
    // Prepare the print request
    const printRequest = {
        method: "PrintImage",
        data: base64Receipt, // Base64-encoded receipt image
    };

    // Convert the request to JSON
    const message = JSON.stringify(printRequest);

    // Send the print request through the WebSocket
    try {
        socket.send(message);
        console.log("Print request sent:", printRequest);
    } catch (error) {
        console.error("Failed to send print request:", error);
        // Optionally, implement retry logic or notify the user
    }

}

// Example usage:
const socket = new WebSocket("wss://your-ip-address:9000");

socket.onopen = () => {
    console.log("WebSocket connection established.");
    const base64Receipt = "your_base64_receipt_here"; // Replace with your base64 receipt
    printReceiptWebSocket(socket, base64Receipt);
};

socket.onclose = () => {
    console.log("WebSocket connection closed.");
};
```

**Explanation:**

* **Method:** `"PrintImage"`
* **Purpose:**\
  Sends the base64-encoded receipt image to Easypay for printing.
* **Parameters:**
  * `method`: Specifies the action to perform, which is `"PrintImage"` in this case.
  * `data`: The receipt image encoded in base64 format.

## **Processing Open Cash Drawer Request**&#x20;

```javascript
// Function to open the cash drawer using WebSocket Integration
function openCashDrawerWebSocket(socket) {
    // Prepare the open drawer request data
    const openDrawerRequest = {
        method: "OpenDrawer"
    };

    // Send the open drawer request through the WebSocket
    try {
        socket.send(JSON.stringify(openDrawerRequest));
        console.log("Open drawer request sent:", openDrawerRequest);
    } catch (sendError) {
        console.error("Failed to send open drawer request:", sendError);
        // Optionally, implement retry logic or notify the user
        return;
    }
}

// Example usage:
const socket = new WebSocket("wss://your-ip-address:9000");

socket.onopen = () => {
    console.log("WebSocket connection established.");
    openCashDrawerWebSocket(socket);
};

socket.onclose = () => {
    console.log("WebSocket connection closed.");
};
```

**Explanation:**

* **Method:** `"OpenDrawer"`
* **Purpose:**\
  Sends a request to Easypay to open the physical cash drawer connected to the printer. This allows for automated control of the cash drawer without manual intervention.
* **Parameters:**
  * `method`: Specifies the action to perform, which is `"OpenDrawer"` in this case.
  * **No additional parameters** are required for this method.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.easypay.sa/easypay/print-receipt-integration-guide/print-receipt-wifi-integration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
