# Payment Integration

### Introduction

Integrating Resmic Pro into your application allows you to accept crypto payments seamlessly. This section provides a step-by-step guide on how to set up payment processing.

### Step 1: Generate an API Key

Before initiating payments, ensure you have generated an API key. Refer to the [API Authentication & Security](/resmic-pro/api-authentications-and-security.md) section for details on obtaining your API key.

### Step 2: Creating a Payment Request

To create a payment request, send a `POST` request to the Resmic Pro API:

#### Request Example

```bash
curl --location 'https://api.resmic.com/api/v1/makepayment' \
--header 'Content-type: application/json' \
--header 'x-api-key: <Your_API_KEY>' \
--header 'x-user-id: <Your_User_Id>' \
--data-raw '{
    "amount":100, 
    "blockchain":["Ethereum", "Polygon","BNB-Chain", "Sepolia"], 
    "token": ["USDT", "USDC", "DAI", "ETH", "PUSH"], 
    "title":"Test title for the session", 
    "description": "This is a detailed description for the payment", 
    "wallet_address": "0x056397760b973BfB921Bc10Be9DA5034B1e921d7", 
    "blockchain_confirmation": 1,
    "redirect_url": "localhost:3000/success-page", 
    "cancel_url":"localhost:3000/payment-failed-page", 
    "webhook_url":"adityakaklij11@gmail.com"
} '
```

#### Response Example

```json

{
    "status":200,
    "success":true,
    "message":"Sessions created successfully",
    "data":{
        "session_id":"bb0425fe-19b0-4a08-89ce-3dc7f2b53711",
        "payment_url":"https://payments.resmic.com/bb0425fe-19b0-4a08-89ce-3dc7f2b53711"
        }
    }
```

### Step 3: Redirecting the User

Once the payment request is created, redirect the user to the `payment_url` where they can complete the transaction.

### Step 4: Handling Payment Status Updates

Resmic Pro will notify your system about payment status changes through webhooks. Ensure you configure your webhook endpoint in the dashboard.

#### Webhook Example

```json
{
  "payment_id": "abc123xyz",
  "status": "confirmed",
  "amount": 100,
  "currency": "USDT"
}
```

### Sample Integration

```javascript

const makePaymentRedirect = async() => {
        try {
            const paymentDetails = {
                amount: 100, // Amount in USD $
                blockchain: ["Ethereum", "Polygon", "BNB-Chain","Sepolia"],
                token: ["USDT", "USDC", "ETH", "DAI"],
                title: "Test title for the session",
                description: "This is a detailed description for the payment",
                wallet_address: "0x056397760b973BfB921Bc10Be9DA5034B1e921d7",
                blockchain_confirmation: 2,
                redirect_url:"https://domain.com/success",
                cancel_url:"https://domain.com/failed",
                webhook_url: "https://webhook-post-endpoint", // Provide webhook endpoint or use email for status updates
            }
            // Initiate the payment session.
            let response = await axios.post(`https://api.resmic.com/api/v1/makepayment`, paymentDetails, {
                headers: {
                    'Content-Type': 'application/json',
                    'x-api-key': 'API_KEY', // Add the API_KEY here
                    'x-user-id': 'USER_ID' // Add the user_id here.
                }
            })
            // Redirection to Payment Page.
            if (response.data?.success){
                let payment_url = response.data?.data?.payment_url
                window.location.assign(payment_url)
            }
            else{
                alert("Unable to generate payment session.")
            }
        } catch (error) {
            console.log("Error: ", error);
        }
    }
```

### Conclusion

By following these steps, you can successfully integrate Resmic Pro for accepting crypto payments. For further customisation, refer to the [Webhooks & Notifications](/resmic-pro/webhooks-and-notifications.md) section.


---

# 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.resmic.com/resmic-pro/payment-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.
