charge method

  1. @override
Future<PaymentResult> charge({
  1. required int amount,
  2. required String reference,
  3. TippingConfiguration? tippingConfiguration,
  4. bool enableInstallments = false,
})
override

Process a card payment

amount - Payment amount in cents (e.g., 1000 = $10.00) reference - Unique reference ID for this payment tippingConfiguration - Optional tipping configuration enableInstallments - Enable installments (Android only)

Implementation

@override
Future<PaymentResult> charge({
  required int amount,
  required String reference,
  TippingConfiguration? tippingConfiguration,
  bool enableInstallments = false,
}) async {
  try {
    final result = await methodChannel.invokeMethod<Map>('charge', {
      'amount': amount,
      'reference': reference,
      'tippingConfiguration': tippingConfiguration?.toMap(),
      'enableInstallments': enableInstallments,
    });

    if (result == null) {
      throw ZettleException(
        code: 'PAYMENT_FAILED',
        message: 'Payment returned null result',
      );
    }

    return PaymentResult.fromMap(Map<String, dynamic>.from(result));
  } on PlatformException catch (e) {
    throw ZettleException(
      code: e.code,
      message: e.message ?? 'Payment failed',
      details: e.details,
    );
  }
}