Enterprise SDK Integration Guide

Integrate the InfyClick Offerwall SDK into your mobile apps, games, and websites. Monetize your users with high-converting offers from global advertisers.

Platform Overview

1. Integrate SDK

Add 2 lines of code to your app

2. Users Complete Offers

Installs, surveys, registrations

3. Receive Rewards

S2S callbacks with signatures

InfyClick is a server-side offerwall platform. Your users interact with offers inside your app. We handle all advertiser relationships, tracking, fraud prevention, and reward delivery. You simply receive a secure server-to-server callback every time a user earns a reward.

Authentication

All SDK and API requests are authenticated using your unique App Key. Find your App Key in the Publisher Dashboard.

HTTP Header
X-InfyClick-App-Key: apk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Security: Never expose your App Secret or Postback Secret in client-side code. The App Key is safe to embed in SDKs; the Postback Secret should only exist on your server.

Android SDK

Gradle Dependency

implementation 'com.infyclick:sdk:1.4.2'

Initialize

import com.infyclick.sdk.InfyClick;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Initialize with your App Key and user ID
        InfyClick.init(this, "YOUR_APP_KEY", "USER_ID");

        // Show offerwall
        InfyClick.showOfferwall(this);
    }
}

Reward Listener

InfyClick.setRewardListener(new InfyClick.RewardListener() {
    @Override
    public void onReward(String transactionId, double amount, String currency) {
        // Credits are delivered via S2S callback to your server.
        // This listener is for real-time UI updates only.
        Toast.makeText(context, "+" + amount + " " + currency, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onRewardReversed(String transactionId, double amount, String reason) {
        // Handle reversal (e.g., user refunded, fraud detected)
        Toast.makeText(context, "Reward reversed: " + reason, Toast.LENGTH_LONG).show();
    }
});

iOS SDK

Swift Package Manager

https://github.com/infyclick/ios-sdk.git

Swift Integration

import InfyClickSDK

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        // Initialize
        InfyClick.configure(appKey: "YOUR_APP_KEY", userId: "USER_ID")

        // Present offerwall
        InfyClick.presentOfferwall(from: self)
    }
}

Reward Delegate

class RewardHandler: InfyClickRewardDelegate {
    func didReceiveReward(transactionId: String, amount: Double, currency: String) {
        // Update UI; actual credit happens via your server callback
    }

    func didReceiveReversal(transactionId: String, amount: Double, reason: String) {
        // Handle advertiser chargeback or fraud reversal
    }
}

Unity SDK

Import Package

Download the UnityPackage from your Publisher Dashboard and import into Assets.

C# Integration

using InfyClick;

public class OfferwallManager : MonoBehaviour
{
    void Start()
    {
        InfyClickSDK.Initialize("YOUR_APP_KEY", "USER_ID");
        InfyClickSDK.OnReward += (transactionId, amount, currency) => {
            Debug.Log($"Reward: {amount} {currency}");
        };
        InfyClickSDK.OnRewardReversed += (transactionId, amount, reason) => {
            Debug.Log($"Reversed: {amount} - {reason}");
        };
    }

    public void ShowOfferwall()
    {
        InfyClickSDK.ShowOfferwall();
    }
}

Web / iframe Integration

HTML iframe

<iframe
    src="https://infyclick.com/api/offerwall/YOUR_APP_KEY?uid=USER_ID"
    width="100%"
    height="800"
    style="border:none;border-radius:12px;"
    allow="fullscreen"
></iframe>

JavaScript SDK

<script src="https://infyclick.com/sdk/infyclick-web-sdk.js"></script>
<script>
    InfyClick.init({
        appKey: 'YOUR_APP_KEY',
        userId: 'USER_ID',
        container: '#offerwall-container'
    });

    // Listen for reward events for UI updates
    InfyClick.on('reward', function(data) {
        console.log('Reward:', data.amount, data.currency);
    });

    InfyClick.showOfferwall();
</script>

Responsive: The iframe and Web SDK automatically adapt to mobile, tablet, and desktop viewports. Dark/light theme is configurable per app.

REST API

Use the REST API for custom integrations or server-side offer fetching.

Get Offers

GET /api/offers
curl -H "X-InfyClick-App-Key: YOUR_APP_KEY" \
     "https://infyclick.com/api/offers?user_id=USER_ID&country=US&device=android"

Response

{
  "offers": [
    {
      "id": 12345,
      "name": "Install MyApp",
      "description": "Install and open the app",
      "reward_amount": 250,
      "reward_currency": "coins",
      "payout": 0.42,
      "type": "cpi",
      "category": "install",
      "icon_url": "https://infyclick.com/icons/12345.png",
      "epc": 0.35,
      "conversion_rate": 12.5,
      "difficulty": "easy",
      "estimated_time": "1-3 min",
      "devices": ["android", "ios"],
      "countries": ["US", "CA", "GB"],
      "daily_remaining": 47,
      "total_remaining": 982,
      "tracking_url": "https://infyclick.com/api/offerwall/click?offer_id=12345&..."
    }
  ]
}

Track Click

GET /api/offerwall/click
curl -H "X-InfyClick-App-Key: YOUR_APP_KEY" \
     "https://infyclick.com/api/offerwall/click?offer_id=12345&user_id=USER_ID&device_id=DEVICE_ID"

Response

{
  "success": true,
  "transaction_id": "tx_a3f7b2c8d9e1f4a5b6c7d8e9f0a1b2c3",
  "click_id": "clk_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "redirect_url": "https://adnetwork.com/offer?subid=USER_ID&..."
}

Get User Balance

GET /api/offerwall/balance
curl -H "X-InfyClick-App-Key: YOUR_APP_KEY" \
     "https://infyclick.com/api/offerwall/balance?user_id=USER_ID"

Server-to-Server (S2S) Callbacks

When a user completes an offer, InfyClick sends an HTTP POST request to your configured callback URL. Configure your callback URL in the Integration Settings.

Callback URL

POST https://yourgame.com/api/infyclick/callback

POST Parameters

ParameterTypeDescription
user_idstringYour user's unique ID
offer_idintOffer ID
offer_namestringHuman-readable offer name
transaction_idstringUnique transaction ID
reward_amountfloatAmount to credit
reward_currencystringYour configured currency
payoutfloatPayout in USD
statusstringapproved, reversed, pending
timestampstringISO 8601 timestamp
signaturestringHMAC-SHA256 signature

Signature Verification

$expected = hash_hmac('sha256',
    http_build_query($params_without_signature),
    $YOUR_POSTBACK_SECRET
);

if (!hash_equals($expected, $_POST['signature'])) {
    http_response_code(403);
    exit('Invalid signature');
}

Response Requirements

Your server must return HTTP 200 with body OK. Any other response triggers an automatic retry with exponential backoff.

HTTP/1.1 200 OK
Content-Type: text/plain

OK

Webhooks

Webhooks are push notifications for events beyond conversions, such as app approvals, balance updates, and fraud alerts.

Event Types

EventDescription
conversion.completedUser completed an offer
conversion.reversedAdvertiser reversed a conversion
app.approvedYour app was approved
fraud.detectedSuspicious activity flagged
publisher.verifiedAccount verification approved

Webhook Payload

{
  "event": "conversion.completed",
  "timestamp": "2026-05-08T14:30:00Z",
  "data": {
    "user_id": "12345",
    "offer_id": 67890,
    "transaction_id": "tx_...",
    "reward_amount": 250,
    "currency": "coins"
  },
  "signature": "hmac_sha256_signature"
}

Security Best Practices

1. Signature Verification

Always verify the HMAC-SHA256 signature on every callback. Reject any request with an invalid signature immediately.

2. Duplicate Prevention

Store processed transaction_id values in your database. Return OK for duplicates to prevent retry storms.

3. Replay Attack Prevention

Reject callbacks with timestamps older than 5 minutes or from the future. Use timestamp + transaction_id as a nonce.

4. HTTPS Only

Configure an HTTPS callback URL. HTTP callbacks are rejected by the platform for security reasons.

5. IP Whitelist

Optionally whitelist InfyClick callback IPs: 34.69.179.33, 35.184.0.0/16.

Error Handling

HTTP CodeMeaningAction
200SuccessRequest processed successfully
400Bad RequestCheck request parameters
403ForbiddenInvalid signature or IP
404Not FoundOffer or app does not exist
429Rate LimitedSlow down requests
500Server ErrorRetry with backoff

Retry Schedule

Failed callbacks are retried with exponential backoff: 1 min, 5 min, 30 min. After 3 failures, the callback is marked as failed and logged for manual review.

Need help? Contact our integration team at support@infyclick.com.