# Introduction 
This is a Typescript/javascript library that enable a single unified integration for collecting payments. 

# Getting Started
1.	Installation process
Use: npm i bluetime-ewallet

2.	Version history
1.0.1 - Including a pre-release for bank payments
1.0.1-beta.3 
Added ApplePay version compatibility of Safari.
Initial BankPay implememtation.

1.0.1-beta.4
Change APPLE_JS_VERSION to 12.

1.0.1-beta.5
Initial support for bank paument: Europe open banking and USA ACH.
Expose the eWallet provider name used.

1.0.1-beta.6
Initial support for Credit card payments.
Fixes to Apple Pay.

1.0.1-beta.7
Complete support for Credit card payments.
Fixed tokenization results parsing.

1.0.1-beta.8
Support i18n.

1.0.1-beta.9
Support i18n fixes.

1.0.1-beta.10
Fix parsing results (Tokenization/Charge).

1.0.1-beta.11
Fix ApplePay session completion reporting.

1.0.1-beta.12
Packaging and publish revision.
Ignore ApplePay exception.

1.0.1-beta.13
Support 20 languages.
Support 3d secure in Card Pay.

1.0.1-beta.14
Support branding of popup windows.

1.0.1-beta.15
Expose 3ds data after tokenization.

1.0.2-beta.0
Support Charge + Tokenize.
Support unified result token.

1.0.2-beta.1
Accept 3ds results from CardEntry page

1.0.2-beta.2
Fixed bug in accepting 3ds results from CardEntry page

1.0.2-beta.3
Extended the returned model (EWalletResultData) with 2 additional properties, to include client-side errors.
        /** Indicates whether client operation was successfu */
        clientSuccess!: boolean;

        /** In case client operation was unsuccessful */
        clientErrorMessage: any;

The engine.parseResultToken supports the new structure.

1.0.2-beta.4
Fix ApplePay session validation returned data.

1.0.2-beta.5
Added logging in checkAvailability().

1.0.2-beta.6
Added logging in factory.

1.0.3-beta.0
Avoid usage of static class names, to allow minification.

1.0.3-beta.1
Bug fix in handling closed popup window returned message.

1.0.3-beta.2
Support PREAUTH_AND_TOKENIZE operation.

1.0.3-beta.3
Prevent popup window in card entry from closing in test mode.
Added exception handling in cardpay operation.

1.0.3-beta.4
Fix result token parsing.

1.0.3-beta.5
Disable popup window closing disablement from 1.0.3-beta.3.

1.0.3-beta.6
Fix popup window closing in CardPay.

1.0.3-beta.7
Added a formal status to ClientPaymentDataResults class.
Apple Pay user cancellation returned to caller.

1.0.4
Fix parsing of EWalletChargeResults.

1.0.5-beta.0
Update npm packages, including payTools-3ds with CyberSource support.

1.0.5-beta.1
Update payTools-3ds.

1.0.6-beta.0
Upi implementation.

1.0.6-beta.1
Otp implementation (Html).

3.	Quick Guide

Initialize eWallet engine
-------------------------
const engine = new eWallet.Engine(eWalletToken, requiredAncillaryInfo, [language]);

Parameters
----------
sessionToken - Token obtained from the Orchestra or Shield service
requiredAncillaryInfo - billing/shipping address requirements (applicable on most eWallets)


Detect available eWallets
-------------------------
const available = engine.checkAvailability();
Will obtain the list of eWallets available on the specific device and browser.


Start a payment session
-----------------------
engine.payBy(eWalletList, callback, buttonProperties);
Start payment process using specified list of eWallet providers and their respective button properties.
Parameters
----------
eWalletList list of requested eWallet providers and their respective button properties.
callback a callback handler that will be called once the payment operation is complete
buttonProperties [optional] Button properties


Obtaining results
-----------------
You may use the following methods in order to get data on the current session.
getSessionType();
parseResultToken();
getBillingInfo();
getShippingInfo();

# Build and Test
In order to use the library, you will need to have an account with Orchestra. Use https://bluetime.io/ to sign up.
Follow the API documentation at https://developers.bluetime.io/reference/welcome in order to obtain a session token.