> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oneclickdz.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Créer un Lien de Paiement

> Crée un nouveau lien de paiement à usage unique pour le système de paiement OneClick (Navio)

## Vue d'ensemble

Créez un lien de paiement sécurisé et à usage unique avec des paramètres personnalisables. Idéal pour les commandes e-commerce, les paiements de services et les renouvellements d'abonnements.

<Warning>
  **Validation marchande requise** : Complétez la validation marchande sur [ https://app.oneclickdz.com/profile](https://app.oneclickdz.com/profile) avant d'utiliser cet endpoint.
</Warning>

## Corps de la requête

<ParamField body="productInfo" type="object" required>
  Détails du produit ou du service à payer

  <Expandable title="propriétés de productInfo">
    <ParamField body="title" type="string" required>
      Nom du produit/service (1 à 200 caractères) **Exemples :** - `"Premium Subscription"` - `"Web Design Services"` - `"Online Course Access"`
    </ParamField>

    <ParamField body="description" type="string">
      Description détaillée (max 1000 caractères). Prend en charge le markdown.
    </ParamField>

    <ParamField body="amount" type="number" required>
      Montant du paiement en DZD (500 - 500 000) **Exemples :** `5000`, `15000`, `50000`
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="feeMode" type="string" default="NO_FEE">
  Détermine qui paie les frais de retrait - `NO_FEE` - Le marchand paie tous les frais (par défaut) - `SPLIT_FEE` - Frais partagés 50/50 - `CUSTOMER_FEE` - Le client paie tous les frais
</ParamField>

<ParamField body="successMessage" type="string">
  Message de succès personnalisé (max 500 caractères) affiché après le paiement
</ParamField>

<ParamField body="redirectUrl" type="string">
  URL de redirection après un paiement réussi (doit être un HTTP/HTTPS valide)
</ParamField>

## Réponse

<ResponseField name="success" type="boolean">
  Indique si l'opération a réussi
</ResponseField>

<ResponseField name="data" type="object">
  Détails du lien de paiement

  <Expandable title="propriétés de data">
    <ResponseField name="paymentLink" type="object">
      Informations complètes du lien de paiement

      <Expandable title="propriétés de paymentLink">
        <ResponseField name="uid" type="string">
          Identifiant unique du marchand
        </ResponseField>

        <ResponseField name="ref" type="string">
          Code de référence du paiement (format : `OCPL-XXXXXX-YYYY`)
        </ResponseField>

        <ResponseField name="isSandbox" type="boolean">
          Si c'est un lien de paiement de test
        </ResponseField>

        <ResponseField name="productInfo" type="object">
          Informations du produit telles que soumises
        </ResponseField>

        <ResponseField name="feeMode" type="string">
          Mode de configuration des frais
        </ResponseField>

        <ResponseField name="successMessage" type="string">
          Message de succès personnalisé
        </ResponseField>

        <ResponseField name="redirectUrl" type="string">
          URL de redirection après paiement
        </ResponseField>

        <ResponseField name="time" type="string">
          Horodatage de création du lien (ISO 8601)
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="paymentUrl" type="string">
      **URL complète à partager avec les clients** pour le paiement
    </ResponseField>

    <ResponseField name="paymentRef" type="string">
      Code de référence du paiement - **SAUVEGARDEZ-LE** pour le suivi des paiements
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="meta" type="object">
  Métadonnées de la réponse

  <Expandable title="propriétés de meta">
    <ResponseField name="timestamp" type="string">
      Horodatage de la réponse (ISO 8601)
    </ResponseField>

    <ResponseField name="requestId" type="string">
      ID unique de la requête pour le support
    </ResponseField>
  </Expandable>
</ResponseField>

## Fonctionnalités clés

<CardGroup cols={2}>
  <Card title="Flexibilité des frais" icon="money-bill">
    Choisissez qui paie les frais de transaction - marchand, client ou partagé
  </Card>

  <Card title="Marque personnalisée" icon="palette">
    Messages de succès personnalisés et URL de redirection
  </Card>

  <Card title="Tests en sandbox" icon="flask">
    Testez votre intégration en toute sécurité avant la mise en production
  </Card>

  <Card title="Sécurité à usage unique" icon="shield-check">
    Chaque lien est à usage unique pour une sécurité renforcée
  </Card>
</CardGroup>

## Notes importantes

<Note>
  **Limites de montant :** - Minimum : 500 DZD - Maximum : 500 000 DZD - Doit être un nombre entier (pas de décimales)
</Note>

<Note>
  **Structure des frais :** - 0% si utilisation du solde OneClick - 1% de frais de retrait uniquement (configurable par transaction)
</Note>

<Note>
  **Expiration du lien :** Les liens de paiement expirent 20 minutes après la création si le paiement n'est pas initié
</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.oneclickdz.com/v3/ocpay/createLink \
    --header 'Content-Type: application/json' \
    --header 'X-Access-Token: YOUR_API_KEY' \
    --data '{
    "productInfo": {
      "title": "Premium Subscription",
      "description": "Monthly access to premium features",
      "amount": 5000
    },
    "feeMode": "NO_FEE",
    "successMessage": "Thank you for your purchase!",
    "redirectUrl": "https://yourstore.com/success?orderId=12345"
  }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.oneclickdz.com/v3/ocpay/createLink", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-Access-Token": "YOUR_API_KEY",
    },
    body: JSON.stringify({
      productInfo: {
        title: "Premium Subscription",
        description: "Monthly access to premium features",
        amount: 5000,
      },
      feeMode: "NO_FEE",
      successMessage: "Thank you for your purchase!",
      redirectUrl: "https://yourstore.com/success?orderId=12345",
    }),
  });

  const data = await response.json();
  console.log("Payment URL:", data.data.paymentUrl);
  console.log("Payment Ref:", data.data.paymentRef);
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.oneclickdz.com/v3/ocpay/createLink"
  headers = {
      "Content-Type": "application/json",
      "X-Access-Token": "YOUR_API_KEY"
  }
  payload = {
      "productInfo": {
          "title": "Premium Subscription",
          "description": "Monthly access to premium features",
          "amount": 5000
      },
      "feeMode": "NO_FEE",
      "successMessage": "Thank you for your purchase!",
      "redirectUrl": "https://yourstore.com/success?orderId=12345"
  }

  response = requests.post(url, json=payload, headers=headers)
  data = response.json()

  print(f"Payment URL: {data['data']['paymentUrl']}")
  print(f"Payment Ref: {data['data']['paymentRef']}")
  ```

  ```php PHP theme={null}
  <?php
  $url = 'https://api.oneclickdz.com/v3/ocpay/createLink';
  $headers = [
      'Content-Type: application/json',
      'X-Access-Token: YOUR_API_KEY'
  ];
  $payload = [
      'productInfo' => [
          'title' => 'Premium Subscription',
          'description' => 'Monthly access to premium features',
          'amount' => 5000
      ],
      'feeMode' => 'NO_FEE',
      'successMessage' => 'Thank you for your purchase!',
      'redirectUrl' => 'https://yourstore.com/success?orderId=12345'
  ];

  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));

  $response = curl_exec($ch);
  $data = json_decode($response, true);

  echo "Payment URL: " . $data['data']['paymentUrl'] . "\n";
  echo "Payment Ref: " . $data['data']['paymentRef'] . "\n";
  ?>
  ```
</RequestExample>

<ResponseExample>
  ```json Réponse de succès (200) theme={null}
  {
    "success": true,
    "data": {
      "paymentLink": {
        "uid": "user_123456789",
        "ref": "OCPL-A1B2C3-D4E5",
        "isSandbox": false,
        "productInfo": {
          "title": "Premium Subscription",
          "description": "Monthly access to premium features",
          "amount": 5000
        },
        "feeMode": "NO_FEE",
        "successMessage": "Thank you for your purchase!",
        "redirectUrl": "https://yourstore.com/success?orderId=12345",
        "time": "2025-01-15T10:30:00Z"
      },
      "paymentUrl": "https://pay.ocdz.link/pay/OCPL-A1B2C3-D4E5",
      "paymentRef": "OCPL-A1B2C3-D4E5"
    },
    "meta": {
      "timestamp": "2025-01-15T10:30:00Z",
      "requestId": "req_abc123xyz"
    }
  }
  ```
</ResponseExample>

## Étapes suivantes

<CardGroup cols={2}>
  <Card title="Vérifier le statut du paiement" icon="magnifying-glass" href="/fr/api-reference/ocpay/check-payment">
    Apprendre à vérifier le statut du paiement
  </Card>

  <Card title="Guide d'intégration" icon="book" href="/fr/ocpay-guides/overview">
    Guide complet d'intégration Navio
  </Card>
</CardGroup>
