requestPaymentToken method
Future<String>
requestPaymentToken({
- required double amount,
- required String currency,
- required String integrationId,
- required BillingData billingData,
- int userTokenExpiration = ApiConstants.defaultUserTokenExpiration,
Request payment token
Implementation
Future<String> requestPaymentToken({
required double amount,
required String currency,
required String integrationId,
required BillingData billingData,
int userTokenExpiration = ApiConstants.defaultUserTokenExpiration,
}) async {
if (_authToken == null || _orderId == null) {
throw const PaymentInitializationException('Order not created or token not available');
}
try {
final response = await _apiService.post<Map<String, dynamic>>(
ApiConstants.keys,
data: {
"auth_token": _authToken,
"expiration": userTokenExpiration,
"amount_cents": ((amount * 100).round()).toString(),
"order_id": _orderId,
"billing_data": billingData.toJson(),
"currency": currency,
"integration_id": integrationId,
"lock_order_when_paid": false
},
);
if (response.statusCode != null && response.statusCode! >= 200) {
return response.data?["token"]?.toString() ?? '';
} else {
throw const PaymentTokenException();
}
} catch (e) {
if (e is PaymobException) rethrow;
throw const PaymentTokenException('Failed to get payment token');
}
}