@paystack/checkout-js 1.52.0-beta.10 → 1.52.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/checkout.js CHANGED
@@ -12246,7 +12246,7 @@ var Paystack = (function (exports) {
12246
12246
  }
12247
12247
  };
12248
12248
 
12249
- var paymentMethod$7 = 'payattitude';
12249
+ var paymentMethod$8 = 'payattitude';
12250
12250
  var PayattitudeCharge = {
12251
12251
  chargePayattitude: function chargePayattitude(_ref) {
12252
12252
  var _this = this;
@@ -12256,14 +12256,14 @@ var Paystack = (function (exports) {
12256
12256
  phoneNumber: phoneNumber
12257
12257
  };
12258
12258
  return PayattitudeAPI.charge(params).then(function (response) {
12259
- _this.logAPIResponse(response, paymentMethod$7);
12259
+ _this.logAPIResponse(response, paymentMethod$8);
12260
12260
  return response;
12261
12261
  });
12262
12262
  },
12263
12263
  listenForPayattitudeCharge: function listenForPayattitudeCharge(callback) {
12264
12264
  var pusherChannel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
12265
12265
  var listenerOptions = {
12266
- paymentMethod: paymentMethod$7,
12266
+ paymentMethod: paymentMethod$8,
12267
12267
  channel: pusherChannel
12268
12268
  };
12269
12269
  return this.listenForCharge(listenerOptions, callback);
@@ -12340,14 +12340,14 @@ var Paystack = (function (exports) {
12340
12340
  }
12341
12341
  };
12342
12342
 
12343
- var paymentMethod$6 = 'apple pay';
12343
+ var paymentMethod$7 = 'apple pay';
12344
12344
  var ApplePayCharge = {
12345
12345
  validateApplePaySession: function validateApplePaySession(_ref) {
12346
12346
  var _this = this;
12347
12347
  var sessionUrl = _ref.sessionUrl,
12348
12348
  displayName = _ref.displayName,
12349
12349
  domainName = _ref.domainName;
12350
- this.logAttempt(paymentMethod$6);
12350
+ this.logAttempt(paymentMethod$7);
12351
12351
  return ApplePayAPI.validateApplePaySession({
12352
12352
  sessionUrl: sessionUrl,
12353
12353
  displayName: displayName,
@@ -12366,7 +12366,7 @@ var Paystack = (function (exports) {
12366
12366
  device: this.deviceFingerprint,
12367
12367
  paymentObject: paymentObject
12368
12368
  }).then(function (response) {
12369
- _this2.logAPIResponse(response, paymentMethod$6);
12369
+ _this2.logAPIResponse(response, paymentMethod$7);
12370
12370
  return response;
12371
12371
  });
12372
12372
  }
@@ -12416,11 +12416,11 @@ var Paystack = (function (exports) {
12416
12416
  }
12417
12417
  };
12418
12418
 
12419
- var paymentMethod$5 = 'paypal';
12419
+ var paymentMethod$6 = 'paypal';
12420
12420
  var PayPalCharge = {
12421
12421
  createPayPalOrder: function createPayPalOrder() {
12422
12422
  var _this = this;
12423
- this.logAttempt(paymentMethod$5);
12423
+ this.logAttempt(paymentMethod$6);
12424
12424
  return PayPalAPI.createOrder({
12425
12425
  publicKey: this.merchant.key,
12426
12426
  transactionId: this.id
@@ -12435,7 +12435,7 @@ var Paystack = (function (exports) {
12435
12435
  publicKey: this.merchant.key,
12436
12436
  transactionId: this.id
12437
12437
  }).then(function (response) {
12438
- _this2.logAPIResponse(response, paymentMethod$5);
12438
+ _this2.logAPIResponse(response, paymentMethod$6);
12439
12439
  return response;
12440
12440
  });
12441
12441
  },
@@ -19155,7 +19155,8 @@ var Paystack = (function (exports) {
19155
19155
  resumeCardCharge: function resumeCardCharge(_ref2) {
19156
19156
  var device = _ref2.device,
19157
19157
  accessCode = _ref2.accessCode,
19158
- pin = _ref2.pin;
19158
+ pin = _ref2.pin,
19159
+ customFields = _ref2.customFields;
19159
19160
  var url = "".concat(configToUse.paymentBaseUrl, "charge/resume/").concat(accessCode);
19160
19161
  var language = getLanguage();
19161
19162
  var headers = _objectSpread2({
@@ -19163,11 +19164,11 @@ var Paystack = (function (exports) {
19163
19164
  }, language && {
19164
19165
  'Accept-Language': language
19165
19166
  });
19166
- var data = _objectSpread2({
19167
+ var data = _objectSpread2(_objectSpread2({
19167
19168
  device: device
19168
19169
  }, pin && {
19169
19170
  handle: pin
19170
- });
19171
+ }), customFields && customFields);
19171
19172
  var urlEncodedData = formUrlencoded(data);
19172
19173
  return axiosInstance.post(url, urlEncodedData, {
19173
19174
  headers: headers
@@ -19486,7 +19487,7 @@ var Paystack = (function (exports) {
19486
19487
  }
19487
19488
  };
19488
19489
 
19489
- var paymentMethod$4 = 'card';
19490
+ var paymentMethod$5 = 'card';
19490
19491
  var savedCardMethods = {
19491
19492
  payment: 'saved card',
19492
19493
  authentication: 'otp'
@@ -19522,7 +19523,7 @@ var Paystack = (function (exports) {
19522
19523
  return this.chargeCardWithPin(customFields);
19523
19524
  }
19524
19525
  return validate$4(this.card).then(function () {
19525
- _this2.logAttempt(paymentMethod$4);
19526
+ _this2.logAttempt(paymentMethod$5);
19526
19527
  var chargeParams = {
19527
19528
  clientdata: _this2.card.tokenize(),
19528
19529
  last4: _this2.card.getLast4(),
@@ -19536,7 +19537,7 @@ var Paystack = (function (exports) {
19536
19537
  customFields: customFields
19537
19538
  };
19538
19539
  return CardAPI$1.charge(chargeParams).then(function (response) {
19539
- _this2.logAPIResponse(response, paymentMethod$4);
19540
+ _this2.logAPIResponse(response, paymentMethod$5);
19540
19541
  return response;
19541
19542
  });
19542
19543
  });
@@ -19548,7 +19549,7 @@ var Paystack = (function (exports) {
19548
19549
  chargeCardWithPin: function chargeCardWithPin() {
19549
19550
  var _this3 = this;
19550
19551
  var customFields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
19551
- this.logAttempt(paymentMethod$4);
19552
+ this.logAttempt(paymentMethod$5);
19552
19553
  var chargeParams = {
19553
19554
  pin: encrypt(this.card.pin),
19554
19555
  trans: this.id,
@@ -19559,7 +19560,7 @@ var Paystack = (function (exports) {
19559
19560
  customFields: customFields
19560
19561
  };
19561
19562
  return CardAPI$1.charge(chargeParams).then(function (response) {
19562
- _this3.logAPIResponse(response, paymentMethod$4);
19563
+ _this3.logAPIResponse(response, paymentMethod$5);
19563
19564
  return response;
19564
19565
  });
19565
19566
  },
@@ -19569,7 +19570,7 @@ var Paystack = (function (exports) {
19569
19570
  authorizationCode = _ref.authorizationCode,
19570
19571
  cardLast4 = _ref.cardLast4,
19571
19572
  pin = _ref.pin;
19572
- this.logAttempt(paymentMethod$4);
19573
+ this.logAttempt(paymentMethod$5);
19573
19574
  var encryptedPin = encrypt(pin);
19574
19575
  var chargeParams = {
19575
19576
  authorizationCode: authorizationCode,
@@ -19582,22 +19583,25 @@ var Paystack = (function (exports) {
19582
19583
  subscription: this.subscription
19583
19584
  };
19584
19585
  return CardAPI$1.chargeRememberedCard(chargeParams).then(function (response) {
19585
- _this4.logAPIResponse(response, paymentMethod$4);
19586
+ _this4.logAPIResponse(response, paymentMethod$5);
19586
19587
  return response;
19587
19588
  });
19588
19589
  },
19589
19590
  resumeCardCharge: function resumeCardCharge(_ref2) {
19590
19591
  var _this5 = this;
19591
19592
  var accessCode = _ref2.accessCode,
19592
- pin = _ref2.pin;
19593
+ pin = _ref2.pin,
19594
+ _ref2$customFields = _ref2.customFields,
19595
+ customFields = _ref2$customFields === void 0 ? {} : _ref2$customFields;
19593
19596
  var params = _objectSpread2(_objectSpread2({}, pin && {
19594
19597
  pin: encrypt(pin)
19595
19598
  }), {}, {
19596
19599
  accessCode: accessCode,
19597
- device: this.deviceFingerprint
19600
+ device: this.deviceFingerprint,
19601
+ customFields: customFields
19598
19602
  });
19599
19603
  return CardAPI$1.resumeCardCharge(params).then(function (response) {
19600
- _this5.logAPIResponse(response, paymentMethod$4);
19604
+ _this5.logAPIResponse(response, paymentMethod$5);
19601
19605
  return response;
19602
19606
  });
19603
19607
  },
@@ -19608,14 +19612,14 @@ var Paystack = (function (exports) {
19608
19612
  publicKey: this.merchant.key
19609
19613
  };
19610
19614
  return CardAPI$1.forgetRememberedCard(params).then(function (response) {
19611
- _this6.logAPIResponse(response, paymentMethod$4);
19615
+ _this6.logAPIResponse(response, paymentMethod$5);
19612
19616
  return response;
19613
19617
  });
19614
19618
  },
19615
19619
  authenticateCard: function authenticateCard(token) {
19616
19620
  var _this7 = this;
19617
19621
  return CardAPI$1.authenticate(this.id, token).then(function (response) {
19618
- _this7.logAPIResponse(response, paymentMethod$4);
19622
+ _this7.logAPIResponse(response, paymentMethod$5);
19619
19623
  return response;
19620
19624
  });
19621
19625
  },
@@ -19635,14 +19639,14 @@ var Paystack = (function (exports) {
19635
19639
  selectedCurrency: selectedCurrency
19636
19640
  };
19637
19641
  return CardAPI$1.verifyAddress(payload).then(function (response) {
19638
- _this8.logAPIResponse(response, paymentMethod$4);
19642
+ _this8.logAPIResponse(response, paymentMethod$5);
19639
19643
  return response;
19640
19644
  });
19641
19645
  },
19642
19646
  listenFor3DSCharge: function listenFor3DSCharge(callback) {
19643
19647
  var listenerOptions = {
19644
19648
  channel: "3DS_".concat(this.id),
19645
- paymentMethod: paymentMethod$4
19649
+ paymentMethod: paymentMethod$5
19646
19650
  };
19647
19651
  return this.listenForCharge(listenerOptions, callback);
19648
19652
  },
@@ -19930,7 +19934,7 @@ var Paystack = (function (exports) {
19930
19934
  }
19931
19935
  };
19932
19936
 
19933
- var paymentMethod$3 = 'bank account';
19937
+ var paymentMethod$4 = 'bank account';
19934
19938
  function validate$3(bankAccount, isSetter) {
19935
19939
  return new Promise(function (resolve, reject) {
19936
19940
  var validation = BankAccount.validate(bankAccount);
@@ -19952,7 +19956,7 @@ var Paystack = (function (exports) {
19952
19956
  chargeBankAccount: function chargeBankAccount() {
19953
19957
  var _this2 = this;
19954
19958
  return validate$3(this.bankAccount).then(function () {
19955
- _this2.logAttempt(paymentMethod$3);
19959
+ _this2.logAttempt(paymentMethod$4);
19956
19960
  var verifyParams = {
19957
19961
  bankId: _this2.bankAccount.bankId,
19958
19962
  transactionId: _this2.id,
@@ -19960,7 +19964,7 @@ var Paystack = (function (exports) {
19960
19964
  device: _this2.deviceFingerprint
19961
19965
  };
19962
19966
  return EMandateAPI.verify(verifyParams).then(function (response) {
19963
- _this2.logAPIResponse(response, paymentMethod$3);
19967
+ _this2.logAPIResponse(response, paymentMethod$4);
19964
19968
  return response;
19965
19969
  });
19966
19970
  });
@@ -19975,7 +19979,7 @@ var Paystack = (function (exports) {
19975
19979
  birthday: birthday
19976
19980
  };
19977
19981
  return EMandateAPI.register(registerParams).then(function (response) {
19978
- _this3.logAPIResponse(response, paymentMethod$3);
19982
+ _this3.logAPIResponse(response, paymentMethod$4);
19979
19983
  return response;
19980
19984
  });
19981
19985
  });
@@ -19990,7 +19994,7 @@ var Paystack = (function (exports) {
19990
19994
  device: _this4.deviceFingerprint
19991
19995
  };
19992
19996
  return EMandateAPI.authenticate(chargeParams).then(function (response) {
19993
- _this4.logAPIResponse(response, paymentMethod$3);
19997
+ _this4.logAPIResponse(response, paymentMethod$4);
19994
19998
  return response;
19995
19999
  });
19996
20000
  });
@@ -20049,7 +20053,7 @@ var Paystack = (function (exports) {
20049
20053
  }
20050
20054
  };
20051
20055
 
20052
- var paymentMethod$2 = 'bank';
20056
+ var paymentMethod$3 = 'bank';
20053
20057
  var DigitalBankMandate = {
20054
20058
  chargeDigitalBankMandate: function chargeDigitalBankMandate(_ref) {
20055
20059
  var _this = this;
@@ -20065,14 +20069,14 @@ var Paystack = (function (exports) {
20065
20069
  walletId: walletId
20066
20070
  };
20067
20071
  return DigitalBankMandateAPI.charge(params).then(function (response) {
20068
- _this.logAPIResponse(response, paymentMethod$2);
20072
+ _this.logAPIResponse(response, paymentMethod$3);
20069
20073
  return response;
20070
20074
  });
20071
20075
  },
20072
20076
  listenForDigitalBankMandateCharge: function listenForDigitalBankMandateCharge(callback) {
20073
20077
  var pusherChannel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
20074
20078
  var listenerOptions = {
20075
- paymentMethod: paymentMethod$2,
20079
+ paymentMethod: paymentMethod$3,
20076
20080
  channel: pusherChannel
20077
20081
  };
20078
20082
  return this.listenForCharge(listenerOptions, callback);
@@ -20544,7 +20548,7 @@ var Paystack = (function (exports) {
20544
20548
  }
20545
20549
  };
20546
20550
 
20547
- var paymentMethod$1 = 'direct debit';
20551
+ var paymentMethod$2 = 'direct debit';
20548
20552
  var DirectDebitCharge = {
20549
20553
  loginToDirectDebitAccount: function loginToDirectDebitAccount(_ref) {
20550
20554
  var _this = this;
@@ -20581,14 +20585,14 @@ var Paystack = (function (exports) {
20581
20585
  if (!this.directDebit.token) {
20582
20586
  return Promise.reject(Error('Please login with Transaction.loginToDirectDebitAccount() to start a Direct debit charge'));
20583
20587
  }
20584
- this.logAttempt(paymentMethod$1);
20588
+ this.logAttempt(paymentMethod$2);
20585
20589
  var params = {
20586
20590
  account_code: accountCode,
20587
20591
  transaction: this.id,
20588
20592
  token: this.directDebit.token
20589
20593
  };
20590
20594
  return DirectDebitAPI.charge(params).then(function (response) {
20591
- _this2.logAPIResponse(response, paymentMethod$1);
20595
+ _this2.logAPIResponse(response, paymentMethod$2);
20592
20596
  if (response.status) {
20593
20597
  _this2.directDebit.chargeResponse = response;
20594
20598
  }
@@ -20598,7 +20602,7 @@ var Paystack = (function (exports) {
20598
20602
  getProvisionedAccounts: function getProvisionedAccounts() {
20599
20603
  var _this3 = this;
20600
20604
  return DirectDebitAPI.getProvisionedAccounts(this.directDebit.token).then(function (response) {
20601
- _this3.logAPIResponse(response, paymentMethod$1);
20605
+ _this3.logAPIResponse(response, paymentMethod$2);
20602
20606
  var status = response.status,
20603
20607
  data = response.data;
20604
20608
  if (status) {
@@ -20618,7 +20622,7 @@ var Paystack = (function (exports) {
20618
20622
  token: this.directDebit.token
20619
20623
  };
20620
20624
  return DirectDebitAPI.authenticate(params).then(function (response) {
20621
- _this4.logAPIResponse(response, paymentMethod$1);
20625
+ _this4.logAPIResponse(response, paymentMethod$2);
20622
20626
  return response;
20623
20627
  });
20624
20628
  }
@@ -20803,6 +20807,51 @@ var Paystack = (function (exports) {
20803
20807
  }
20804
20808
  };
20805
20809
 
20810
+ var InstalmentsAPI = {
20811
+ parseHostedSessionResponse: function parseHostedSessionResponse(apiResponse) {
20812
+ var _apiResponse$data;
20813
+ var hostedSessionData = (apiResponse === null || apiResponse === void 0 ? void 0 : (_apiResponse$data = apiResponse.data) === null || _apiResponse$data === void 0 ? void 0 : _apiResponse$data.data) || (apiResponse === null || apiResponse === void 0 ? void 0 : apiResponse.data) || apiResponse || {};
20814
+ var parsedResponse = ChargeResponses.parse(apiResponse);
20815
+ return _objectSpread2(_objectSpread2({}, parsedResponse), {}, {
20816
+ data: _objectSpread2(_objectSpread2({}, parsedResponse.data), hostedSessionData)
20817
+ });
20818
+ },
20819
+ createHostedSession: function createHostedSession(params, publicKey) {
20820
+ var language = getLanguage();
20821
+ var headers = _objectSpread2({
20822
+ Authorization: "Bearer ".concat(publicKey)
20823
+ }, language && {
20824
+ 'Accept-Language': language
20825
+ });
20826
+ var url = new URL('instalments/create', configToUse.paystackApiUrl).toString();
20827
+ return axiosInstance.post(url, params, {
20828
+ headers: headers
20829
+ }).then(function (response) {
20830
+ return InstalmentsAPI.parseHostedSessionResponse(response.data);
20831
+ });
20832
+ }
20833
+ };
20834
+
20835
+ var paymentMethod$1 = 'instalments';
20836
+ var InstalmentsCharge = {
20837
+ chargeInstalments: function chargeInstalments() {
20838
+ var _this = this;
20839
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
20840
+ provider = _ref.provider;
20841
+ if (!provider) {
20842
+ return Promise.reject(new Error('Instalment provider is required'));
20843
+ }
20844
+ this.logAttempt(paymentMethod$1);
20845
+ return InstalmentsAPI.createHostedSession({
20846
+ transaction_id: this.id,
20847
+ provider: provider
20848
+ }, this.merchant.key).then(function (response) {
20849
+ _this.logAPIResponse(response, paymentMethod$1);
20850
+ return response;
20851
+ });
20852
+ }
20853
+ };
20854
+
20806
20855
  var ChargeFunctions = {
20807
20856
  get: function get(channel) {
20808
20857
  var chargeFunctions = {
@@ -20817,7 +20866,8 @@ var Paystack = (function (exports) {
20817
20866
  payattitude: PayattitudeCharge,
20818
20867
  apple_pay: ApplePayCharge,
20819
20868
  paypal: PayPalCharge,
20820
- capitec_pay: CapitecPayCharge
20869
+ capitec_pay: CapitecPayCharge,
20870
+ instalments: InstalmentsCharge
20821
20871
  };
20822
20872
  return chargeFunctions[channel];
20823
20873
  }
@@ -21645,6 +21695,7 @@ var Paystack = (function (exports) {
21645
21695
  this.subscription = data.subscription || null;
21646
21696
  this.planDetails = data.plan_details || null;
21647
21697
  this.exchangeRate = data.exchange_rate || null;
21698
+ this.preChargeCheckEnabled = data.pre_charge_check_enabled || false;
21648
21699
  this.savedCardsConfig = data.saved_cards || {};
21649
21700
  this.supportedBanks = data.supported_banks || [];
21650
21701
  this.isWhiteLabeled = data.whitelabel || null;
@@ -21939,9 +21990,24 @@ var Paystack = (function (exports) {
21939
21990
  return data;
21940
21991
  });
21941
21992
  },
21942
- fetchCountries: function fetchCountries(_ref2) {
21943
- var scope = _ref2.scope,
21944
- merchantKey = _ref2.merchantKey;
21993
+ preChargeCheck: function preChargeCheck(bin, transactionId) {
21994
+ var url = new URL("/transaction/pre_charge_check/".concat(bin), configToUse.paystackApiUrl).toString();
21995
+ var language = getLanguage();
21996
+ var headers = _objectSpread2({}, language && {
21997
+ 'Accept-Language': language
21998
+ });
21999
+ return axiosInstance.post(url, {
22000
+ transaction_id: transactionId
22001
+ }, {
22002
+ headers: headers
22003
+ }).then(function (_ref2) {
22004
+ var data = _ref2.data;
22005
+ return data;
22006
+ });
22007
+ },
22008
+ fetchCountries: function fetchCountries(_ref3) {
22009
+ var scope = _ref3.scope,
22010
+ merchantKey = _ref3.merchantKey;
21945
22011
  var url = new URL('/address/country', configToUse.paystackApiUrl).toString();
21946
22012
  var language = getLanguage();
21947
22013
  var headers = _objectSpread2({
@@ -21959,9 +22025,9 @@ var Paystack = (function (exports) {
21959
22025
  return response.data;
21960
22026
  });
21961
22027
  },
21962
- fetchReachStates: function fetchReachStates(_ref3) {
21963
- var country = _ref3.country,
21964
- merchantKey = _ref3.merchantKey;
22028
+ fetchReachStates: function fetchReachStates(_ref4) {
22029
+ var country = _ref4.country,
22030
+ merchantKey = _ref4.merchantKey;
21965
22031
  var url = new URL("/address/country/".concat(country, "/state"), configToUse.paystackApiUrl).toString();
21966
22032
  var language = getLanguage();
21967
22033
  var headers = _objectSpread2({
@@ -22043,6 +22109,11 @@ var Paystack = (function (exports) {
22043
22109
  value: function resolveCardBin(bin) {
22044
22110
  return ToolkitAPI.resolveCardBin(bin);
22045
22111
  }
22112
+ }, {
22113
+ key: "preChargeCheck",
22114
+ value: function preChargeCheck(bin, transactionId) {
22115
+ return ToolkitAPI.preChargeCheck(bin, transactionId);
22116
+ }
22046
22117
  }]);
22047
22118
  return Toolkit;
22048
22119
  }();
package/es/checkout.js CHANGED
@@ -12243,7 +12243,7 @@ var PayattitudeAPI = {
12243
12243
  }
12244
12244
  };
12245
12245
 
12246
- var paymentMethod$7 = 'payattitude';
12246
+ var paymentMethod$8 = 'payattitude';
12247
12247
  var PayattitudeCharge = {
12248
12248
  chargePayattitude: function chargePayattitude(_ref) {
12249
12249
  var _this = this;
@@ -12253,14 +12253,14 @@ var PayattitudeCharge = {
12253
12253
  phoneNumber: phoneNumber
12254
12254
  };
12255
12255
  return PayattitudeAPI.charge(params).then(function (response) {
12256
- _this.logAPIResponse(response, paymentMethod$7);
12256
+ _this.logAPIResponse(response, paymentMethod$8);
12257
12257
  return response;
12258
12258
  });
12259
12259
  },
12260
12260
  listenForPayattitudeCharge: function listenForPayattitudeCharge(callback) {
12261
12261
  var pusherChannel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
12262
12262
  var listenerOptions = {
12263
- paymentMethod: paymentMethod$7,
12263
+ paymentMethod: paymentMethod$8,
12264
12264
  channel: pusherChannel
12265
12265
  };
12266
12266
  return this.listenForCharge(listenerOptions, callback);
@@ -12337,14 +12337,14 @@ var ApplePayAPI = {
12337
12337
  }
12338
12338
  };
12339
12339
 
12340
- var paymentMethod$6 = 'apple pay';
12340
+ var paymentMethod$7 = 'apple pay';
12341
12341
  var ApplePayCharge = {
12342
12342
  validateApplePaySession: function validateApplePaySession(_ref) {
12343
12343
  var _this = this;
12344
12344
  var sessionUrl = _ref.sessionUrl,
12345
12345
  displayName = _ref.displayName,
12346
12346
  domainName = _ref.domainName;
12347
- this.logAttempt(paymentMethod$6);
12347
+ this.logAttempt(paymentMethod$7);
12348
12348
  return ApplePayAPI.validateApplePaySession({
12349
12349
  sessionUrl: sessionUrl,
12350
12350
  displayName: displayName,
@@ -12363,7 +12363,7 @@ var ApplePayCharge = {
12363
12363
  device: this.deviceFingerprint,
12364
12364
  paymentObject: paymentObject
12365
12365
  }).then(function (response) {
12366
- _this2.logAPIResponse(response, paymentMethod$6);
12366
+ _this2.logAPIResponse(response, paymentMethod$7);
12367
12367
  return response;
12368
12368
  });
12369
12369
  }
@@ -12413,11 +12413,11 @@ var PayPalAPI = {
12413
12413
  }
12414
12414
  };
12415
12415
 
12416
- var paymentMethod$5 = 'paypal';
12416
+ var paymentMethod$6 = 'paypal';
12417
12417
  var PayPalCharge = {
12418
12418
  createPayPalOrder: function createPayPalOrder() {
12419
12419
  var _this = this;
12420
- this.logAttempt(paymentMethod$5);
12420
+ this.logAttempt(paymentMethod$6);
12421
12421
  return PayPalAPI.createOrder({
12422
12422
  publicKey: this.merchant.key,
12423
12423
  transactionId: this.id
@@ -12432,7 +12432,7 @@ var PayPalCharge = {
12432
12432
  publicKey: this.merchant.key,
12433
12433
  transactionId: this.id
12434
12434
  }).then(function (response) {
12435
- _this2.logAPIResponse(response, paymentMethod$5);
12435
+ _this2.logAPIResponse(response, paymentMethod$6);
12436
12436
  return response;
12437
12437
  });
12438
12438
  },
@@ -19152,7 +19152,8 @@ var CardAPI$1 = {
19152
19152
  resumeCardCharge: function resumeCardCharge(_ref2) {
19153
19153
  var device = _ref2.device,
19154
19154
  accessCode = _ref2.accessCode,
19155
- pin = _ref2.pin;
19155
+ pin = _ref2.pin,
19156
+ customFields = _ref2.customFields;
19156
19157
  var url = "".concat(configToUse.paymentBaseUrl, "charge/resume/").concat(accessCode);
19157
19158
  var language = getLanguage();
19158
19159
  var headers = _objectSpread2({
@@ -19160,11 +19161,11 @@ var CardAPI$1 = {
19160
19161
  }, language && {
19161
19162
  'Accept-Language': language
19162
19163
  });
19163
- var data = _objectSpread2({
19164
+ var data = _objectSpread2(_objectSpread2({
19164
19165
  device: device
19165
19166
  }, pin && {
19166
19167
  handle: pin
19167
- });
19168
+ }), customFields && customFields);
19168
19169
  var urlEncodedData = formUrlencoded(data);
19169
19170
  return axiosInstance.post(url, urlEncodedData, {
19170
19171
  headers: headers
@@ -19483,7 +19484,7 @@ var CardAPI$1 = {
19483
19484
  }
19484
19485
  };
19485
19486
 
19486
- var paymentMethod$4 = 'card';
19487
+ var paymentMethod$5 = 'card';
19487
19488
  var savedCardMethods = {
19488
19489
  payment: 'saved card',
19489
19490
  authentication: 'otp'
@@ -19519,7 +19520,7 @@ var CardCharge = {
19519
19520
  return this.chargeCardWithPin(customFields);
19520
19521
  }
19521
19522
  return validate$4(this.card).then(function () {
19522
- _this2.logAttempt(paymentMethod$4);
19523
+ _this2.logAttempt(paymentMethod$5);
19523
19524
  var chargeParams = {
19524
19525
  clientdata: _this2.card.tokenize(),
19525
19526
  last4: _this2.card.getLast4(),
@@ -19533,7 +19534,7 @@ var CardCharge = {
19533
19534
  customFields: customFields
19534
19535
  };
19535
19536
  return CardAPI$1.charge(chargeParams).then(function (response) {
19536
- _this2.logAPIResponse(response, paymentMethod$4);
19537
+ _this2.logAPIResponse(response, paymentMethod$5);
19537
19538
  return response;
19538
19539
  });
19539
19540
  });
@@ -19545,7 +19546,7 @@ var CardCharge = {
19545
19546
  chargeCardWithPin: function chargeCardWithPin() {
19546
19547
  var _this3 = this;
19547
19548
  var customFields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
19548
- this.logAttempt(paymentMethod$4);
19549
+ this.logAttempt(paymentMethod$5);
19549
19550
  var chargeParams = {
19550
19551
  pin: encrypt(this.card.pin),
19551
19552
  trans: this.id,
@@ -19556,7 +19557,7 @@ var CardCharge = {
19556
19557
  customFields: customFields
19557
19558
  };
19558
19559
  return CardAPI$1.charge(chargeParams).then(function (response) {
19559
- _this3.logAPIResponse(response, paymentMethod$4);
19560
+ _this3.logAPIResponse(response, paymentMethod$5);
19560
19561
  return response;
19561
19562
  });
19562
19563
  },
@@ -19566,7 +19567,7 @@ var CardCharge = {
19566
19567
  authorizationCode = _ref.authorizationCode,
19567
19568
  cardLast4 = _ref.cardLast4,
19568
19569
  pin = _ref.pin;
19569
- this.logAttempt(paymentMethod$4);
19570
+ this.logAttempt(paymentMethod$5);
19570
19571
  var encryptedPin = encrypt(pin);
19571
19572
  var chargeParams = {
19572
19573
  authorizationCode: authorizationCode,
@@ -19579,22 +19580,25 @@ var CardCharge = {
19579
19580
  subscription: this.subscription
19580
19581
  };
19581
19582
  return CardAPI$1.chargeRememberedCard(chargeParams).then(function (response) {
19582
- _this4.logAPIResponse(response, paymentMethod$4);
19583
+ _this4.logAPIResponse(response, paymentMethod$5);
19583
19584
  return response;
19584
19585
  });
19585
19586
  },
19586
19587
  resumeCardCharge: function resumeCardCharge(_ref2) {
19587
19588
  var _this5 = this;
19588
19589
  var accessCode = _ref2.accessCode,
19589
- pin = _ref2.pin;
19590
+ pin = _ref2.pin,
19591
+ _ref2$customFields = _ref2.customFields,
19592
+ customFields = _ref2$customFields === void 0 ? {} : _ref2$customFields;
19590
19593
  var params = _objectSpread2(_objectSpread2({}, pin && {
19591
19594
  pin: encrypt(pin)
19592
19595
  }), {}, {
19593
19596
  accessCode: accessCode,
19594
- device: this.deviceFingerprint
19597
+ device: this.deviceFingerprint,
19598
+ customFields: customFields
19595
19599
  });
19596
19600
  return CardAPI$1.resumeCardCharge(params).then(function (response) {
19597
- _this5.logAPIResponse(response, paymentMethod$4);
19601
+ _this5.logAPIResponse(response, paymentMethod$5);
19598
19602
  return response;
19599
19603
  });
19600
19604
  },
@@ -19605,14 +19609,14 @@ var CardCharge = {
19605
19609
  publicKey: this.merchant.key
19606
19610
  };
19607
19611
  return CardAPI$1.forgetRememberedCard(params).then(function (response) {
19608
- _this6.logAPIResponse(response, paymentMethod$4);
19612
+ _this6.logAPIResponse(response, paymentMethod$5);
19609
19613
  return response;
19610
19614
  });
19611
19615
  },
19612
19616
  authenticateCard: function authenticateCard(token) {
19613
19617
  var _this7 = this;
19614
19618
  return CardAPI$1.authenticate(this.id, token).then(function (response) {
19615
- _this7.logAPIResponse(response, paymentMethod$4);
19619
+ _this7.logAPIResponse(response, paymentMethod$5);
19616
19620
  return response;
19617
19621
  });
19618
19622
  },
@@ -19632,14 +19636,14 @@ var CardCharge = {
19632
19636
  selectedCurrency: selectedCurrency
19633
19637
  };
19634
19638
  return CardAPI$1.verifyAddress(payload).then(function (response) {
19635
- _this8.logAPIResponse(response, paymentMethod$4);
19639
+ _this8.logAPIResponse(response, paymentMethod$5);
19636
19640
  return response;
19637
19641
  });
19638
19642
  },
19639
19643
  listenFor3DSCharge: function listenFor3DSCharge(callback) {
19640
19644
  var listenerOptions = {
19641
19645
  channel: "3DS_".concat(this.id),
19642
- paymentMethod: paymentMethod$4
19646
+ paymentMethod: paymentMethod$5
19643
19647
  };
19644
19648
  return this.listenForCharge(listenerOptions, callback);
19645
19649
  },
@@ -19927,7 +19931,7 @@ var EMandateAPI = {
19927
19931
  }
19928
19932
  };
19929
19933
 
19930
- var paymentMethod$3 = 'bank account';
19934
+ var paymentMethod$4 = 'bank account';
19931
19935
  function validate$3(bankAccount, isSetter) {
19932
19936
  return new Promise(function (resolve, reject) {
19933
19937
  var validation = BankAccount.validate(bankAccount);
@@ -19949,7 +19953,7 @@ var EMandate = {
19949
19953
  chargeBankAccount: function chargeBankAccount() {
19950
19954
  var _this2 = this;
19951
19955
  return validate$3(this.bankAccount).then(function () {
19952
- _this2.logAttempt(paymentMethod$3);
19956
+ _this2.logAttempt(paymentMethod$4);
19953
19957
  var verifyParams = {
19954
19958
  bankId: _this2.bankAccount.bankId,
19955
19959
  transactionId: _this2.id,
@@ -19957,7 +19961,7 @@ var EMandate = {
19957
19961
  device: _this2.deviceFingerprint
19958
19962
  };
19959
19963
  return EMandateAPI.verify(verifyParams).then(function (response) {
19960
- _this2.logAPIResponse(response, paymentMethod$3);
19964
+ _this2.logAPIResponse(response, paymentMethod$4);
19961
19965
  return response;
19962
19966
  });
19963
19967
  });
@@ -19972,7 +19976,7 @@ var EMandate = {
19972
19976
  birthday: birthday
19973
19977
  };
19974
19978
  return EMandateAPI.register(registerParams).then(function (response) {
19975
- _this3.logAPIResponse(response, paymentMethod$3);
19979
+ _this3.logAPIResponse(response, paymentMethod$4);
19976
19980
  return response;
19977
19981
  });
19978
19982
  });
@@ -19987,7 +19991,7 @@ var EMandate = {
19987
19991
  device: _this4.deviceFingerprint
19988
19992
  };
19989
19993
  return EMandateAPI.authenticate(chargeParams).then(function (response) {
19990
- _this4.logAPIResponse(response, paymentMethod$3);
19994
+ _this4.logAPIResponse(response, paymentMethod$4);
19991
19995
  return response;
19992
19996
  });
19993
19997
  });
@@ -20046,7 +20050,7 @@ var DigitalBankMandateAPI = {
20046
20050
  }
20047
20051
  };
20048
20052
 
20049
- var paymentMethod$2 = 'bank';
20053
+ var paymentMethod$3 = 'bank';
20050
20054
  var DigitalBankMandate = {
20051
20055
  chargeDigitalBankMandate: function chargeDigitalBankMandate(_ref) {
20052
20056
  var _this = this;
@@ -20062,14 +20066,14 @@ var DigitalBankMandate = {
20062
20066
  walletId: walletId
20063
20067
  };
20064
20068
  return DigitalBankMandateAPI.charge(params).then(function (response) {
20065
- _this.logAPIResponse(response, paymentMethod$2);
20069
+ _this.logAPIResponse(response, paymentMethod$3);
20066
20070
  return response;
20067
20071
  });
20068
20072
  },
20069
20073
  listenForDigitalBankMandateCharge: function listenForDigitalBankMandateCharge(callback) {
20070
20074
  var pusherChannel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
20071
20075
  var listenerOptions = {
20072
- paymentMethod: paymentMethod$2,
20076
+ paymentMethod: paymentMethod$3,
20073
20077
  channel: pusherChannel
20074
20078
  };
20075
20079
  return this.listenForCharge(listenerOptions, callback);
@@ -20541,7 +20545,7 @@ var DirectDebitAPI = {
20541
20545
  }
20542
20546
  };
20543
20547
 
20544
- var paymentMethod$1 = 'direct debit';
20548
+ var paymentMethod$2 = 'direct debit';
20545
20549
  var DirectDebitCharge = {
20546
20550
  loginToDirectDebitAccount: function loginToDirectDebitAccount(_ref) {
20547
20551
  var _this = this;
@@ -20578,14 +20582,14 @@ var DirectDebitCharge = {
20578
20582
  if (!this.directDebit.token) {
20579
20583
  return Promise.reject(Error('Please login with Transaction.loginToDirectDebitAccount() to start a Direct debit charge'));
20580
20584
  }
20581
- this.logAttempt(paymentMethod$1);
20585
+ this.logAttempt(paymentMethod$2);
20582
20586
  var params = {
20583
20587
  account_code: accountCode,
20584
20588
  transaction: this.id,
20585
20589
  token: this.directDebit.token
20586
20590
  };
20587
20591
  return DirectDebitAPI.charge(params).then(function (response) {
20588
- _this2.logAPIResponse(response, paymentMethod$1);
20592
+ _this2.logAPIResponse(response, paymentMethod$2);
20589
20593
  if (response.status) {
20590
20594
  _this2.directDebit.chargeResponse = response;
20591
20595
  }
@@ -20595,7 +20599,7 @@ var DirectDebitCharge = {
20595
20599
  getProvisionedAccounts: function getProvisionedAccounts() {
20596
20600
  var _this3 = this;
20597
20601
  return DirectDebitAPI.getProvisionedAccounts(this.directDebit.token).then(function (response) {
20598
- _this3.logAPIResponse(response, paymentMethod$1);
20602
+ _this3.logAPIResponse(response, paymentMethod$2);
20599
20603
  var status = response.status,
20600
20604
  data = response.data;
20601
20605
  if (status) {
@@ -20615,7 +20619,7 @@ var DirectDebitCharge = {
20615
20619
  token: this.directDebit.token
20616
20620
  };
20617
20621
  return DirectDebitAPI.authenticate(params).then(function (response) {
20618
- _this4.logAPIResponse(response, paymentMethod$1);
20622
+ _this4.logAPIResponse(response, paymentMethod$2);
20619
20623
  return response;
20620
20624
  });
20621
20625
  }
@@ -20800,6 +20804,51 @@ var CapitecPayCharge = {
20800
20804
  }
20801
20805
  };
20802
20806
 
20807
+ var InstalmentsAPI = {
20808
+ parseHostedSessionResponse: function parseHostedSessionResponse(apiResponse) {
20809
+ var _apiResponse$data;
20810
+ var hostedSessionData = (apiResponse === null || apiResponse === void 0 ? void 0 : (_apiResponse$data = apiResponse.data) === null || _apiResponse$data === void 0 ? void 0 : _apiResponse$data.data) || (apiResponse === null || apiResponse === void 0 ? void 0 : apiResponse.data) || apiResponse || {};
20811
+ var parsedResponse = ChargeResponses.parse(apiResponse);
20812
+ return _objectSpread2(_objectSpread2({}, parsedResponse), {}, {
20813
+ data: _objectSpread2(_objectSpread2({}, parsedResponse.data), hostedSessionData)
20814
+ });
20815
+ },
20816
+ createHostedSession: function createHostedSession(params, publicKey) {
20817
+ var language = getLanguage();
20818
+ var headers = _objectSpread2({
20819
+ Authorization: "Bearer ".concat(publicKey)
20820
+ }, language && {
20821
+ 'Accept-Language': language
20822
+ });
20823
+ var url = new URL('instalments/create', configToUse.paystackApiUrl).toString();
20824
+ return axiosInstance.post(url, params, {
20825
+ headers: headers
20826
+ }).then(function (response) {
20827
+ return InstalmentsAPI.parseHostedSessionResponse(response.data);
20828
+ });
20829
+ }
20830
+ };
20831
+
20832
+ var paymentMethod$1 = 'instalments';
20833
+ var InstalmentsCharge = {
20834
+ chargeInstalments: function chargeInstalments() {
20835
+ var _this = this;
20836
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
20837
+ provider = _ref.provider;
20838
+ if (!provider) {
20839
+ return Promise.reject(new Error('Instalment provider is required'));
20840
+ }
20841
+ this.logAttempt(paymentMethod$1);
20842
+ return InstalmentsAPI.createHostedSession({
20843
+ transaction_id: this.id,
20844
+ provider: provider
20845
+ }, this.merchant.key).then(function (response) {
20846
+ _this.logAPIResponse(response, paymentMethod$1);
20847
+ return response;
20848
+ });
20849
+ }
20850
+ };
20851
+
20803
20852
  var ChargeFunctions = {
20804
20853
  get: function get(channel) {
20805
20854
  var chargeFunctions = {
@@ -20814,7 +20863,8 @@ var ChargeFunctions = {
20814
20863
  payattitude: PayattitudeCharge,
20815
20864
  apple_pay: ApplePayCharge,
20816
20865
  paypal: PayPalCharge,
20817
- capitec_pay: CapitecPayCharge
20866
+ capitec_pay: CapitecPayCharge,
20867
+ instalments: InstalmentsCharge
20818
20868
  };
20819
20869
  return chargeFunctions[channel];
20820
20870
  }
@@ -21642,6 +21692,7 @@ var TransactionInstance = /*#__PURE__*/function () {
21642
21692
  this.subscription = data.subscription || null;
21643
21693
  this.planDetails = data.plan_details || null;
21644
21694
  this.exchangeRate = data.exchange_rate || null;
21695
+ this.preChargeCheckEnabled = data.pre_charge_check_enabled || false;
21645
21696
  this.savedCardsConfig = data.saved_cards || {};
21646
21697
  this.supportedBanks = data.supported_banks || [];
21647
21698
  this.isWhiteLabeled = data.whitelabel || null;
@@ -21936,9 +21987,24 @@ var ToolkitAPI = {
21936
21987
  return data;
21937
21988
  });
21938
21989
  },
21939
- fetchCountries: function fetchCountries(_ref2) {
21940
- var scope = _ref2.scope,
21941
- merchantKey = _ref2.merchantKey;
21990
+ preChargeCheck: function preChargeCheck(bin, transactionId) {
21991
+ var url = new URL("/transaction/pre_charge_check/".concat(bin), configToUse.paystackApiUrl).toString();
21992
+ var language = getLanguage();
21993
+ var headers = _objectSpread2({}, language && {
21994
+ 'Accept-Language': language
21995
+ });
21996
+ return axiosInstance.post(url, {
21997
+ transaction_id: transactionId
21998
+ }, {
21999
+ headers: headers
22000
+ }).then(function (_ref2) {
22001
+ var data = _ref2.data;
22002
+ return data;
22003
+ });
22004
+ },
22005
+ fetchCountries: function fetchCountries(_ref3) {
22006
+ var scope = _ref3.scope,
22007
+ merchantKey = _ref3.merchantKey;
21942
22008
  var url = new URL('/address/country', configToUse.paystackApiUrl).toString();
21943
22009
  var language = getLanguage();
21944
22010
  var headers = _objectSpread2({
@@ -21956,9 +22022,9 @@ var ToolkitAPI = {
21956
22022
  return response.data;
21957
22023
  });
21958
22024
  },
21959
- fetchReachStates: function fetchReachStates(_ref3) {
21960
- var country = _ref3.country,
21961
- merchantKey = _ref3.merchantKey;
22025
+ fetchReachStates: function fetchReachStates(_ref4) {
22026
+ var country = _ref4.country,
22027
+ merchantKey = _ref4.merchantKey;
21962
22028
  var url = new URL("/address/country/".concat(country, "/state"), configToUse.paystackApiUrl).toString();
21963
22029
  var language = getLanguage();
21964
22030
  var headers = _objectSpread2({
@@ -22040,6 +22106,11 @@ var Toolkit = /*#__PURE__*/function () {
22040
22106
  value: function resolveCardBin(bin) {
22041
22107
  return ToolkitAPI.resolveCardBin(bin);
22042
22108
  }
22109
+ }, {
22110
+ key: "preChargeCheck",
22111
+ value: function preChargeCheck(bin, transactionId) {
22112
+ return ToolkitAPI.preChargeCheck(bin, transactionId);
22113
+ }
22043
22114
  }]);
22044
22115
  return Toolkit;
22045
22116
  }();
package/lib/checkout.js CHANGED
@@ -12247,7 +12247,7 @@ var PayattitudeAPI = {
12247
12247
  }
12248
12248
  };
12249
12249
 
12250
- var paymentMethod$7 = 'payattitude';
12250
+ var paymentMethod$8 = 'payattitude';
12251
12251
  var PayattitudeCharge = {
12252
12252
  chargePayattitude: function chargePayattitude(_ref) {
12253
12253
  var _this = this;
@@ -12257,14 +12257,14 @@ var PayattitudeCharge = {
12257
12257
  phoneNumber: phoneNumber
12258
12258
  };
12259
12259
  return PayattitudeAPI.charge(params).then(function (response) {
12260
- _this.logAPIResponse(response, paymentMethod$7);
12260
+ _this.logAPIResponse(response, paymentMethod$8);
12261
12261
  return response;
12262
12262
  });
12263
12263
  },
12264
12264
  listenForPayattitudeCharge: function listenForPayattitudeCharge(callback) {
12265
12265
  var pusherChannel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
12266
12266
  var listenerOptions = {
12267
- paymentMethod: paymentMethod$7,
12267
+ paymentMethod: paymentMethod$8,
12268
12268
  channel: pusherChannel
12269
12269
  };
12270
12270
  return this.listenForCharge(listenerOptions, callback);
@@ -12341,14 +12341,14 @@ var ApplePayAPI = {
12341
12341
  }
12342
12342
  };
12343
12343
 
12344
- var paymentMethod$6 = 'apple pay';
12344
+ var paymentMethod$7 = 'apple pay';
12345
12345
  var ApplePayCharge = {
12346
12346
  validateApplePaySession: function validateApplePaySession(_ref) {
12347
12347
  var _this = this;
12348
12348
  var sessionUrl = _ref.sessionUrl,
12349
12349
  displayName = _ref.displayName,
12350
12350
  domainName = _ref.domainName;
12351
- this.logAttempt(paymentMethod$6);
12351
+ this.logAttempt(paymentMethod$7);
12352
12352
  return ApplePayAPI.validateApplePaySession({
12353
12353
  sessionUrl: sessionUrl,
12354
12354
  displayName: displayName,
@@ -12367,7 +12367,7 @@ var ApplePayCharge = {
12367
12367
  device: this.deviceFingerprint,
12368
12368
  paymentObject: paymentObject
12369
12369
  }).then(function (response) {
12370
- _this2.logAPIResponse(response, paymentMethod$6);
12370
+ _this2.logAPIResponse(response, paymentMethod$7);
12371
12371
  return response;
12372
12372
  });
12373
12373
  }
@@ -12417,11 +12417,11 @@ var PayPalAPI = {
12417
12417
  }
12418
12418
  };
12419
12419
 
12420
- var paymentMethod$5 = 'paypal';
12420
+ var paymentMethod$6 = 'paypal';
12421
12421
  var PayPalCharge = {
12422
12422
  createPayPalOrder: function createPayPalOrder() {
12423
12423
  var _this = this;
12424
- this.logAttempt(paymentMethod$5);
12424
+ this.logAttempt(paymentMethod$6);
12425
12425
  return PayPalAPI.createOrder({
12426
12426
  publicKey: this.merchant.key,
12427
12427
  transactionId: this.id
@@ -12436,7 +12436,7 @@ var PayPalCharge = {
12436
12436
  publicKey: this.merchant.key,
12437
12437
  transactionId: this.id
12438
12438
  }).then(function (response) {
12439
- _this2.logAPIResponse(response, paymentMethod$5);
12439
+ _this2.logAPIResponse(response, paymentMethod$6);
12440
12440
  return response;
12441
12441
  });
12442
12442
  },
@@ -19156,7 +19156,8 @@ var CardAPI$1 = {
19156
19156
  resumeCardCharge: function resumeCardCharge(_ref2) {
19157
19157
  var device = _ref2.device,
19158
19158
  accessCode = _ref2.accessCode,
19159
- pin = _ref2.pin;
19159
+ pin = _ref2.pin,
19160
+ customFields = _ref2.customFields;
19160
19161
  var url = "".concat(configToUse.paymentBaseUrl, "charge/resume/").concat(accessCode);
19161
19162
  var language = getLanguage();
19162
19163
  var headers = _objectSpread2({
@@ -19164,11 +19165,11 @@ var CardAPI$1 = {
19164
19165
  }, language && {
19165
19166
  'Accept-Language': language
19166
19167
  });
19167
- var data = _objectSpread2({
19168
+ var data = _objectSpread2(_objectSpread2({
19168
19169
  device: device
19169
19170
  }, pin && {
19170
19171
  handle: pin
19171
- });
19172
+ }), customFields && customFields);
19172
19173
  var urlEncodedData = formUrlencoded(data);
19173
19174
  return axiosInstance.post(url, urlEncodedData, {
19174
19175
  headers: headers
@@ -19487,7 +19488,7 @@ var CardAPI$1 = {
19487
19488
  }
19488
19489
  };
19489
19490
 
19490
- var paymentMethod$4 = 'card';
19491
+ var paymentMethod$5 = 'card';
19491
19492
  var savedCardMethods = {
19492
19493
  payment: 'saved card',
19493
19494
  authentication: 'otp'
@@ -19523,7 +19524,7 @@ var CardCharge = {
19523
19524
  return this.chargeCardWithPin(customFields);
19524
19525
  }
19525
19526
  return validate$4(this.card).then(function () {
19526
- _this2.logAttempt(paymentMethod$4);
19527
+ _this2.logAttempt(paymentMethod$5);
19527
19528
  var chargeParams = {
19528
19529
  clientdata: _this2.card.tokenize(),
19529
19530
  last4: _this2.card.getLast4(),
@@ -19537,7 +19538,7 @@ var CardCharge = {
19537
19538
  customFields: customFields
19538
19539
  };
19539
19540
  return CardAPI$1.charge(chargeParams).then(function (response) {
19540
- _this2.logAPIResponse(response, paymentMethod$4);
19541
+ _this2.logAPIResponse(response, paymentMethod$5);
19541
19542
  return response;
19542
19543
  });
19543
19544
  });
@@ -19549,7 +19550,7 @@ var CardCharge = {
19549
19550
  chargeCardWithPin: function chargeCardWithPin() {
19550
19551
  var _this3 = this;
19551
19552
  var customFields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
19552
- this.logAttempt(paymentMethod$4);
19553
+ this.logAttempt(paymentMethod$5);
19553
19554
  var chargeParams = {
19554
19555
  pin: encrypt(this.card.pin),
19555
19556
  trans: this.id,
@@ -19560,7 +19561,7 @@ var CardCharge = {
19560
19561
  customFields: customFields
19561
19562
  };
19562
19563
  return CardAPI$1.charge(chargeParams).then(function (response) {
19563
- _this3.logAPIResponse(response, paymentMethod$4);
19564
+ _this3.logAPIResponse(response, paymentMethod$5);
19564
19565
  return response;
19565
19566
  });
19566
19567
  },
@@ -19570,7 +19571,7 @@ var CardCharge = {
19570
19571
  authorizationCode = _ref.authorizationCode,
19571
19572
  cardLast4 = _ref.cardLast4,
19572
19573
  pin = _ref.pin;
19573
- this.logAttempt(paymentMethod$4);
19574
+ this.logAttempt(paymentMethod$5);
19574
19575
  var encryptedPin = encrypt(pin);
19575
19576
  var chargeParams = {
19576
19577
  authorizationCode: authorizationCode,
@@ -19583,22 +19584,25 @@ var CardCharge = {
19583
19584
  subscription: this.subscription
19584
19585
  };
19585
19586
  return CardAPI$1.chargeRememberedCard(chargeParams).then(function (response) {
19586
- _this4.logAPIResponse(response, paymentMethod$4);
19587
+ _this4.logAPIResponse(response, paymentMethod$5);
19587
19588
  return response;
19588
19589
  });
19589
19590
  },
19590
19591
  resumeCardCharge: function resumeCardCharge(_ref2) {
19591
19592
  var _this5 = this;
19592
19593
  var accessCode = _ref2.accessCode,
19593
- pin = _ref2.pin;
19594
+ pin = _ref2.pin,
19595
+ _ref2$customFields = _ref2.customFields,
19596
+ customFields = _ref2$customFields === void 0 ? {} : _ref2$customFields;
19594
19597
  var params = _objectSpread2(_objectSpread2({}, pin && {
19595
19598
  pin: encrypt(pin)
19596
19599
  }), {}, {
19597
19600
  accessCode: accessCode,
19598
- device: this.deviceFingerprint
19601
+ device: this.deviceFingerprint,
19602
+ customFields: customFields
19599
19603
  });
19600
19604
  return CardAPI$1.resumeCardCharge(params).then(function (response) {
19601
- _this5.logAPIResponse(response, paymentMethod$4);
19605
+ _this5.logAPIResponse(response, paymentMethod$5);
19602
19606
  return response;
19603
19607
  });
19604
19608
  },
@@ -19609,14 +19613,14 @@ var CardCharge = {
19609
19613
  publicKey: this.merchant.key
19610
19614
  };
19611
19615
  return CardAPI$1.forgetRememberedCard(params).then(function (response) {
19612
- _this6.logAPIResponse(response, paymentMethod$4);
19616
+ _this6.logAPIResponse(response, paymentMethod$5);
19613
19617
  return response;
19614
19618
  });
19615
19619
  },
19616
19620
  authenticateCard: function authenticateCard(token) {
19617
19621
  var _this7 = this;
19618
19622
  return CardAPI$1.authenticate(this.id, token).then(function (response) {
19619
- _this7.logAPIResponse(response, paymentMethod$4);
19623
+ _this7.logAPIResponse(response, paymentMethod$5);
19620
19624
  return response;
19621
19625
  });
19622
19626
  },
@@ -19636,14 +19640,14 @@ var CardCharge = {
19636
19640
  selectedCurrency: selectedCurrency
19637
19641
  };
19638
19642
  return CardAPI$1.verifyAddress(payload).then(function (response) {
19639
- _this8.logAPIResponse(response, paymentMethod$4);
19643
+ _this8.logAPIResponse(response, paymentMethod$5);
19640
19644
  return response;
19641
19645
  });
19642
19646
  },
19643
19647
  listenFor3DSCharge: function listenFor3DSCharge(callback) {
19644
19648
  var listenerOptions = {
19645
19649
  channel: "3DS_".concat(this.id),
19646
- paymentMethod: paymentMethod$4
19650
+ paymentMethod: paymentMethod$5
19647
19651
  };
19648
19652
  return this.listenForCharge(listenerOptions, callback);
19649
19653
  },
@@ -19931,7 +19935,7 @@ var EMandateAPI = {
19931
19935
  }
19932
19936
  };
19933
19937
 
19934
- var paymentMethod$3 = 'bank account';
19938
+ var paymentMethod$4 = 'bank account';
19935
19939
  function validate$3(bankAccount, isSetter) {
19936
19940
  return new Promise(function (resolve, reject) {
19937
19941
  var validation = BankAccount.validate(bankAccount);
@@ -19953,7 +19957,7 @@ var EMandate = {
19953
19957
  chargeBankAccount: function chargeBankAccount() {
19954
19958
  var _this2 = this;
19955
19959
  return validate$3(this.bankAccount).then(function () {
19956
- _this2.logAttempt(paymentMethod$3);
19960
+ _this2.logAttempt(paymentMethod$4);
19957
19961
  var verifyParams = {
19958
19962
  bankId: _this2.bankAccount.bankId,
19959
19963
  transactionId: _this2.id,
@@ -19961,7 +19965,7 @@ var EMandate = {
19961
19965
  device: _this2.deviceFingerprint
19962
19966
  };
19963
19967
  return EMandateAPI.verify(verifyParams).then(function (response) {
19964
- _this2.logAPIResponse(response, paymentMethod$3);
19968
+ _this2.logAPIResponse(response, paymentMethod$4);
19965
19969
  return response;
19966
19970
  });
19967
19971
  });
@@ -19976,7 +19980,7 @@ var EMandate = {
19976
19980
  birthday: birthday
19977
19981
  };
19978
19982
  return EMandateAPI.register(registerParams).then(function (response) {
19979
- _this3.logAPIResponse(response, paymentMethod$3);
19983
+ _this3.logAPIResponse(response, paymentMethod$4);
19980
19984
  return response;
19981
19985
  });
19982
19986
  });
@@ -19991,7 +19995,7 @@ var EMandate = {
19991
19995
  device: _this4.deviceFingerprint
19992
19996
  };
19993
19997
  return EMandateAPI.authenticate(chargeParams).then(function (response) {
19994
- _this4.logAPIResponse(response, paymentMethod$3);
19998
+ _this4.logAPIResponse(response, paymentMethod$4);
19995
19999
  return response;
19996
20000
  });
19997
20001
  });
@@ -20050,7 +20054,7 @@ var DigitalBankMandateAPI = {
20050
20054
  }
20051
20055
  };
20052
20056
 
20053
- var paymentMethod$2 = 'bank';
20057
+ var paymentMethod$3 = 'bank';
20054
20058
  var DigitalBankMandate = {
20055
20059
  chargeDigitalBankMandate: function chargeDigitalBankMandate(_ref) {
20056
20060
  var _this = this;
@@ -20066,14 +20070,14 @@ var DigitalBankMandate = {
20066
20070
  walletId: walletId
20067
20071
  };
20068
20072
  return DigitalBankMandateAPI.charge(params).then(function (response) {
20069
- _this.logAPIResponse(response, paymentMethod$2);
20073
+ _this.logAPIResponse(response, paymentMethod$3);
20070
20074
  return response;
20071
20075
  });
20072
20076
  },
20073
20077
  listenForDigitalBankMandateCharge: function listenForDigitalBankMandateCharge(callback) {
20074
20078
  var pusherChannel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
20075
20079
  var listenerOptions = {
20076
- paymentMethod: paymentMethod$2,
20080
+ paymentMethod: paymentMethod$3,
20077
20081
  channel: pusherChannel
20078
20082
  };
20079
20083
  return this.listenForCharge(listenerOptions, callback);
@@ -20545,7 +20549,7 @@ var DirectDebitAPI = {
20545
20549
  }
20546
20550
  };
20547
20551
 
20548
- var paymentMethod$1 = 'direct debit';
20552
+ var paymentMethod$2 = 'direct debit';
20549
20553
  var DirectDebitCharge = {
20550
20554
  loginToDirectDebitAccount: function loginToDirectDebitAccount(_ref) {
20551
20555
  var _this = this;
@@ -20582,14 +20586,14 @@ var DirectDebitCharge = {
20582
20586
  if (!this.directDebit.token) {
20583
20587
  return Promise.reject(Error('Please login with Transaction.loginToDirectDebitAccount() to start a Direct debit charge'));
20584
20588
  }
20585
- this.logAttempt(paymentMethod$1);
20589
+ this.logAttempt(paymentMethod$2);
20586
20590
  var params = {
20587
20591
  account_code: accountCode,
20588
20592
  transaction: this.id,
20589
20593
  token: this.directDebit.token
20590
20594
  };
20591
20595
  return DirectDebitAPI.charge(params).then(function (response) {
20592
- _this2.logAPIResponse(response, paymentMethod$1);
20596
+ _this2.logAPIResponse(response, paymentMethod$2);
20593
20597
  if (response.status) {
20594
20598
  _this2.directDebit.chargeResponse = response;
20595
20599
  }
@@ -20599,7 +20603,7 @@ var DirectDebitCharge = {
20599
20603
  getProvisionedAccounts: function getProvisionedAccounts() {
20600
20604
  var _this3 = this;
20601
20605
  return DirectDebitAPI.getProvisionedAccounts(this.directDebit.token).then(function (response) {
20602
- _this3.logAPIResponse(response, paymentMethod$1);
20606
+ _this3.logAPIResponse(response, paymentMethod$2);
20603
20607
  var status = response.status,
20604
20608
  data = response.data;
20605
20609
  if (status) {
@@ -20619,7 +20623,7 @@ var DirectDebitCharge = {
20619
20623
  token: this.directDebit.token
20620
20624
  };
20621
20625
  return DirectDebitAPI.authenticate(params).then(function (response) {
20622
- _this4.logAPIResponse(response, paymentMethod$1);
20626
+ _this4.logAPIResponse(response, paymentMethod$2);
20623
20627
  return response;
20624
20628
  });
20625
20629
  }
@@ -20804,6 +20808,51 @@ var CapitecPayCharge = {
20804
20808
  }
20805
20809
  };
20806
20810
 
20811
+ var InstalmentsAPI = {
20812
+ parseHostedSessionResponse: function parseHostedSessionResponse(apiResponse) {
20813
+ var _apiResponse$data;
20814
+ var hostedSessionData = (apiResponse === null || apiResponse === void 0 ? void 0 : (_apiResponse$data = apiResponse.data) === null || _apiResponse$data === void 0 ? void 0 : _apiResponse$data.data) || (apiResponse === null || apiResponse === void 0 ? void 0 : apiResponse.data) || apiResponse || {};
20815
+ var parsedResponse = ChargeResponses.parse(apiResponse);
20816
+ return _objectSpread2(_objectSpread2({}, parsedResponse), {}, {
20817
+ data: _objectSpread2(_objectSpread2({}, parsedResponse.data), hostedSessionData)
20818
+ });
20819
+ },
20820
+ createHostedSession: function createHostedSession(params, publicKey) {
20821
+ var language = getLanguage();
20822
+ var headers = _objectSpread2({
20823
+ Authorization: "Bearer ".concat(publicKey)
20824
+ }, language && {
20825
+ 'Accept-Language': language
20826
+ });
20827
+ var url = new URL('instalments/create', configToUse.paystackApiUrl).toString();
20828
+ return axiosInstance.post(url, params, {
20829
+ headers: headers
20830
+ }).then(function (response) {
20831
+ return InstalmentsAPI.parseHostedSessionResponse(response.data);
20832
+ });
20833
+ }
20834
+ };
20835
+
20836
+ var paymentMethod$1 = 'instalments';
20837
+ var InstalmentsCharge = {
20838
+ chargeInstalments: function chargeInstalments() {
20839
+ var _this = this;
20840
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
20841
+ provider = _ref.provider;
20842
+ if (!provider) {
20843
+ return Promise.reject(new Error('Instalment provider is required'));
20844
+ }
20845
+ this.logAttempt(paymentMethod$1);
20846
+ return InstalmentsAPI.createHostedSession({
20847
+ transaction_id: this.id,
20848
+ provider: provider
20849
+ }, this.merchant.key).then(function (response) {
20850
+ _this.logAPIResponse(response, paymentMethod$1);
20851
+ return response;
20852
+ });
20853
+ }
20854
+ };
20855
+
20807
20856
  var ChargeFunctions = {
20808
20857
  get: function get(channel) {
20809
20858
  var chargeFunctions = {
@@ -20818,7 +20867,8 @@ var ChargeFunctions = {
20818
20867
  payattitude: PayattitudeCharge,
20819
20868
  apple_pay: ApplePayCharge,
20820
20869
  paypal: PayPalCharge,
20821
- capitec_pay: CapitecPayCharge
20870
+ capitec_pay: CapitecPayCharge,
20871
+ instalments: InstalmentsCharge
20822
20872
  };
20823
20873
  return chargeFunctions[channel];
20824
20874
  }
@@ -21646,6 +21696,7 @@ var TransactionInstance = /*#__PURE__*/function () {
21646
21696
  this.subscription = data.subscription || null;
21647
21697
  this.planDetails = data.plan_details || null;
21648
21698
  this.exchangeRate = data.exchange_rate || null;
21699
+ this.preChargeCheckEnabled = data.pre_charge_check_enabled || false;
21649
21700
  this.savedCardsConfig = data.saved_cards || {};
21650
21701
  this.supportedBanks = data.supported_banks || [];
21651
21702
  this.isWhiteLabeled = data.whitelabel || null;
@@ -21940,9 +21991,24 @@ var ToolkitAPI = {
21940
21991
  return data;
21941
21992
  });
21942
21993
  },
21943
- fetchCountries: function fetchCountries(_ref2) {
21944
- var scope = _ref2.scope,
21945
- merchantKey = _ref2.merchantKey;
21994
+ preChargeCheck: function preChargeCheck(bin, transactionId) {
21995
+ var url = new URL("/transaction/pre_charge_check/".concat(bin), configToUse.paystackApiUrl).toString();
21996
+ var language = getLanguage();
21997
+ var headers = _objectSpread2({}, language && {
21998
+ 'Accept-Language': language
21999
+ });
22000
+ return axiosInstance.post(url, {
22001
+ transaction_id: transactionId
22002
+ }, {
22003
+ headers: headers
22004
+ }).then(function (_ref2) {
22005
+ var data = _ref2.data;
22006
+ return data;
22007
+ });
22008
+ },
22009
+ fetchCountries: function fetchCountries(_ref3) {
22010
+ var scope = _ref3.scope,
22011
+ merchantKey = _ref3.merchantKey;
21946
22012
  var url = new URL('/address/country', configToUse.paystackApiUrl).toString();
21947
22013
  var language = getLanguage();
21948
22014
  var headers = _objectSpread2({
@@ -21960,9 +22026,9 @@ var ToolkitAPI = {
21960
22026
  return response.data;
21961
22027
  });
21962
22028
  },
21963
- fetchReachStates: function fetchReachStates(_ref3) {
21964
- var country = _ref3.country,
21965
- merchantKey = _ref3.merchantKey;
22029
+ fetchReachStates: function fetchReachStates(_ref4) {
22030
+ var country = _ref4.country,
22031
+ merchantKey = _ref4.merchantKey;
21966
22032
  var url = new URL("/address/country/".concat(country, "/state"), configToUse.paystackApiUrl).toString();
21967
22033
  var language = getLanguage();
21968
22034
  var headers = _objectSpread2({
@@ -22044,6 +22110,11 @@ var Toolkit = /*#__PURE__*/function () {
22044
22110
  value: function resolveCardBin(bin) {
22045
22111
  return ToolkitAPI.resolveCardBin(bin);
22046
22112
  }
22113
+ }, {
22114
+ key: "preChargeCheck",
22115
+ value: function preChargeCheck(bin, transactionId) {
22116
+ return ToolkitAPI.preChargeCheck(bin, transactionId);
22117
+ }
22047
22118
  }]);
22048
22119
  return Toolkit;
22049
22120
  }();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paystack/checkout-js",
3
- "version": "1.52.0-beta.10",
3
+ "version": "1.52.0-beta.12",
4
4
  "description": "Client-side JS library for billing on Paystack",
5
5
  "main": "lib/checkout.js",
6
6
  "module": "es/checkout.js",