Normalement, un transfert est éffectué depuis un compte source vers un compte destination point. il n'y a normalement donc pas de concept de "Quasi".
Pour comprendre pourquoi nous avons inventé ce concept, restons toujours dans le contexte d'un transfert. Cet objet permet d'exprimer l'idée suivante : Je vous ai envoyé de l'argent, voici le lien où vous pourrez mettre votre numéro de téléphone peu importe l'opérateur pour recevoir cet argent.
On a donc un transfert quasiment terminé : Une fois que ce QuasiTransfert est initié, les fonds sont vérrouillés et restent en attente du destinataire qui devra spécifier le compte sur lequel il souhaite les recevoir. Voici quelques exemples de cas d'utilisations possibles d'un Quasi Transfert :
securePay.link et vous pourrez accéder à l'url pointant vers l'image du QRCode avec le champ securePay.qrCode.srch1 lors de la création de l'objet QuasiTransfer. Si vous ajoutez 2 langues, l'utilisateur pourra changer de langue et voir le message l'invitant à recevoir son argent dans sa langue native.
cancel Annule puis Retourne un objet QuasiTransfer identifié par un identifiant.
Vous avez la possibilité d'utiliser un ID unique propre à votre système. Pour utiliser votre propre ID au lieu de celui généré par FPay, vous devez préciser le champ foreignId lors de la création de cet objet. Ainsi, vous pourrez récupérer cet objet par le champ foreignId ainsi ajouté qui doit être unique pour tous les objets de type QuasiTransfer. Voici tous les champs dont les valeurs peuvent servir d'identifiant pour cette opération:
idforeignIdQuasiTransfer déja annulé, qui a réussi ou qui a échoué.const quasiTransferPromise = fPay.quasiTransfer.cancel("identifier");get Retourne un objet QuasiTransfer identifié par un identifiant.
Vous avez la possibilité d'utiliser un ID unique propre à votre système. Pour utiliser votre propre ID au lieu de celui généré par FPay, vous devez préciser le champ foreignId lors de la création de cet objet. Ainsi, vous pourrez récupérer cet objet par le champ foreignId ainsi ajouté qui doit être unique pour tous les objets de type QuasiTransfer. Voici tous les champs dont les valeurs peuvent servir d'identifiant pour cette opération:
idforeignIdconst quasiTransferPromise = fPay.quasiTransfer.get("identifier");initiate Initie une nouvelle opération de QuasiTransfer et retourne l'instance associée à cette opération.
Cette opération prend en entrée les paramètres suivants:
InitiateQuasiTransferFormamountAmountFormcurrencystringvaluestringdescriptionstring | undefinedexpirestring | undefined<after><space><$number><$timeUnit><on><space><$iso8601Datetime>neverFundRequest, La valeur never est la valeur par defaut si aucune valeur n'est précisée.QuasiTransfer, La valeur 24h est la valeur par defaut si aucune valeur n'est précisée."after 15m""after 90s""after 1h""after 2d""after 1w""on 2028-05-19T01:13Z""on 2028-05-19""on 15:30"feesFeesForm | undefinedpayerstringforeignDatastring | undefinedforeignIdstring | undefinedh1H1DescriptorForm | undefinedenstring | undefinedfrstring | undefinedonFailureOnQuasiTransferCompletedForm | undefinedredirectUserTostring | undefinedonSuccessOnQuasiTransferCompletedForm | undefinedredirectUserTostring | undefinedsourceSourceForm | undefinedSourceForm.MultipleSourceFormMultipleSourceFormSourceForm.SingleSourceFormSingleSourceFormaccountMoneyAccountFormcountrystringidentifierstringid du Wallet, du portefeuille FPayproviderKeystringVoici un exemple de code pour initier un QuasiTransfer:
const quasiTransferPromise =
fPay.quasiTransfer.initiate({
amount: {
currency: "XOF",
value: "10_000"
},
description: "My description",
expire: "after 12h",
fees: {
payer: "CounterPart"
},
foreignData: "{\"myKey\": 19, \"myOtherKey\": \"myOtherValue\"}",
foreignId: "123456789",
h1: {
en: "Payment description",
fr: "Description du paiement"
},
onFailure: {
redirectUserTo: "https://you-server.com/ui/failure"
},
onSuccess: {
redirectUserTo: "https://you-server.com/ui/success"
},
source: {
_type: "Single",
account: {
country: "CI",
identifier: "123456789",
providerKey: "FPay"
}
}
});list Retourne une collection d'objets QuasiTransfer éventuellement filtrée et/ou triée. Voici les paramètres supportés par cette opération.
| NOM | TYPE | DESCRIPTION | VALEUR PAR DÉFAUT |
|---|---|---|---|
filter | string | undefined | Condition que doit respecter tout objet qui sera retourné dans cette collection | |
sortBy | string | undefined | Spécification du champ ainsi que de l'ordre (ascendant ou descendant) par lesquels seront triés les objets retournés | |
limit | number | undefined | Nombre total de résultats à retourner dans cette collection | |
Voici quelques exemples de code pour éffectuer un listing afin de retourner une collection d'objets QuasiTransfer:
const quasiTransfersCollectionPromise = fPay.quasiTransfer.listAll();const quasiTransfersCollectionPromise =
fPay.quasiTransfer.list({
sortBy: "id:ASC"
});const quasiTransfersCollectionPromise =
fPay.quasiTransfer.list({
limit: 5
});const quasiTransfersCollectionPromise =
fPay.quasiTransfer.list({
filter: "id in {'31234', '5678', '9990'}"
});const quasiTransfersCollectionPromise =
fPay.quasiTransfer.list({
filter: "createdTime isBefore Yesterday",
sortBy: "foreignId:DESC"
});const quasiTransfersCollectionPromise =
fPay.quasiTransfer.list({
filter: "id startsWith abcd",
sortBy: "createdTime:ASC",
limit: 25
});fetchPage Lorsque vous récupérez une liste de QuasiTransfer, les résultats retournés par le serveur peuvent être paginés c'est dire que ces résultats seront disposés sur plusieurs pages. Cette fonction fetchPage permet de naviguer de page en page afin d'itérer sur tous les éléments. Par conséquent cette fonction retourne une collection de QuasiTransfer.
Imaginons que vous ayez récupéré une collection de QuasiTransferavec le code suivant:
const quasiTransfersCollectionPromise = fPay.quasiTransfer.listAll();Si jamais le resultat est disposé sur plusieurs pages, pour consulter la page suivante, vous devez faire:
quasiTransfersCollectionPromise.then(quasiTransferCollection => {
if(quasiTransferCollection.hasNextPage()) {
const nextQuasiTransferPromise = fPay.quasiTransfer.fetchPage(quasiTransferCollection.pagination.nextPage);
}
});receive Réceptione des fonds émis suite à un Quasi-Transfert identifié par un identifiant et retourne un Attempt symbolisant une tentative d'envoi de fonds vers le compte mobile money du destinataire.
Voici tous les champs dont les valeurs peuvent servir d'identifiant pour cette opération:
idforeignIdQuasiTransfer identifiée par son id vers le compte money de l'utilisateur spécifié.ReceiveQuasiTransferFormdestinationDestinationFormDestinationForm.MultipleDestinationFormMultipleDestinationFormDestinationForm.SingleDestinationFormSingleDestinationFormaccountMoneyAccountFormcountrystringidentifierstringproviderKeystringidstringVoici un exemple de code pour recevoir de l'argent avec un QuasiTransfer:
const attemptPromise =
fPay.quasiTransfer.receive({
destination: {
_type: "Single",
account: {
country: "CI",
identifier: "123456789",
providerKey: "FPay"
}
},
id: "123456789"
});update Modifie un objet QuasiTransfer et retourne la version modifiée de celui ci.
Voici tous les champs dont les valeurs peuvent servir d'identifiant pour cette opération:
idforeignIdQuasiTransfer:| NOM | TYPE | DESCRIPTION |
|---|---|---|
description | string | undefined | Peut être mis à Jour Peut être Supprimé |
foreignData | string | undefined | Peut être mis à Jour Peut être Supprimé |
Voici quelques exemples de code pour éffectuer une modification:
quasiTransferPromise =
fPay.quasiTransfer.update({
id: "<id | foreignId>",
change: {
description: "<new value>",
foreignData: "<new value>"
}
});quasiTransferPromise =
fPay.quasiTransfer.update({
id: "<id | foreignId>",
change: {
description: "<new value>"
},
'remove': ['foreignData']
});quasiTransferPromise =
fPay.quasiTransfer.update({
id: "<id | foreignId>",
'remove': ['description', 'foreignData']
});Lorsque vous récupérez une liste, voici les champs par lesquels il est possible de faire des filtres ainsi que des tris.
| NOM | TYPE | DESCRIPTION |
|---|---|---|
amount.currency.code | string | |
amount.value | number | |
completedTime | string | |
completedTime.iso8601 | string | |
completedTime.timestamp.milliseconds | number | |
completedTime.timestamp.seconds | number | |
createdTime | string | |
createdTime.iso8601 | string | |
createdTime.timestamp.milliseconds | number | |
createdTime.timestamp.seconds | number | |
creator | string | |
creator._type | string | |
creator.accountId | string | |
creator.authAccessId | string | |
creator.personId | string | |
description | string | |
destination | string | |
destination._type | string | |
destination.account.balanceType | string | |
destination.account.identifier._type | string | |
destination.account.identifier.value | string | |
destination.account.provider.country.iso3166.alpha2 | string | |
destination.account.provider.country.iso3166.alpha3 | string | |
destination.account.provider.country.name | string | |
destination.account.provider.key | string | |
destination.account.provider.name | string | |
destination.amount.currency.code | string | |
destination.amount.value | number | |
expire.delay | string | |
expire.time | string | |
expire.time.iso8601 | string | |
expire.time.timestamp.milliseconds | number | |
expire.time.timestamp.seconds | number | |
fees.amount.currency.code | string | |
fees.amount.value | number | |
fees.payer | string | |
fees.value.fixe | number | |
fees.value.percent | number | |
foreignId | string | |
h1Descriptor.en | string | |
h1Descriptor.fr | string | |
id | string | |
onFailure.redirectUserTo | string | |
onSuccess.redirectUserTo | string | |
securePay.link | string | |
securePay.purpose.label | string | |
securePay.qrCode.src | string | |
sending | string | |
source | string | |
source._type | string | |
source.account.balanceType | string | |
source.account.identifier._type | string | |
source.account.identifier.value | string | |
source.account.provider.country.iso3166.alpha2 | string | |
source.account.provider.country.iso3166.alpha3 | string | |
source.account.provider.country.name | string | |
source.account.provider.key | string | |
source.account.provider.name | string | |
source.amount.currency.code | string | |
source.amount.value | number | |
status | string | |
status._type | string | |
status.cancelled.afterTimeout | boolean | |
status.reason.en | string | |
status.reason.fr | string |
Des exemples de code sont disponibles sur la page Audit Reporting & Tableau de bord.
QuasiTransferamountAmount | undefinedcurrencyAmountCurrencycodestringunitstringvaluenumbercompletedTimeUTCDateTime | undefinediso8601stringtimestampTimestampmillisecondsnumbersecondsDoublecreatedTimeUTCDateTimeiso8601stringtimestampTimestampmillisecondsnumbersecondsDoublecreatorCreatorCreator.ApiApi_typestringaccountIdstringauthAccessIdstringCreator.UiUi_typestringaccountIdstringpersonIdstringdescriptionstring | undefineddestinationDestination | undefinedDestination.MultipleMultiple_typestringDestination.SingleSingle_typestringaccountMoneyAccountbalanceTypestringidentifierMoneyAccountIdentifier_typestringvaluestringid du Wallet FPay.man du Wallet FPay.providerMoneyAccountProvidercountryCountryiso3166Iso3166Countryalpha2stringalpha3stringnamestringkeystringnamestringamountAmountcurrencyAmountCurrencycodestringunitstringvaluenumberexpireExpire | undefineddelayDurationiso8601stringmillisecondsDoublesecondsDoubletimeUTCDateTimeiso8601stringtimestampTimestampmillisecondsnumbersecondsDoublefeesFeesamountAmountcurrencyAmountCurrencycodestringunitstringvaluenumberpayerstring | undefinedvalueFeesValuefixenumberpercentnumberforeignDatastring | undefinedforeignIdstring | undefinedh1DescriptorH1Descriptor | undefinedenstring | undefinedfrstring | undefinedidstringonFailureOnQuasiTransferCompleted | undefinedredirectUserTostring | undefinedonSuccessOnQuasiTransferCompleted | undefinedredirectUserTostring | undefinedsecurePaySecurePaylinkstringpurposeSecurePayPurposeSecurePayPurpose.PurchasePurchase_typestringlabelstringSecurePayPurpose.ReceiveReceive_typestringSecurePayPurpose.SendSend_typestringqrCodeQrCodesrcstringsendingstringsourceSourceSource.MultipleMultiple_typestringSource.SingleSingle_typestringaccountMoneyAccountbalanceTypestringidentifierMoneyAccountIdentifier_typestringvaluestringid du Wallet FPay.man du Wallet FPay.providerMoneyAccountProvidercountryCountryiso3166Iso3166Countryalpha2stringalpha3stringnamestringkeystringnamestringamountAmountcurrencyAmountCurrencycodestringunitstringvaluenumberstatusQuasiTransferStatusQuasiTransferStatus.FailureFailure_typestringcancelledCancelled | undefinedafterTimeoutbooleanreasonLocalizedTextenstringfrstringQuasiTransferStatus.ProcessingProcessing_typestringreasonLocalizedTextenstringfrstringQuasiTransferStatus.StartedStarted_typestringQuasiTransferStatus.StartingStarting_typestringQuasiTransferStatus.SuccessfulSuccessful_typestringQuasiTransferStatus.WaitingToStartWaitingToStart_typestringurlstring