diff --git a/lib/razorpay_flutter.dart b/lib/razorpay_flutter.dart index e731c347..534a4594 100644 --- a/lib/razorpay_flutter.dart +++ b/lib/razorpay_flutter.dart @@ -31,28 +31,27 @@ class Razorpay { } /// Opens Razorpay checkout - void open(Map options) async { + Future> open(Map options) async { Map validationResult = _validateOptions(options); if (!validationResult['success']) { - _handleResult({ + return _handleResult({ 'type': _CODE_PAYMENT_ERROR, 'data': { 'code': INVALID_OPTIONS, 'message': validationResult['message'] } }); - return; } var response = await _channel.invokeMethod('open', options); - _handleResult(response); + return _handleResult(response); } /// Handles checkout response from platform - void _handleResult(Map response) { + Map _handleResult(Map response) { String eventName; - Map data = response["data"]; + Map data = response['data']; dynamic payload; @@ -79,6 +78,11 @@ class Razorpay { } _eventEmitter.emit(eventName, null, payload); + + // Creating a response map + Map res = {'event': eventName}; + res['data'] = payload?.toJson(); + return res; } /// Registers event listeners for payment events @@ -123,13 +127,21 @@ class PaymentSuccessResponse { PaymentSuccessResponse(this.paymentId, this.orderId, this.signature); - static PaymentSuccessResponse fromMap(Map map) { - String paymentId = map["razorpay_payment_id"]; - String signature = map["razorpay_signature"]; - String orderId = map["razorpay_order_id"]; + factory PaymentSuccessResponse.fromMap(Map map) { + String paymentId = map['razorpay_payment_id']; + String signature = map['razorpay_signature']; + String orderId = map['razorpay_order_id']; return new PaymentSuccessResponse(paymentId, orderId, signature); } + + Map toJson() { + return { + 'razorpay_payment_id': this.paymentId, + 'razorpay_signature': this.signature, + 'razorpay_order_id': this.orderId, + }; + } } class PaymentFailureResponse { @@ -138,11 +150,15 @@ class PaymentFailureResponse { PaymentFailureResponse(this.code, this.message); - static PaymentFailureResponse fromMap(Map map) { - var code = map["code"] as int; - var message = map["message"] as String; + factory PaymentFailureResponse.fromMap(Map map) { + var code = map['code'] as int; + var message = map['message'] as String; return new PaymentFailureResponse(code, message); } + + Map toJson() { + return {'code': this.code, 'message': this.message}; + } } class ExternalWalletResponse { @@ -150,8 +166,12 @@ class ExternalWalletResponse { ExternalWalletResponse(this.walletName); - static ExternalWalletResponse fromMap(Map map) { - var walletName = map["external_wallet"] as String; + factory ExternalWalletResponse.fromMap(Map map) { + var walletName = map['external_wallet'] as String; return new ExternalWalletResponse(walletName); } -} + + Map toJson() { + return {'external_wallet': this.walletName}; + } +} \ No newline at end of file