mkharibalaji / react-native-adyen-payment

React Native Adyen Payment
https://mkharibalaji.github.io/react-native-adyen-payment/
MIT License
35 stars 35 forks source link

Crash on Android with Error IndexOutOfBoundsException #11

Closed jackie-clarityhk closed 4 years ago

jackie-clarityhk commented 4 years ago

In Android, when the app tries to call the function to get payment methods . after the response returns:

{
          groups: [
            { name: "Credit Card", types: ["visa", "mc", "amex", "jcb"] },
          ],
          paymentMethods: [
            {
              brands: ["visa", "mc", "amex", "jcb"],
              details: [
                { key: "encryptedCardNumber", type: "cardToken" },
                { key: "encryptedSecurityCode", type: "cardToken" },
                { key: "encryptedExpiryMonth", type: "cardToken" },
                { key: "encryptedExpiryYear", type: "cardToken" },
                { key: "holderName", optional: true, type: "text" },
              ],
              name: "Credit Card",
              type: "scheme"
            },
            { name: "UnionPay", supportsRecurring: true, type: "unionpay" }
          ]
        }

the Android app crashed with this error:

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
        at java.util.Collections$SingletonList.get(Collections.java:4863)
        at com.rnlib.adyen.AdyenPaymentModule.showDropInComponent(AdyenPaymentModule.kt:407)
        at com.rnlib.adyen.AdyenPaymentModule.access$showDropInComponent(AdyenPaymentModule.kt:73)
        at com.rnlib.adyen.AdyenPaymentModule$showPayment$1.onResponse(AdyenPaymentModule.kt:227)
        at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1$1.run(DefaultCallAdapterFactory.java:83)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
jackie-clarityhk commented 4 years ago

It turn out the error happens when set a shopperLocale value contains no '-'. e.g. "zh", "fr".

Setting a value contains "-" will not have this issue . e.g "en_US"

mkharibalaji commented 4 years ago

@jackie-clarityhk - Thats Correct !!.

We need to pass the ShopperLocale in "en_US" format with underscore as separator.