o5r / lemonway

5 stars 2 forks source link
lemonway mandate payment wallet

Lemonway SDK

Usage

Create a new wallet and credit it by card

var Lemonway = require('lemonway');

var lemonway = new Lemonway(login, pass, JSONEndpoint);

lemonway.Wallet.create(ip, {
  id: id,
  email: client.mail,
  firstName: client.firstName,
  lastName: client.lastName,
  birthdate: client.birthdate
}).then(function (wallet) {
  return wallet.moneyIn(ip, {
    amount: amount,
    cardNumber: client.cardNumber,
    cardCrypto: client.cardCrypto,
    cardDate: client.cardDate,
    autoCommission: true
  });
}).then(function (transaction) {
  ...
});

Get a wallet and credit it by card using 3D Secure

var Lemonway = require('lemonway');

var lemonway = new Lemonway(login, pass, JSONEndpoint);

lemonway.Wallet.get(req, walletId)
  .then(function (wallet) {
    return wallet.moneyIn3DInit(req, {
      amount: amount,
      cardNumber: client.cardNumber,
      cardCrypto: client.cardCrypto,
      cardDate: client.cardDate,
      autoCommission: true,
      returnUrl: 'https://your-service/your-return-path'
    });
}).spread(function (acs, transaction) {
  // redirect the client to acs.actionUrl
});

List input transactions

var Lemonway = require('lemonway');

var lemonway = new Lemonway(login, pass, JSONEndpoint);

lemonway.Transaction.list(req)
  .then(function (transactions) {
    ...
  });

Upload a KYC File

var Lemonway = require('lemonway');

var lemonway = new Lemonway(login, pass, JSONEndpoint, WebkitURL);

lemonway.Wallet.get(req, walletId)
  .then(function (wallet) {
    return wallet.uploadFile(req, {
      fileName: 'RIB.png',
      type: 'RIB',
      filePath: './test/wallet/RIB.png'
    });
  });

API

Lemonway(login, pass, JSONEndpoint, webKitUrl) -> lemonway

Create a new lemonway instance

arg type required description
login string true your lemonway login
pass string true your lemonway password
JSONEndpoint string true your lemonway JSON endpoint
webKitUrl string true your lemonway webkit Url

lemonway.Wallet.create(ip, opts) -> Promise<wallet>

Create a new Wallet and return a promise that resolve to the new wallet

arg type required description
opts object true
opts.id string true external id (must be unique)
opts.email string true client email address (must be unique)
opts.firstName string true client first name
opts.lastName string true client last name
opts.title string false client title (can be M, F, J or U)
opts.street string false
opts.postCode string false
opts.city string false client city of residence
opts.country string false client country of residence
opts.phoneNumber string false
opts.mobileNumber string false
opts.birthdate string false format DD/MM/YYYY
opts.isCompany bool false
opts.companyName string false
opts.companyWebsite string false
opts.companyDescription string false
opts.companyIdentificationNumber string false
opts.isDebtor string false
opts.nationality string false
opts.birthCity string false
opts.birthCountry string false
opts.payerOrBeneficiary bool false
opts.isOneTimeCustomer bool false

lemonway.Wallet.update(ip, wallet, opts) -> Promise<wallet>

Update a wallet and return a promise to the updated wallet

arg type required description
wallet Wallet or string true Can be a wallet instance or just a wallet id
opts object true
opts.email string true client email address
opts.firstName string true client first name
opts.lastName string true client last name
opts.title string false client title (can be M, F, J or U)
opts.street string false
opts.postCode string false
opts.city string false client city of residence
opts.country string false client country of residence
opts.phoneNumber string false
opts.mobileNumber string false
opts.birthdate string false format DD/MM/YYYY
opts.isCompany bool false
opts.companyName string false
opts.companyWebsite string false
opts.companyDescription string false
opts.companyIdentificationNumber string false
opts.isDebtor string false
opts.nationality string false
opts.birthCity string false
opts.birthCountry string false

lemonway.Wallet.get(ip, id) -> Promise<{ wallet, documents: [], ibans: [], sddMandates: [], creditCards: [] }>

Get a wallet and its attached data by id

arg type required description
id string true wallet id

lemonway.Wallet.list(ip, opts) -> Promise<[wallet]>

List wallet where amount changed after 'from'

arg type required description
opts.from date false default to 0

lemonway.Wallet.uploadFile(ip, wallet, opts) -> Promise<document>

Upload a KYC file to Lemonway

arg type required description
wallet id or wallet true a wallet or a wallet id
opts.fileName string true
opts.type string true the file type, can be ID from identity documents, PROOF_OF_ADDRESS, RIB or KBIS
opts.file string or buffer true a string of a base64 file content or a node buffer, optional if filePath is set
opts.filePath string true the path to the file to upload, optional if file is set

lemonway.Wallet.listKyc(ip, opts) -> Promise<[{wallet, documents: [document], ibans: [iban], sddMandates: [sddMandate]}]>

List kyc

arg type required description
ip string true origin ip
opts.from date false date to list from, default to 0

lemonway.Wallet.getWalletTransHistory(ip, wallet, opts) -> Promise<[transaction]>

List the wallet transaction history

arg type required description
opts.from date false date to list from, default to 0
opts.to date false date to list until, default to now

lemonway.Wallet.moneyIn(ip, wallet, opts) -> Promise<transaction>

Credit a wallet via credit card WITHOUT 3D secure

arg type required description
wallet id or wallet true a wallet or a wallet id
opts.cardNumber string true
opts.cardCrypto string true
opts.cardExpiration string true
opts.amount float true The amount to be credited
opts.commission float false The commission amount, default to 0
opts.autoCommission bool true
opts.isPreAuth bool false
opts.delayedDays int false
opts.token string false an optional id token

lemonway.Wallet.moneyIn3DInit(ip, wallet, opts) -> Promise<{acs, transaction}>

Credit a wallet via credit card with 3D secure

arg type required description
wallet id or wallet true a wallet or a wallet id
opts.cardNumber string true
opts.cardCrypto string true
opts.cardExpiration string true
opts.amount float true The amount to be credited
opts.commission float false The commission amount, default to 0
opts.autoCommission bool true
opts.token string false an optional id token
opts.returnUrl string true return URL after the Atos 3D secure process

lemonway.Transaction.moneyIn3DConfirm(ip, transaction, opts) -> Promise<{acs, transaction}>

Confirm a 3D secure payment process

arg type required description
transaction id or transaction true a transaction or a transaction id
opts.isPreAuth bool false
opts.delayedDays int false

lemonway.Transaction.moneyIn3DAuthenticate(ip, transaction) -> Promise<moneyIn>

Confirm that a transaction was done with 3D secure enabled

arg type required description
wallet id or wallet true a wallet or a wallet id
opts.isPreAuth bool false
opts.delayedDays int false

lemonway.Wallet.registerCard(ip, wallet, opts) -> Promise<card>

Attach a card to a wallet

arg type required description
wallet id or wallet true a wallet or a wallet id
opts.cardNumber string true
opts.cardCrypto string true
opts.cardExpiration string true

lemonway.Wallet.unregisterCard(ip, wallet, card) -> Promise<card>

Detach a card from wallet

arg type required description
wallet id or wallet true a wallet or a wallet id
card id or card true a card or a card id

lemonway.Wallet.moneyInWithCardId(ip, wallet, card, opts) -> Promise<transaction>

Credit a wallet via a registered card

arg type required description
wallet id or wallet true a wallet or a wallet id
card id or card true a card or a card id
opts.amount float true amount to credit
opts.commission float false
opts.message float false
opts.autoCommission bool true
opts.isPreAuth bool true
opts.delayedDays int false
opts.token string false

lemonway.Transaction.moneyInValidate(ip, transaction) -> Promise<transaction>

Validate a pre-auth transaction

arg type required description
transaction id or transaction true a transaction or a transaction id

lemonway.Wallet.registerSDDMandate(ip, wallet, opts) -> Promise<sddMandate>

Register a debit mandate

arg type required description
wallet id or wallet true a wallet or a wallet id
opts.holder string true the bank account holder
opts.bic string true BIC code
opts.iban string true
opts.isRecurring bool true
opts.street string false mandatory to sign a mandate
opts.postCode string false mandatory to sign a mandate
opts.city string false mandatory to sign a mandate
opts.country string false mandatory to sign a mandate
opts.mandateLanguage string false mandate language, can be 'fr', 'es' or 'de', default to 'fr'

lemonway.Wallet.unregisterSDDMandate(ip, wallet, mandate) -> Promise<sddMandate>

Unregister a mandate

arg type required description
wallet id or wallet true a wallet or a wallet id
mandate id or mandate true a mandate or a mandate id

lemonway.Wallet.signDocumentInit(ip, wallet, mandate, opts) -> Promise<{token, redirectUrl}>

Init a document signature, return a redirectUrl to which you should redirect you client

arg type required description
wallet id or wallet true a wallet or a wallet id
mandate id or mandate true a mandate or a mandate id
mobileNumber string true the client mobile number, is mandatory since the client will receive a confirmation code via SMS
returnUrl string true the client will be redirected to this URL in case of success
errorUrl string true the client will be redirected to this URL in case of failure

lemonway.Wallet.moneyInSddInit(ip, wallet, mandate, opts) -> Promise<transaction>

Credit a wallet via a previously signed sdd mandate

arg type required description
wallet id or wallet true a wallet or a wallet id
mandate id or mandate true a mandate or a mandate id
amount float true
commission float false
autoCommission bool true
collectionDate date false default to now

lemonway.Wallet.moneyInChequeInit(ip, wallet, opts) -> Promise<transaction>

Pre-register a cheque, you still have to send the document to Lemonway

arg type required description
wallet id or wallet true a wallet or a wallet id
amount float true
commission float false
autoCommission bool true

lemonway.Wallet.registerIBAN(ip, wallet, opts) -> Promise<iban>

Attach an iban to a wallet

arg type required description
wallet id or wallet true a wallet or a wallet id
holder string true iban holder
bic string false not mandatory if its a french iban
iban string true
dom1 string false
dom2 string false
comment string false

lemonway.Wallet.moneyOut(ip, wallet, iban, opts) -> Promise<transaction>

Attach an iban to a wallet

arg type required description
wallet id or wallet true a wallet or a wallet id
iban id or wallet true an iban or an iban id
amount float true
commission float false
autoCommission bool true
message string false

lemonway.Wallet.sendPayment(ip, fromWallet, toWallet, opts) -> Promise<transaction>

P2P payment, send a payment from a wallet to another wallet

arg type required description
fromWallet id or wallet true a wallet or a wallet id
toWallet id or wallet true a wallet or a wallet id
amount float true
message string false
scheduleDate date false
privateData string false additional data

lemonway.Transaction.get(ip, id, opts) -> Promise<transaction>

Get a transaction by id

arg type required description
id string true payment id
opts object true
opts.walletIp string true Client ip
opts.walletUa string false Client user agent

lemonway.Transaction.list(ip, opts) -> Promise<[transaction]>

lemonway.Transaction.list(ip, opts) -> Promise<[transaction]>

List input transaction

arg type required description
opts object false
opts.before date false
opts.after date false

lemonway.MoneyIn.get(ip, id, opts) -> Promise<moneyIn>

lemonway.MoneyIn.get(ip, id, opts) -> Promise<moneyIn>

Get a money in

arg type required description
id string true wallet id
opts object true
opts.walletIp string true Client ip
opts.walletUa string false Client user agent

lemonway.MoneyOut.get(ip, id, opts) -> Promise<moneyOut>

lemonway.MoneyOut.get(ip, id, opts) -> Promise<moneyOut>

Get a money out

arg type required description
id string true wallet id
opts object true
opts.walletIp string true Client ip
opts.walletUa string false Client user agent

lemonway.Wallet.list(ip, opts) -> Promise<[wallet, ...]>

lemonway.Wallet.list(ip, opts) -> Promise<[wallet, ...]>

List wallets

arg type required description
opts object true
opts.walletIp string true Client ip
opts.walletUa string false Client user agent

lemonway.Wallet.registerCard(ip, wallet, opts) -> Promise<card>

lemonway.Wallet.registerCard(ip, wallet, opts) -> Promise<card>

Register and link a card to a wallet

arg type required description
wallet Wallet or string true Can be a wallet instance or just a wallet id
opts object true
opts.walletIp string true Client ip
opts.walletUa string false Client user agent
opts.cardNumber string true
opts.cardCode string true
opts.cardDate string true

lemonway.Wallet.unregisterCard(ip, wallet, card, opts) -> Promise<card>

lemonway.Wallet.unregisterCard(ip, wallet, card, opts) -> Promise<card>

Unregister and link a card to a wallet

arg type required description
wallet Wallet or string true Can be a wallet instance or just a wallet id
card Card or string true Can be a card instance or just a card id
opts object true
opts.walletIp string true Client ip
opts.walletUa string false Client user agent

lemonway.getWizypayAds(ip, opts) -> Promise<[[wizypayOffer], [wizypayAd]]>

lemonway.getWizypayAds(ip, opts) -> Promise<[[wizypayOffer], [wizypayAd]]>

Get wizypay ads

arg type required description
opts object true
opts.walletIp string true Client ip
opts.walletUa string false Client user agent

Models

Wallet

ACS

Card

Document

IBAN

MoneyIn

SDDMandate

Transaction

VirtualCreditCard