React Native Bridge отлично работает на Android 7, но падает на Android 9 - PullRequest
0 голосов
/ 12 марта 2020

Я создал мост в своем собственном приложении для локальной интеграции платежей. Он отлично работает на Android 7 , но на Android 9 приложение вылетает. Я не могу найти ничего в консоли. Также не могу найти что-нибудь на Google тоже. Мне также не хватает знаний по Java, поэтому я сталкиваюсь с проблемой при обнаружении настоящей проблемы. Я тоже нахожусь в тупике, поэтому мне нужно быстрое решение. Было бы очень полезно, если бы кто-нибудь показал мне какой-то путь. Код моего моста ниже -

package com.sb_ecom.sslcommerzbridge;


import com.sslwireless.sslcommerzlibrary.model.initializer.SSLCommerzInitialization;
import com.sslwireless.sslcommerzlibrary.model.initializer.CustomerInfoInitializer;
import com.sslwireless.sslcommerzlibrary.model.response.TransactionInfoModel;
import com.sslwireless.sslcommerzlibrary.model.util.CurrencyType;
import com.sslwireless.sslcommerzlibrary.model.util.SdkType;
import com.sslwireless.sslcommerzlibrary.view.singleton.IntegrateSSLCommerz;
import com.sslwireless.sslcommerzlibrary.viewmodel.listener.TransactionResponseListener;

import android.support.annotation.Nullable;
import android.util.Log;
import org.json.JSONObject;
import org.json.JSONException;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.facebook.react.bridge.Callback;
import java.util.HashMap;
import java.util.Map;
//import SSLCommerzInitialization;

public class SslCommerzBridgeModule extends ReactContextBaseJavaModule {
    public static final String REACT_CLASS = "SslCommerzBridge";
    private static ReactApplicationContext reactContext = null;

    public SslCommerzBridgeModule(ReactApplicationContext context) {
        // Pass in the context to the constructor and save it so you can emit events
        // https://facebook.github.io/react-native/docs/native-modules-android.html#the-toast-module
        super(context);

        reactContext = context;
    }

    @Override
    public String getName() {
        // Tell React the name of the module
        // https://facebook.github.io/react-native/docs/native-modules-android.html#the-toast-module
        return REACT_CLASS;
    }

    @Override
    public Map<String, Object> getConstants() {
        // Export any constants to be used in your native module
        // https://facebook.github.io/react-native/docs/native-modules-android.html#the-toast-module
        final Map<String, Object> constants = new HashMap<>();
        constants.put("EXAMPLE_CONSTANT", "example");

        return constants;
    }

    @ReactMethod
    public void payWithSslCommerz(String sslCommerzParams, Callback callBack){
        String transactionStatus = "";
        try {
            JSONObject data = new JSONObject(sslCommerzParams); 
            String storeId = data.getString("storeId");
            String storePass = data.getString("storePass");
            String name = data.getString("name");
            String email = data.getString("email");
            String phone = data.getString("phone");
            String orderId = data.getString("orderId");
            Double price = data.getDouble("price");
            transactionStatus = name +"===here "+orderId+" "+price  +" "+storeId+" "+storePass  +" "+email+" "+phone ;
//callBack.invoke(transactionStatus);
            final SSLCommerzInitialization sslCommerzInitialization = new SSLCommerzInitialization(storeId, storePass, price, CurrencyType.BDT, orderId, "", SdkType.TESTBOX);
            //final CustomerInfoInitializer customerInfoIntializer = new CustomerInfoInitializer(name, email, "", "", "", "", phone);.addCustomerInfoInitializer(customerInfoIntializer)

            IntegrateSSLCommerz.getInstance(reactContext).addSSLCommerzInitialization(sslCommerzInitialization).buildApiCall(new TransactionResponseListener() {

                @Override
                public void transactionSuccess(TransactionInfoModel transactionInfoModel) {
                    Log.d("SSL", "Transaction ID: " + transactionInfoModel.getTranId());
                     callBack.invoke("success");
                }

                @Override
                public void transactionFail(String s) {
                    Log.e("SSL", "Transaction ID: " + s);
                     callBack.invoke("fail");
                }

                @Override
                public void merchantValidationError(String s) {
                      callBack.invoke("error");
                }
            });

            } catch (JSONException e) {
                callBack.invoke(e);
                System.out.println(e);
            }  

      // callBack.invoke(transactionStatus);

    }
}

Любая помощь высоко ценится. Заранее спасибо.

...