Плагин Razorpay Flutter Ошибка исключения платформы в openCheckOut () - PullRequest
0 голосов
/ 29 марта 2020

Я использую флаттер razorpay для платежного шлюза. Раньше он работал нормально, но по мере роста проекта он перестал работать.

Показывает:

Exception has occurred.
PlatformException (PlatformException(error, Attempt to invoke virtual method 
'java.lang.String android.content.Context.getPackageName()' on a null object reference, null))

Вот мой код:

import 'package:razorpay_flutter/razorpay_flutter.dart';

class RazorPayScreen extends StatefulWidget {
StudentUser user;
double amount;
var packageId;
RazorPayScreen(this.user, this.packageId,this.amount);
@override
 State<StatefulWidget> createState() {
   return _RazorPayScreen(user, amount);
 }
 }

class _RazorPayScreen extends State<RazorPayScreen> {
  StudentUser user;
  double totalAmount;
  _RazorPayScreen(this.user, this.totalAmount);
  Razorpay razorpay;

  void openCheckOut() async {
      var options = {
      'key': 'key',
       'amount': totalAmount * 100,
      'name': 'Razor payment',
      'description': 'Buy Package',
       'prefill': {'contact': '', 'email': ''},
       'external': {
        //  'wallets': ['paytm']
      }
     };
     try {
       razorpay.open(options);
     } catch (e) {
       print(e.toString());
    }
   }

  _handlePaymentSuccess(PaymentSuccessResponse response) async {
     await studentBuyPackage(user.key, widget.packageId, totalAmount);
     Fluttertoast.showToast(msg: "Success" + response.paymentId);
     Navigator.pop(context);
   }

  _handlePaymentError(PaymentFailureResponse response) {
    Fluttertoast.showToast(
      msg: "Failed" + response.code.toString() + ' ' + response.message);
   }



    @override
      void initState() {
     razorpay = Razorpay();
     razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, _handlePaymentSuccess);
     razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, _handlePaymentError);
       //razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET, _handleExternalWallet);

      super.initState();
    }

   @override
    void dispose() {
     super.dispose();
     razorpay.clear();
      }

   @override
    Widget build(BuildContext context) {
      return Scaffold(
        appBar: AppBar(
       title: Text('Buy Package'),
         backgroundColor: Colors.black.withOpacity(0.95),
       ),
        body: Container(
         child: Center(
            child: Column(
          children: <Widget>[
            LimitedBox(
               child: Text(totalAmount.toString()),
             ),
          RaisedButton(
            color: Colors.black,
            child: Text(
              'Buy Package',
              style: TextStyle(color: Colors.white),
            ),
            onPressed: () {
              openCheckOut();
            },
          )
        ],
      ),
    ),
  ),
    );
   }
  }

Может ли это быть потому, что я прокомментировал

//GeneratedPluginRegistrant.registerWith(flutterEngine);

строку в MainActivity. java из-за Агоры sdk, требующей от меня.

public class MainActivity extends FlutterActivity {
  @Override
  public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
  //GeneratedPluginRegistrant.registerWith(flutterEngine);
  }
 }

Как я могу это исправить? Страница платежа razorpay не открывается.

...