parsePaymentResponse method
Parse provider-specific response into standardized PaymentResponse
Implementation
@override
PaymentResponse parsePaymentResponse(Map<String, dynamic> response) {
final status = response['status']?.toString().toLowerCase();
final transactionId = response['razorpay_payment_id'] ??
response['payment_id'] ??
response['id'];
final orderId = response['razorpay_order_id'] ??
response['order_id'] ??
response['orderId'];
switch (status) {
case 'captured':
case 'authorized':
case 'success':
return PaymentResponse.success(
transactionId: transactionId,
message: 'Payment completed successfully',
orderId: orderId,
provider: PaymentProvider.razorpay,
amount: response['amount']?.toDouble(),
currency: response['currency'],
rawResponse: response,
);
case 'created':
case 'pending':
return PaymentResponse.pending(
transactionId: transactionId,
message: 'Payment is being processed',
orderId: orderId,
provider: PaymentProvider.razorpay,
rawResponse: response,
);
case 'cancelled':
case 'canceled':
return PaymentResponse.cancelled(
message: 'Payment was cancelled',
orderId: orderId,
provider: PaymentProvider.razorpay,
rawResponse: response,
);
case 'failed':
case 'error':
default:
return PaymentResponse.failure(
message: response['error_description'] ??
response['error']['description'] ??
'Payment failed',
errorCode: response['error_code'] ?? response['error']['code'],
orderId: orderId,
provider: PaymentProvider.razorpay,
rawResponse: response,
);
}
}