2.0.3 • Published 5 months ago

@2dservices/diamano-pay-lib v2.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
5 months ago

Diamano pay lib

Cette librairie a pour objectif de simplifier l'accès à la plateforme de paiement Diamano pay.

Que contient cette librairie ?

  • La partie API

    • Demande de paiement orange money OneStep.
    • Demande de paiement orange money avec QR CODE.
    • Demande de paiement wave avec QR CODE.
    • Récupération d'un token de paiement avec Stripe pour les cartes bancaires.
    • Remboursement d'une transaction.
    • Exécution d'un paiement sortant (payout) avec intermédiaire.
    • Exécution d'un paiement sortant (payout) vers deux bénéficiaires.
    • Exécution d'un paiement sortant (payout).
  • La partie Page de paiement diamano pay

    • Permet d'obtenir un lien de paiement de diamano pay.

Installation

  npm i @2dservices/diamano-pay-lib

Exemple d'utilisation

import { DiamanoPayAPI } from '@2dservices/diamano-pay-lib';
import { Api } from '@2dservices/diamano-pay-lib/api';
import { Page } from '@2dservices/diamano-pay-lib/page';
import {
  CardPaymentRequestBody,
  OneStepPaymentRequestBodyDto,
  PaymentTokenBody,
  PayoutRequestBody,
  PayoutWithIntermediaryRequestBody,
  PayoutToTwoBeneficiariesRequestBody,
  QrCodePaymentRequestBody,
} from '@2dservices/diamano-pay-lib/type';

class Example {
  private clientId = process.env.CLIENT_ID;
  private clientSecret = process.env.CLIENT_SECRET;
  private token = process.env.TOKEN;
  private api: Api;
  private page: Page;
  constructor() {
    this.init();
  }
  private async init() {
    // Initialisation
    const diamanoPayAPI = await DiamanoPayAPI.init(
      this.clientSecret,
      this.clientId
    );
    // Oubien avec un token
    const diamanoPayAPIWithToken = await DiamanoPayAPI.initWithToken(this.token);
    // Création d'un instance Api
    this.api = diamanoPayAPI.newApi();
    // Création d'un instance Page
    this.page = diamanoPayAPI.newPage();
  }

  async payByOrangeMoneyOneStep() {
    const body: OneStepPaymentRequestBodyDto = {
      amount: 1000,
      customerId: '7761234567',
      description: "Achat d'un chargeur",
      otp: '123456', // généré en composant #144#391*Code# ou en sandbox en utilisant l'application mobile de diamanopay pour faire des tests
    };
    const res = await this.api.payByOrangeMoneyOneStep(body);
    console.log(res);
    return res;
  }
  async payByOrangeMoneyQrCode() {
    const body: QrCodePaymentRequestBody = {
      amount: 1000,
      description: "Achat d'un chargeur",
      callbackCancelUrl: 'https://www.maboutique.sn?cancel=true', // url de retour après annulation du client
      callbackSuccessUrl: 'https://www.maboutique.sn?success=ok', // url de retour après paiement
      extraData: { idClient: '123456' }, // data qui sera retourné durant l'appel du webhook, ce champ est optionel
      webhook: 'https://www.maboutique.sn/callback', // url vers la quelle diamano pay va notifier le status de la transaction, ce champ est optionel, s'il n'est pas renseigné, c'est l'url configurée dans l'application qui sera utilisée
    };
    const res = await this.api.payByOrangeMoneyQrCode(body);
    console.log(res);
    return res;
  }
  async payByWaveQrCode() {
    const body: QrCodePaymentRequestBody = {
      amount: 1000,
      description: "Achat d'un chargeur",
      callbackCancelUrl: 'https://www.maboutique.sn?cancel=true', // url de retour après annulation du client
      callbackSuccessUrl: 'https://www.maboutique.sn?success=ok', // url de retour après paiement
      extraData: { idClient: '123456' }, // data qui sera retourné durant l'appel du webhook, ce champ est optionel
      webhook: 'https://www.maboutique.sn/callback', // url vers la quelle diamano pay va notifier le status de la transaction, ce champ est optionel, s'il n'est pas renseigné, c'est l'url configurée dans l'application qui sera utilisée
    };
    const res = await this.api.payByWaveQrCode(body);
    console.log(res);
    return res;
  }
  async getStripeClientSecret() {
    const body: CardPaymentRequestBody = {
      amount: 1000,
      description: "Achat d'un chargeur",
      callbackCancelUrl: 'https://www.maboutique.sn?cancel=true', // url de retour après annulation du client
      callbackSuccessUrl: 'https://www.maboutique.sn?success=ok', // url de retour après paiement
      extraData: { idClient: '123456' }, // data qui sera retourné durant l'appel du webhook, ce champ est optionel
      webhook: 'https://www.maboutique.sn/callback', // url vers la quelle diamano pay va notifier le status de la transaction, ce champ est optionel, s'il n'est pas renseigné, c'est l'url configurée dans l'application qui sera utilisée
    };
    const res = await this.api.getStripeClientSecret(body);
    console.log(res);
    return res;
  }

  async getPaymentPage() {
    const body: PaymentTokenBody = {
      amount: 1000,
      description: "Achat d'un chargeur",
      callbackCancelUrl: 'https://www.maboutique.sn?cancel=true', // url de retour après annulation du client
      callbackSuccessUrl: 'https://www.maboutique.sn?success=ok', // url de retour après paiement
      extraData: { idClient: '123456' }, // data qui sera retourné durant l'appel du webhook, ce champ est optionel
      webhook: 'https://www.maboutique.sn/callback', // url vers la quelle diamano pay va notifier le status de la transaction, ce champ est optionel, s'il n'est pas renseigné, c'est l'url configurée dans l'application qui sera utilisée
    };
    const res = await this.page.getPaymentToken(body);
    console.log(res);
    return res;
  }

  async refundTransaction() {
    const transactionId = 'ID_DE_LA_TRANSACTION_A_REMBOURSER'; // Remplacez par un ID de transaction réel
    const res = await this.api.refund(transactionId);
    console.log(res); // Devrait être true si le remboursement a réussi
    return res;
  }

  async makePayout() {
    const transactionId = 'ID_DE_TRANSACTION_POUR_PAYOUT'; // Remplacez par un ID de transaction réel pour le payout
    const body: PayoutRequestBody = {
      waveMobile: '+221771234567', // il faut include l'indicatif pour wave
      orangeMoneyMobile: '771234567',
      name: 'Nom du bénéficiaire',
    };
    const res = await this.api.payout(transactionId, body);
    console.log(res); // Devrait être true si le payout a réussi
    return res;
  }

  async makePayoutWithIntermediary() {
    const transactionId = 'ID_DE_TRANSACTION_POUR_PAYOUT_INTERMEDIAIRE'; // Remplacez par un ID de transaction réel
    const body: PayoutWithIntermediaryRequestBody = {
      mainWaveMobile: '+221771234567', // Indicatif pays requis pour Wave
      mainName: 'Nom du bénéficiaire principal',
      intermediaryPercentage: 10, // Pourcentage pour l'intermédiaire (ex: 10 pour 10%)
      intermediaryWaveMobile: '+221761234567', // Indicatif pays requis pour Wave
      intermediaryName: 'Nom de l\'intermédiaire',
      // Vous pouvez également spécifier mainOrangeMoneyMobile et intermediaryOrangeMoneyMobile si besoin
    };
    const res = await this.api.payoutWithIntermediary(transactionId, body);
    console.log(res); // Devrait être true si le payout avec intermédiaire a réussi
    return res;
  }

  async makePayoutToTwoBeneficiaries() {
    const transactionId = 'ID_DE_TRANSACTION_POUR_PAYOUT_DEUX_BENEFICIAIRES'; // Remplacez par un ID de transaction réel
    const body: PayoutToTwoBeneficiariesRequestBody = {
      beneficiary1WaveMobile: '+221771111111', // Indicatif pays requis pour Wave
      beneficiary1Name: 'Nom du bénéficiaire 1',
      beneficiary1Percentage: 60, // Pourcentage pour le bénéficiaire 1 (ex: 60 pour 60%)
      beneficiary2OrangeMoneyMobile: '772222222',
      beneficiary2Name: 'Nom du bénéficiaire 2',
      beneficiary2Percentage: 40, // Pourcentage pour le bénéficiaire 2 (ex: 40 pour 40%)
      // Assurez-vous que la somme des pourcentages est égale à 100
    };
    const res = await this.api.payoutToTwoBeneficiaries(transactionId, body);
    console.log(res); // Devrait être true si le payout vers deux bénéficiaires a réussi
    return res;
  }
}
2.0.3

5 months ago

2.0.2

5 months ago

2.0.1

5 months ago

2.0.0

1 year ago

1.1.9

2 years ago

1.1.8

2 years ago

1.1.7

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.1

2 years ago

1.1.2

2 years ago

1.1.0

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.8-SNAPSHOT

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago