# Callback/Report

{% hint style="info" %}
Pastikan menerima callback/report dari sidopulsa silahkan whitelist IP <mark style="color:green;">3.1.96.249</mark> di sitem anda.
{% endhint %}

Sistem sidopulsa akan mengirimkan **HTTP GET** ke url yang telah anda atur, ketika transaksi berubah status, dari `pending` ke `sukses` atau dari `pending` ke `gagal` dengan query params seperti dibawah.&#x20;

<table><thead><tr><th>Key</th><th width="91">Wajib</th><th>Description</th></tr></thead><tbody><tr><td>ref_id</td><td>Ya</td><td>Kode unik anda</td></tr><tr><td>product</td><td>Ya</td><td>Kode produk anda</td></tr><tr><td>status</td><td>Ya</td><td>Status transaksi <code>sukses</code> atau <code>gagal</code> </td></tr><tr><td>dest</td><td>Ya</td><td>Nomer tujuan</td></tr><tr><td>message</td><td>Ya</td><td>Deskripsi transaksi</td></tr><tr><td>sn</td><td>Tidak</td><td>Serial Number</td></tr><tr><td>rc</td><td>Ya</td><td>Respon Code</td></tr><tr><td>saldo_ahir</td><td>Ya</td><td>Sisa saldo anda</td></tr></tbody></table>

## Contoh

> <https://domainkamu.com/callback/sido.php?ref\\_id=\\[ref\\_id]\\&product=\\[product]\\&dest=\\[dest]\\&status=\\[status]\\&message=\\[message]\\&sn=\\[sn]\\&rc=\\[rc]\\&saldo\\_ahir=\\[saldo\\_ahir>]

## Tes Callback/Report

<mark style="color:blue;">`GET`</mark> `https://api.tukar.co.id/h2h/api/callback/ping`

**Parameter**

| Name       | Type   | Description   |
| ---------- | ------ | ------------- |
| `api_key`  | string | API key anda  |
| `api_user` | string | API user anda |

**Response Headers**

<table><thead><tr><th>Nama</th><th width="167">Wajib</th><th>Deskripsi</th></tr></thead><tbody><tr><td>X-Sido-Id</td><td><code>Ya</code></td><td>ID unik dari sistem sidopulsa</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="sukses" %}

```json
{
    "ping_id": "zordXStbhqfWpZV",
    "status": "sukses",
    "message": "HIT: https://urlcalbackkamu.com/callback RC: 200 WAKTU: 2021 Mei 01 11:56:49",
    "rc": "00"
}
```

{% endtab %}
{% endtabs %}

#### Data yang kami coba kirim ke url callback anda

| Nama         | Value                             |
| ------------ | --------------------------------- |
| `ref_id`     | `0000`                            |
| `product`    | `55555`                           |
| `dest`       | `99999`                           |
| `status`     | `sukses`                          |
| `message`    | `Ini tes callback dari sidopulsa` |
| `sn`         | `SN1234567890`                    |
| `rc`         | `00`                              |
| `saldo_ahir` | `10`                              |

## Contoh Menerima Callback PHP

```php
<?php
    if( ! empty( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ){
        $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
    }
    elseif( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ){
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }
    elseif( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ){
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else{
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    
    if($ip == '3.1.96.249'){
        file_put_contents("callback-sidopulsa.txt", json_encode($_GET));

        $ref_id     = isset($_GET['ref_id']) ? $_GET['ref_id'] : 0;
        $product    = isset($_GET['product']) ? $_GET['product'] : 0;
        $dest       = isset($_GET['dest']) ? $_GET['dest'] : 0;
        $status     = isset($_GET['status']) ? $_GET['status'] : 0;
        $message    = isset($_GET['message']) ? $_GET['message'] : 0;
        $sn         = isset($_GET['sn']) ? $_GET['sn'] : 0;
        $rc         = isset($_GET['rc']) ? $_GET['rc'] : 0;
        $saldo_ahir = isset($_GET['saldo_ahir']) ? $_GET['saldo_ahir'] : 0;

        echo'diterima';
    }else{
        echo'tidak diterima';
    }
```
