интеграция выдает ошибку в Android, используя react-native-papal

Я использовал модуль react-native-paypal, но при интеграции в Android выдает какую-то ошибку во время работы Android, вот скриншот ошибки. введите здесь описание изображения

Вот код, в котором отображается ошибка MainActivity.java.

 package com.camp;

    import com.facebook.react.ReactActivity;
    import android.content.Intent; // <--


    public class MainActivity extends ReactActivity {
        //public static Activity activity;
    //private static final int PAY_PAL_REQUEST_ID = 9
        /**
         * Returns the name of the main component registered from JavaScript.
         * This is used to schedule rendering of the component.
         */

        @Override
       public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
            super.onActivityResult(requestCode, resultCode, data);

           if (requestCode == 9) {
                payPalPackage.handleActivityResult(requestCode, resultCode, data); // <--
            } else {
                otherModulesHandlers(requestCode, resultCode, data);
            }
        }

        @Override
        protected String getMainComponentName() {
            return "Camp";
        }

    }

MainApplication.java

package com.camp;

import android.app.Application;
import android.util.Log;

import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import br.com.vizir.rn.paypal.PayPalPackage;

import java.util.Arrays;
import java.util.List;

public class MainApplication extends Application implements ReactApplication {
   private static final int PAY_PAL_REQUEST_ID = 9; // <-- Can be any unique number
    private PayPalPackage payPalPackage; // <--

  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
    @Override
    protected boolean getUseDeveloperSupport() {
      return BuildConfig.DEBUG;
    }

    @Override
    protected List<ReactPackage> getPackages() {
      payPalPackage = new PayPalPackage(PAY_PAL_REQUEST_ID);  // <--
      return Arrays.<ReactPackage>asList(
        payPalPackage,  // <--
          new MainReactPackage()

      );
    }
  };

  @Override
  public ReactNativeHost getReactNativeHost() {
      return mReactNativeHost;
  }
}

Пожалуйста, дайте мне предложения о том, как решить эту ошибку. Любая помощь высоко ценится

После всех изменений в моем коде, но по-прежнему возникают проблемы, см. изображение ниже введите здесь описание изображения

пожалуйста, дайте мне предложения, как решить эти типы ошибок

paypalcode в режиме реагирования

paypal(){
    PayPalAndroid.paymentRequest({
      clientId: '............',
      environment: PayPalAndroid.SANDBOX,
      price: '0.01',
      currency: 'EUR',
      description: 'PayPal Test'
    }).then((confirm, payment) => console.log('Paid'))
    .catch((error_code) => console.error('Failed to pay through PayPal'));
  }

здесь вместо консоли я написал предупреждение, но оно не показывает предупреждение, я пытался много раз, я не получил оповещение об успехе или оповещение о перехвате, пожалуйста, дайте мне предложения, как это решить


person Hussian Shaik    schedule 24.11.2016    source источник
comment
Можете ли вы добавить свой код Java?   -  person agenthunt    schedule 26.11.2016
comment
@agent_hunt добавил код Java, пожалуйста, проверьте его и дайте мне предложения   -  person Hussian Shaik    schedule 26.11.2016


Ответы (1)


Версия react-native-paypal в реестре npm и ее репозитории не были обновлены для работы с последними версиями react-native. Вы можете использовать эту вилку https://github.com/sharafat/react-native-paypal вместо этого.

package.json

"dependencies": {
    "react": "15.4.1",
    "react-native": "0.38.0",
    "react-native-paypal": "https://github.com/sharafat/react-native-paypal.git"
  },

MainActivity.java

...    
import android.content.Intent;

import com.facebook.react.ReactActivity;

public class MainActivity extends ReactActivity {

    /**
     * Returns the name of the main component registered from JavaScript.
     * This is used to schedule rendering of the component.
     */
    @Override
    protected String getMainComponentName() {
        return "ReactNativePayPalTest";
    }

    @Override
 public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == MainApplication.PAY_PAL_REQUEST_ID) { // <--
        ((MainApplication) getApplication()).payPalPackage.handleActivityResult(requestCode, resultCode, data); // <--
    } else {
//        otherModulesHandlers(requestCode, resultCode, data);
    }
 }
}

MainApplication.java

...

import android.app.Application;

import com.facebook.react.ReactApplication;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;

import java.util.Arrays;
import java.util.List;

import br.com.vizir.rn.paypal.PayPalPackage;

public class MainApplication extends Application implements ReactApplication {

  public static final int PAY_PAL_REQUEST_ID = 9; // <-- Can be any unique number
  public PayPalPackage payPalPackage;

  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
    @Override
    protected boolean getUseDeveloperSupport() {
      return BuildConfig.DEBUG;
    }

    @Override
    protected List<ReactPackage> getPackages() {
      payPalPackage = new PayPalPackage(PAY_PAL_REQUEST_ID);
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
          payPalPackage
      );
    }
  };

  @Override
  public ReactNativeHost getReactNativeHost() {
    return mReactNativeHost;
  }

  @Override
  public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);
  }
}
person agenthunt    schedule 26.11.2016
comment
скриншот выше - это ошибка, с которой я столкнулся после всех изменений в моем коде, пожалуйста, дайте мне предложения, как решить эту проблему. - person Hussian Shaik; 05.12.2016
comment
Вы, вероятно, используете более старый реактивный код. Убедитесь, что вы импортируете компонент из реагирующего пакета примерно так: import React, { Component } from 'react'; вместо import React, { Component } from 'react-native'; - person agenthunt; 05.12.2016
comment
я делаю только так, но ошибка в коде модуля кода react-native-paypal index.js, пожалуйста, дайте мне предложения - person Hussian Shaik; 05.12.2016
comment
payPalPackage = новый PayPalPackage (PAY_PAL_REQUEST_ID); в основном ошибка такая в терминале - person Hussian Shaik; 05.12.2016
comment
Разве вы не изменили свой файл package.json, как показано в ответе? Обязательно установите npm - person agenthunt; 05.12.2016
comment
такая же проблема, но проблема теперь не с paypalPackage, это как на скриншоте выше, пожалуйста, дайте мне предложение, как решить - person Hussian Shaik; 05.12.2016
comment
Я добавил сюда свой собственный код реакции. Я хочу показать сообщение об успехе в предупреждении, но оно не показывает предупреждение об успехе или неудаче. - person Hussian Shaik; 08.12.2016
comment
Будет ли какой-либо орган предоставлять рабочий код? получаю ту же проблему, что и на первом экране! @HussianShaik ты это исправил? - person Brijmohan Karadia; 19.06.2017