createPaymentWithWidget method
Future<void>
createPaymentWithWidget({
- required BuildContext context,
- required PayOrcPaymentRequest request,
- required dynamic errorResult(
- String? message
- required dynamic onPopResult(
- String? message
To create payment with widget
Implementation
Future<void> createPaymentWithWidget(
{required BuildContext context,
required PayOrcPaymentRequest request,
required Function(String? message) errorResult,
required Function(String? pOrderId) onPopResult}) async {
try {
await clearData();
if (context.mounted) {
_showProgressDialog(context);
}
if (configMemoryHolder.payOrcKeysValid?.status == PayOrcStatus.success) {
final response = await _client.createPayment(request);
configMemoryHolder.payOrcPaymentResponse = response;
final paymentUrl = configMemoryHolder.payOrcPaymentResponse?.iframeLink;
if (context.mounted) {
_hideProgressDialog(context);
// Add a slight delay before pushing the new page
Future.delayed(Duration(milliseconds: 200), () {
if (context.mounted) {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => PayOrcWebView(
paymentUrl: paymentUrl!,
onPopResult: onPopResult,
),
));
}
});
}
} else {
final merchantKey = await preferenceHelper.getMerchantKey();
final merchantSecret = await preferenceHelper.getMerchantSecret();
final validate = await _client.validateMerchantKeys(PayOrcKeysRequest(
merchantKey: merchantKey,
merchantSecret: merchantSecret,
env: configMemoryHolder.environment));
if (validate.status == PayOrcStatus.success) {
final response = await _client.createPayment(request);
configMemoryHolder.payOrcPaymentResponse = response;
final paymentUrl =
configMemoryHolder.payOrcPaymentResponse?.iframeLink;
if (context.mounted) {
_hideProgressDialog(context);
// Add a slight delay before pushing the new page
Future.delayed(Duration(milliseconds: 200), () {
if (context.mounted) {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => PayOrcWebView(
paymentUrl: paymentUrl!,
onPopResult: onPopResult,
),
));
}
});
}
} else {
if (context.mounted) {
_hideProgressDialog(context);
}
configMemoryHolder.payOrcKeysValid = null;
errorResult.call(validate.message ?? "Merchant key / secret invalid");
return;
}
}
} on HttpException catch (e) {
if (e.uri?.path.contains(ApiPaths.URL_CHECK_KEYS) == true) {
configMemoryHolder.payOrcKeysValid = null;
}
if (context.mounted) {
_hideProgressDialog(context);
}
errorResult.call(e.message);
} finally {
if (context.mounted) {
_hideProgressDialog(context);
}
}
}