# API Opérateur Eligible Data

L' API est appelée par l'url "*<mark style="color:red;">**<https://mactopup.com/api/data\\_bundles\\_operator>**</mark>*" stocké dans la variable  *$base\_url*&#x20;

Cette API permet de détecter les opérateurs réseaux qui offrent des services internet en local et  à l'international.

````
```php
<?php

$base_url  = "https://mactopup.com/api/data_bundles_operator";


$fields = array(
    
    "phone" => "44xxxxxxxx", // à remplacer par le numero de téléphone
    "isocode" => "GB", // à remplacer par l'iso code de votre pays
    "token" => "MACTOPUP_xxxxxxxxxxxxxxxxx", // à remplacer par votre token
    
);

$curl_options = array(
    CURLOPT_URL => $base_url,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query( $fields ),
    CURLOPT_HTTP_VERSION => 1.0,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => false
);

$curl = curl_init();
curl_setopt_array( $curl, $curl_options );
$result = curl_exec( $curl );

curl_close( $curl );
$response = json_decode($result);

echo "<pre>";
var_dump($response);
echo "</pre>";

?>
```
````

Remplacez les valeurs des champ "phone", "isocode" et "token" dans le tableau ***$fields*** par les informations spécifiques à votre cas.

L'API retourne des résultats en fonction du statut d'éligibilité des opérateurs dans le cadre d'activation forfait internet de l'opérateur.

En effet, deux différentes réponses API sont retournées  avec le statut *<mark style="color:green;">**200**</mark>*  dans le :

*<mark style="color:orange;">**Case1:**</mark>* L'opérateur ne fournit pas de forfait internet international mais suggère la recharge temps d'antenne.

*<mark style="color:orange;">**Case2:**</mark>* L'operateur fournit de forfait internet.

Vous pouvez facilement identifier ces opérateurs  réseaux après la réponse API avec l'attribut  *<mark style="color:blue;">provide\_data\_bundles</mark>* qui devient *<mark style="color:green;">**True**</mark>* si l'operateur est éligible forfait internet ou *<mark style="color:red;">**False**</mark>* pour le cas contraire.

#### Réponse API  Case 1:   Status <mark style="color:green;">Success</mark>  (<mark style="color:green;">200</mark>)

<pre><code>{"success":

{

"operatorId":<a data-footnote-ref href="#user-content-fn-1">535</a>,

"provide_data_bundles": False,

"suggested_topup": "Airtime",

"name":"EE PIN England",

"name_iso":"GB",

"pays":"England",

"network_logo_url":"https:\/\/s3.amazonaws.com\/rld-operator\/d6a80dc7-f243-47e3-9aa3-3add62238a69-size-2.png",

"min_price":330,

"max_price":50600,

"Fixed_price":[],

"currency":"XOF",

"fees_transaction_percent":"0.015"

}

}
</code></pre>

#### Réponse API  Case 2:   Status <mark style="color:green;">Success</mark>  (<mark style="color:green;">200</mark>)

```
{"success":

{

"operatorId":496,

"provide_data_bundles": True,

"Topup_in_progress": "Data_bundles",

"name":"DTAC Thailand",

"name_iso":"TH",

"pays":"Thailand",

"network_logo_url":"https://s3.amazonaws.com/rld-operator/e3dc3be2-07bc-422d-8e0b-27ff9e1d6829-size-1.png",

 "data_bundles_packages": {
        "data1": {
            "amount": 5137,79,
            "plan_data_bundles": "15 GB Max Speed",
            "date_expiration": "8 days"
        },
        "data2": {
            "amount": 10292,75,
            "plan_data_bundles": "30 GB Max Speed",
            "date_expiration": "15 days"
        },
        "data3": {
            "amount": 24692,63,
            "plan_data_bundles": "75 GB Max Speed",
            "date_expiration": "15 days"
        },
        
        ....
    },

"currency":"XOF",

"fees_transaction_percent":"0.016"

}

}
```

*<mark style="color:red;">**Remarque:**</mark>* Ces réponses API ne sont pas retournées simultanément, vous obtenez l'un ou l'autre selon l'opérateur réseau et ses offres.

#### *Quelques erreurs*

```php
TOKEN_IS_REQUIRED
```

Cette erreur est retournée avec le  status *<mark style="color:red;">**422**</mark>* lorsque la requête est formulée avec le champ token ***vide***

```php
INVALID_ACCOUNT ou SUSPENDED_ACCOUNT

```

Cette erreur es associé au status code *<mark style="color:red;">**403**</mark>*

Votre compte est invalide ou inactif en cas d'inactivité pendant une longue période.

```php
ERROR_ACCOUNT_DISABLED
```

Status code : *<mark style="color:red;">**403**</mark>*

Une erreur interne au serveur ou une maintenance

```php
PHONE_NUMBER_REQUIRED ou COUNTRY_CODE_REQUIRED
```

Status code: *<mark style="color:red;">**400**</mark>*

Ces erreurs indiquent spécifiquement que vous envoyez au serveur une requête avec le champ numéro de téléphone vide ou le champ Iso code pays est vide.

```php
TOKEN_INVALID
```

Status code: *<mark style="color:red;">**401**</mark>*

Cette erreur s'affiche lorsque votre token ne correspond pas simplement à celui généré dans votre tableau de bord.

```php
NOT_ELIGIBLE
```

Staus code: *<mark style="color:red;">**422**</mark>*

Cette signifie que l'opérateur réseau associé au  numéro mobile entré ne propose pas de forfait ni de airtime à travers cet API

```php
OPERATOR_NOT_IN_SERVICE
```

Status code: *<mark style="color:red;">**422**</mark>*

Cela veut dire que l'opérateur n'est en service actuellement, ça peut être du à une opération de maintenance initié par l'operateur concerné.

```php
OPERATOR_UNAVAILABLE_OR_CURRENTLY
```

Status code: *<mark style="color:red;">**422**</mark>*

L'opérateur ne fais pas parti de notre service réseau.

```php
COULD_NOT_AUTO_DETECT_OPERATOR
```

Status code : *<mark style="color:red;">**422**</mark>*

Cette erreur indique que le système n'arrive pas à détecter votre opérateur. Cela arrive généralement quand un numéro est mal formaté ou quand vous entrer le numéro d'une ligne fixe.

```php
INTERNAL_ERROR_UNABLE_TO_DETECT
```

Status code: *<mark style="color:red;">**500**</mark>*

Une erreur interne du serveur, la détection de l'opérateur a échoué

```php
METHOD_NOT_ALLOWED
```

Code erreur : <mark style="color:red;">**405**</mark>

Cette erreur survient lorsque vous essayez d'accéder à l'API directement via  le lien: *<mark style="color:red;">**<https://mactopup.com/api/data\\_bundles\\_operator>**</mark>*  sans soumettre une requête ***POST***

[^1]:
