Я использую флаттер 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 не открывается.