pay method
Initiates a UPI payment using system app chooser.
Implementation
@override
Future<UpiPaymentResult> pay(UpiPaymentRequest request) async {
request.validate();
final paymentUri = UpiUriBuilder.buildPaymentUri(request);
try {
final rawResponse = await methodChannel.invokeMethod<String>('pay', {
'uri': paymentUri.toString(),
'request': request.toMap(),
});
return UpiResponseParser.parseResponse(rawResponse, rawUri: paymentUri);
} on PlatformException catch (e) {
if (e.code == 'USER_CANCELLED') {
return UpiPaymentResult(
status: UpiPaymentStatus.cancelled,
message: e.message ?? 'User cancelled payment.',
rawResponse: e.details?.toString(),
rawUri: paymentUri,
);
}
throw UpiException(
code: _mapErrorCode(e.code),
message: e.message ?? 'Payment initiation failed.',
details: e.details,
);
}
}