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 {
    // Function to return blank for null or empty values
    String valueOrBlank(String? value) =>
        (value?.isNotEmpty ?? false) ? value! : '';

    // Build the hash sequence
    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';

    // Generate the hash using SHA-512
    return sha512.convert(utf8.encode(data)).toString();
  } catch (e) {
    debugPrint('Error generating hash: $e');
    return null;
  }
}