loadPaymentData method

Future<Map<String, dynamic>?> loadPaymentData(
  1. Map<String, dynamic> request,
  2. SmartCheckoutEnvironment environment
)

Implementation

Future<Map<String, dynamic>?> loadPaymentData(
  Map<String, dynamic> request,
  SmartCheckoutEnvironment environment,
) async {
  try {
    debugPrint('📱 Request received: $request');

    final payClient = Pay({
      PayProvider.apple_pay: PaymentConfiguration.fromJsonString(
        jsonEncode({
          'provider': 'apple_pay',
          'data': {
            'merchantIdentifier': request['merchantIdentifier'] as String,
            'merchantCapabilities': ['3DS', 'debit', 'credit'],
            'supportedNetworks': ['visa', 'masterCard'],
            'countryCode': request['countryCode'] as String,
            'currencyCode': request['currencyCode'] as String,
          },
        }),
      ),
    });

    final item = request['item'] as Map<String, dynamic>;
    final result = await payClient
        .showPaymentSelector(PayProvider.apple_pay, [
          PaymentItem(
            label: item['label'] as String,
            amount: item['price'] as String,
            status: PaymentItemStatus.final_price,
          ),
          PaymentItem(
            label: request['merchantLabel'] as String,
            amount: request['totalPrice'] as String,
            status: PaymentItemStatus.final_price,
          ),
        ]);

    return result;
  } catch (e) {
    debugPrint('❌ Error starting Apple Pay: $e');
    return null;
  }
}