generateHash method

  1. @override
Future<String?> generateHash({
  1. required EasebuzzPaymentModel paymentModel,
  2. required String key,
  3. required String salt,
})
override

Generates a hash for the payment transaction This method is not supported on web platform

Implementation

@override
Future<String?> generateHash({
  required EasebuzzPaymentModel paymentModel,
  required String key,
  required String salt,
}) async {
  try {
    // Build the hash sequence
    String valueOrBlank(String? value) =>
        (value?.isNotEmpty ?? false) ? value! : '';
    final data =
        '$key|${paymentModel.txnid}|${paymentModel.amount}|${paymentModel.productinfo}|'
        '${paymentModel.firstname}|${paymentModel.email}|'
        '${valueOrBlank(paymentModel.udf1)}|${valueOrBlank(paymentModel.udf2)}|'
        '${valueOrBlank(paymentModel.udf3)}|${valueOrBlank(paymentModel.udf4)}|'
        '${valueOrBlank(paymentModel.udf5)}|${valueOrBlank(paymentModel.udf6)}|'
        '${valueOrBlank(paymentModel.udf7)}||'
        '||$salt';

    // Get CryptoJS from window object
    final cryptoJS = getProperty(web.window, 'CryptoJS');

    // Generate SHA-512 hash
    final hash = callMethod(cryptoJS, 'SHA512', [data]);

    // Convert to string
    final hashString = callMethod(hash, 'toString', []);

    return hashString;
  } catch (e) {
    debugPrint('Error generating hash on web: $e');
    return null;
  }
}