KonnectedPay Cordova Plugin
Installation
-
Install this plugin using the Cordova command line tools:
cordova plugin add cordova-plugin-konnectedpay
-
On any page where you want to use the .getTokens()
method, configure the
Content Security Policy by adding the directive
connect-src https://*.appxtream.com
to the Content-Security-Policy
META
tag, e.g.
<meta
http-equiv="Content-Security-Policy"
content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src https://*.appxtream.com"
/>
Android
On Android, a few more steps are required:
Usage
Requesting Payment
Requesting payment with payment form page:
konnectedpay.requestPayment(
{
merchantId: "your konnectedpay merchant id",
clientSecret: "your konnectedpay client secret",
amount: 1234.56,
transId: "your unique transaction id",
currencyCode: "MYR",
fullName: "payer's full name",
email: "payer's email address",
userId: "your internal user ID",
rememberCard: true,
},
function (results) {
},
function (results) {
}
)
Requesting payment with existing token (credit card) - skips payment page:
konnectedpay.requestPayment(
{
merchantId: "your konnectedpay merchant id",
clientSecret: "your konnectedpay client secret",
amount: 1234.56,
transId: "your unique transaction id",
currencyCode: "MYR",
fullName: "payer's full name",
email: "payer's email address",
userId: "your internal user ID - used with konnectedpay.getTokens() method",
token: "token from konnectedpay.getTokens() method",
},
function (results) {
},
function (results) {
}
)
The success or failure callback will receive only one argument.
Successful/failed payment:
{
status: "status",
desc: "...",
code: "...",
amount: "1234.56",
tranId: "the transaction id specified in requestPayment()",
}
Cancelled payment:
{
status: "Cancelled",
desc: "User cancelled",
}
WARNING: The payment can still be processing/successful/failed even if this
plugin returns Cancelled status, as the user may have exited the payment screen
after submitting all the online forms... We advise you not to abort any
transactions after receiving this status - instead, you should rely on
KonnectedPay's Backend POST feature.
Note: You can only have 1 payment at any time - requesting a payment while the
previous payment is still in progress will result in failure.
Retrieving Tokenised Payment Methods (credit cards)
Each time your users successfully make a payment, if they have not un-checked
the Remember My Card option on the payment page, their credit card information
will be saved in KonnectedPay as a "token".
konnectedpay.getTokens(
{
merchantId: "your konnectedpay merchant id",
clientSecret: "your konnectedpay client secret",
userId: "your internal user ID - used with konnectedpay.getTokens() method",
},
function (results) {
},
function (errMsgOrUndefined) {
}
)
Make sure that you have configured the Content Security Policy on the page where
you are calling this function. Add connect-src https://*.appxtream.com
to the
Content-Security-Policy
META tag.
Troubleshooting
Unable to load tokens
Symptoms:
- Android:
getTokens
fails with undefined
error
- iOS:
getTokens
never calls the success or error callbacks
Make sure you have configured the Content Security Policy on the page where you
are calling .getTokens()
. You must add this directive:
connect-src https://*.appxtream.com
e.g.
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src https://*.appxtream.com">
Android app crashes when calling konnectedpay.requestPayment(...)
If your app crashes immediately after requesting payment, and if you find a line
similar to the following in your ADB logs:
06-06 16:37:18.536 5132 5132 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{io.cordova.hellocordova/com.nexstream.konnectedsdk.PaymentActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
Please complete your Android app setup by following the Android additional setup
instructions.