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['payment_intent_id'] ??
response['transaction_id'] ??
response['id'];
final orderId = response['order_id'] ?? response['orderId'];
switch (status) {
case 'succeeded':
case 'success':
case 'completed':
return PaymentResponse.success(
transactionId: transactionId,
message: 'Payment completed successfully',
orderId: orderId,
provider: PaymentProvider.stripe,
amount: response['amount']?.toDouble(),
currency: response['currency'],
rawResponse: response,
);
case 'requires_action':
case 'requires_source_action':
case 'processing':
case 'pending':
return PaymentResponse.pending(
transactionId: transactionId,
message: 'Payment is being processed',
orderId: orderId,
provider: PaymentProvider.stripe,
rawResponse: response,
);
case 'canceled':
case 'cancelled':
return PaymentResponse.cancelled(
message: 'Payment was cancelled',
orderId: orderId,
provider: PaymentProvider.stripe,
rawResponse: response,
);
case 'failed':
case 'requires_payment_method':
default:
return PaymentResponse.failure(
message: response['error_message'] ??
response['failure_reason'] ??
'Payment failed',
errorCode: response['error_code'] ?? response['decline_code'],
orderId: orderId,
provider: PaymentProvider.stripe,
rawResponse: response,
);
}
}