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.src
h1
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:
id
foreignId
QuasiTransfer
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:
id
foreignId
const 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:
InitiateQuasiTransferForm
amount
AmountForm
currency
string
value
string
description
string | undefined
expire
string | undefined
<after><space><$number><$timeUnit>
<on><space><$iso8601Datetime>
never
FundRequest
, 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"
fees
FeesForm | undefined
payer
string
foreignData
string | undefined
foreignId
string | undefined
h1
H1DescriptorForm | undefined
en
string | undefined
fr
string | undefined
onFailure
OnQuasiTransferCompletedForm | undefined
redirectUserTo
string | undefined
onSuccess
OnQuasiTransferCompletedForm | undefined
redirectUserTo
string | undefined
source
SourceForm | undefined
SourceForm.MultipleSourceForm
MultipleSourceForm
SourceForm.SingleSourceForm
SingleSourceForm
account
MoneyAccountForm
country
string
identifier
string
id
du Wallet, du portefeuille FPayproviderKey
string
Voici 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 QuasiTransfer
avec 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:
id
foreignId
QuasiTransfer
identifiée par son id
vers le compte money de l'utilisateur spécifié.ReceiveQuasiTransferForm
destination
DestinationForm
DestinationForm.MultipleDestinationForm
MultipleDestinationForm
DestinationForm.SingleDestinationForm
SingleDestinationForm
account
MoneyAccountForm
country
string
identifier
string
providerKey
string
id
string
Voici 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:
id
foreignId
QuasiTransfer
: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.
QuasiTransfer
amount
Amount | undefined
currency
AmountCurrency
code
string
unit
string
value
number
completedTime
UTCDateTime | undefined
iso8601
string
timestamp
Timestamp
milliseconds
number
seconds
Double
createdTime
UTCDateTime
iso8601
string
timestamp
Timestamp
milliseconds
number
seconds
Double
creator
Creator
Creator.Api
Api
_type
string
accountId
string
authAccessId
string
Creator.Ui
Ui
_type
string
accountId
string
personId
string
description
string | undefined
destination
Destination | undefined
Destination.Multiple
Multiple
_type
string
Destination.Single
Single
_type
string
account
MoneyAccount
balanceType
string
identifier
MoneyAccountIdentifier
_type
string
value
string
id
du Wallet
FPay.man
du Wallet
FPay.provider
MoneyAccountProvider
country
Country
iso3166
Iso3166Country
alpha2
string
alpha3
string
name
string
key
string
name
string
amount
Amount
currency
AmountCurrency
code
string
unit
string
value
number
expire
Expire | undefined
delay
Duration
iso8601
string
milliseconds
Double
seconds
Double
time
UTCDateTime
iso8601
string
timestamp
Timestamp
milliseconds
number
seconds
Double
fees
Fees
amount
Amount
currency
AmountCurrency
code
string
unit
string
value
number
payer
string | undefined
value
FeesValue
fixe
number
percent
number
foreignData
string | undefined
foreignId
string | undefined
h1Descriptor
H1Descriptor | undefined
en
string | undefined
fr
string | undefined
id
string
onFailure
OnQuasiTransferCompleted | undefined
redirectUserTo
string | undefined
onSuccess
OnQuasiTransferCompleted | undefined
redirectUserTo
string | undefined
securePay
SecurePay
link
string
purpose
SecurePayPurpose
SecurePayPurpose.Purchase
Purchase
_type
string
label
string
SecurePayPurpose.Receive
Receive
_type
string
SecurePayPurpose.Send
Send
_type
string
qrCode
QrCode
src
string
sending
string
source
Source
Source.Multiple
Multiple
_type
string
Source.Single
Single
_type
string
account
MoneyAccount
balanceType
string
identifier
MoneyAccountIdentifier
_type
string
value
string
id
du Wallet
FPay.man
du Wallet
FPay.provider
MoneyAccountProvider
country
Country
iso3166
Iso3166Country
alpha2
string
alpha3
string
name
string
key
string
name
string
amount
Amount
currency
AmountCurrency
code
string
unit
string
value
number
status
QuasiTransferStatus
QuasiTransferStatus.Failure
Failure
_type
string
cancelled
Cancelled | undefined
afterTimeout
boolean
reason
LocalizedText
en
string
fr
string
QuasiTransferStatus.Processing
Processing
_type
string
reason
LocalizedText
en
string
fr
string
QuasiTransferStatus.Started
Started
_type
string
QuasiTransferStatus.Starting
Starting
_type
string
QuasiTransferStatus.Successful
Successful
_type
string
QuasiTransferStatus.WaitingToStart
WaitingToStart
_type
string
url
string