@jimrising/easymerchantsdk-react-native 2.7.6 → 2.7.8

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.
@@ -94,7 +94,7 @@ dependencies {
94
94
  implementation 'com.google.android.material:material:1.13.0'
95
95
 
96
96
  // Third-party libs
97
- implementation 'com.app:paysdk:1.9.8'
97
+ implementation 'com.app:paysdk:2.0.0'
98
98
  implementation 'com.hbb20:ccp:2.7.3'
99
99
  implementation 'com.github.bumptech.glide:glide:5.0.4'
100
100
  implementation 'com.github.androidmads:QRGenerator:1.0.5'
@@ -551,9 +551,20 @@ class PaymentInfoVC: BaseVC, BillingInfoVCDelegate {
551
551
  // let rawAmount = Double(self.request?.amount ?? 0)
552
552
  // let amountText = String(format: "$%.2f", rawAmount)
553
553
 
554
- // ✅ new way: use parsedAmount immediately
555
- let resolvedAmount = self.amount // already set above
556
- let amountText = String(format: "$%.2f", resolvedAmount ?? 00.00)
554
+ // ✅ Use decimal-safe amount from backend (avoids binary rounding drift)
555
+ let amountText: String = {
556
+ if let savedAmount = UserStoreSingleton.shared.amount,
557
+ let decimal = Decimal(string: savedAmount) {
558
+ var value = decimal
559
+ var rounded = Decimal()
560
+ NSDecimalRound(&rounded, &value, 2, .plain)
561
+ return "$" + NSDecimalNumber(decimal: rounded).stringValue
562
+ } else if let resolvedAmount = self.amount {
563
+ return String(format: "$%.2f", resolvedAmount)
564
+ } else {
565
+ return "$0.00"
566
+ }
567
+ }()
557
568
 
558
569
  var buttonText: String
559
570
  if !billingVisible && !additionalVisible {
@@ -573,8 +584,19 @@ class PaymentInfoVC: BaseVC, BillingInfoVCDelegate {
573
584
  self.btnPayNowSingleAccountView.setTitle(buttonText, for: .normal)
574
585
  } else {
575
586
  /// When no billingInfoData present
576
- let resolvedAmount = self.amount
577
- let amountText = String(format: "$%.2f", resolvedAmount ?? 00.00)
587
+ let amountText: String = {
588
+ if let savedAmount = UserStoreSingleton.shared.amount,
589
+ let decimal = Decimal(string: savedAmount) {
590
+ var value = decimal
591
+ var rounded = Decimal()
592
+ NSDecimalRound(&rounded, &value, 2, .plain)
593
+ return "$" + NSDecimalNumber(decimal: rounded).stringValue
594
+ } else if let resolvedAmount = self.amount {
595
+ return String(format: "$%.2f", resolvedAmount)
596
+ } else {
597
+ return "$0.00"
598
+ }
599
+ }()
578
600
 
579
601
  let submitText = self.request?.submitButtonText?.isEmpty == false ? self.request!.submitButtonText! : "Pay Now"
580
602
  let defaultTitle = "\(submitText) (\(amountText))"
@@ -2537,73 +2559,26 @@ class PaymentInfoVC: BaseVC, BillingInfoVCDelegate {
2537
2559
  }
2538
2560
 
2539
2561
  private func updateShowSavedCardsVisibility() {
2540
- let shouldShow = emailView.isHidden && OTPView.isHidden
2562
+ // Show the "Show saved cards/accounts" button whenever the OTP view is not visible,
2563
+ // so the user can always re-open saved options after closing OTP or email views.
2564
+ let shouldShow = OTPView.isHidden
2541
2565
  viewBtnShowSavedCards.isHidden = !shouldShow
2542
2566
  viewBtnShowSavedCardHeight.constant = shouldShow ? 50 : 0
2543
2567
  viewBtnShowSavedCardTopCon.constant = shouldShow ? 16 : 0
2544
2568
  }
2545
2569
 
2546
- // @IBAction func actionBtnShowSavedCards(_ sender: UIButton) {
2547
- // if UserStoreSingleton.shared.customerToken == nil {
2548
- // emailView.isHidden = false
2549
- // OTPView.isHidden = true
2550
- // updateShowSavedCardsVisibility()
2551
- // }
2552
- // else {
2553
- // // UserStoreSingleton.shared.isLoggedIn = true
2554
- //
2555
- // emailView.isHidden = true
2556
- // OTPView.isHidden = true
2557
- //
2558
- // if self.selectedPaymentMethod == "Card" {
2559
- // if UserStoreSingleton.shared.customerId == nil {
2560
- // self.OTPView.isHidden = true
2561
- // self.viewCardFields.isHidden = false
2562
- // self.viewSingleSavedCard.isHidden = true
2563
- // self.viewBtnShowSavedCards.isHidden = true
2564
- // self.viewBtnShowSavedCardHeight.constant = 0
2565
- // self.viewBtnShowSavedCardTopCon.constant = 0
2566
- // self.viewChangeCard.isHidden = true
2567
- // self.viewUpdateCard.isHidden = true
2568
- // self.viewAddNewCard.isHidden = true
2569
- // } else {
2570
- // self.getShowCardsApi()
2571
- // self.OTPView.isHidden = true
2572
- // self.viewCardFields.isHidden = true
2573
- // self.viewSingleSavedCard.isHidden = false
2574
- // self.viewBtnShowSavedCards.isHidden = true
2575
- // self.viewBtnShowSavedCardHeight.constant = 0
2576
- // self.viewBtnShowSavedCardTopCon.constant = 0
2577
- // self.viewChangeCard.isHidden = true
2578
- // self.viewUpdateCard.isHidden = true
2579
- // self.viewAddNewCard.isHidden = true
2580
- //
2581
- // self.viewTxtFieldCVVSingleCard.isHidden = true
2582
- // self.btnPayNowSingleCard.isHidden = true
2583
- // self.btnNext.isHidden = true
2584
- // self.btnNextHeight.constant = 0
2585
- // self.btnNextTopCon.constant = 8
2586
- // }
2587
- //
2588
- // self.txtFieldSelectPlanSingleSavedCard.isHidden = true
2589
- // self.txtFieldSelectDateSingleSavedCard.isHidden = true
2590
- //
2591
- // self.txtFieldSelectPlanSingleSavedBankView.isHidden = true
2592
- // self.txtFieldSelectDateSingleSavedBankView.isHidden = true
2593
- // } else if self.selectedPaymentMethod == "Bank" {
2594
- // self.getShowBankAccountsApi()
2595
- // }
2596
- // }
2597
- // }
2598
-
2599
-
2600
2570
  @IBAction func actionBtnShowSavedCards(_ sender: UIButton) {
2601
- if UserStoreSingleton.shared.customerToken == nil {
2571
+ // Mirror MobileCheckout iOS: require both customerToken and customerId to treat as a verified saved customer.
2572
+ if UserStoreSingleton.shared.customerToken == nil || UserStoreSingleton.shared.customerId == nil {
2573
+ // No verified saved customer yet – show email view so user can request OTP
2574
+ isSavedViewVisible = false
2602
2575
  emailView.isHidden = false
2603
2576
  OTPView.isHidden = true
2577
+ viewSingleSavedCard.isHidden = true
2578
+ viewSingleSavedAccount.isHidden = true
2604
2579
  updateShowSavedCardsVisibility()
2605
- }
2606
- else {
2580
+ } else {
2581
+ // Verified saved customer exists – show saved cards/accounts UI
2607
2582
  isSavedViewVisible = true
2608
2583
 
2609
2584
  emailView.isHidden = true
@@ -2614,21 +2589,15 @@ class PaymentInfoVC: BaseVC, BillingInfoVCDelegate {
2614
2589
  self.OTPView.isHidden = true
2615
2590
  self.viewCardFields.isHidden = false
2616
2591
  self.viewSingleSavedCard.isHidden = true
2617
- // self.viewBtnShowSavedCards.isHidden = true
2618
- // self.viewBtnShowSavedCardHeight.constant = 0
2619
- // self.viewBtnShowSavedCardTopCon.constant = 0
2620
2592
  self.viewChangeCard.isHidden = true
2621
2593
  self.viewUpdateCard.isHidden = true
2622
2594
  self.viewAddNewCard.isHidden = true
2623
2595
  } else {
2624
- // Only show saved cards when button tapped
2596
+ // Only show saved cards when button tapped
2625
2597
  self.getShowCardsApi()
2626
2598
  self.OTPView.isHidden = true
2627
2599
  self.viewCardFields.isHidden = true
2628
2600
  self.viewSingleSavedCard.isHidden = false
2629
- // self.viewBtnShowSavedCards.isHidden = true
2630
- // self.viewBtnShowSavedCardHeight.constant = 0
2631
- // self.viewBtnShowSavedCardTopCon.constant = 0
2632
2601
  self.viewChangeCard.isHidden = true
2633
2602
  self.viewUpdateCard.isHidden = true
2634
2603
  self.viewAddNewCard.isHidden = true
@@ -2646,7 +2615,7 @@ class PaymentInfoVC: BaseVC, BillingInfoVCDelegate {
2646
2615
  self.txtFieldSelectPlanSingleSavedBankView.isHidden = true
2647
2616
  self.txtFieldSelectDateSingleSavedBankView.isHidden = true
2648
2617
  } else if self.selectedPaymentMethod == "Bank" {
2649
- // Only show saved banks when button tapped
2618
+ // Only show saved banks when button tapped
2650
2619
  self.getShowBankAccountsApi()
2651
2620
  self.viewBankFields.isHidden = true
2652
2621
  self.viewSingleSavedAccount.isHidden = false
@@ -1,6 +1,6 @@
1
1
  Pod::Spec.new do |s|
2
2
  s.name = 'easymerchantsdk'
3
- s.version = '2.7.6'
3
+ s.version = '2.7.8'
4
4
  s.summary = 'A React Native SDK for Easy Merchant.'
5
5
  s.description = <<-DESC
6
6
  A React Native SDK to enable Easy Merchant functionality in mobile applications.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jimrising/easymerchantsdk-react-native",
3
- "version": "2.7.6",
3
+ "version": "2.7.8",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {