selectShippingRateInStoreCart method
Select shipping rate for a package
packageId Package ID (required)
rateId Rate ID (required)
bearerToken Optional Bearer token for authenticated users
useFaker Fakes the API request
Returns the full cart object response
Implementation
Future<StoreCart> selectShippingRateInStoreCart({
required int packageId,
required String rateId,
String? bearerToken,
bool? useFaker,
}) async {
final isUsingFaker = useFaker ?? this.useFaker;
if (isUsingFaker) {
return StoreCart.fake();
}
try {
final originalBaseUrl = dio.options.baseUrl;
dio.options.baseUrl = '$baseUrl/wp-json/wc/store/v1';
dio.options.headers = {};
final headers = await _buildStoreApiHeaders(bearerToken: bearerToken);
final response = await dio.post(
_StoreCartEndpoints.selectShippingRate,
options: Options(headers: headers),
queryParameters: {'package_id': packageId, 'rate_id': rateId},
);
await _extractAndStoreCartToken(response, bearerToken: bearerToken);
dio.options.baseUrl = originalBaseUrl;
if (response.statusCode != null &&
response.statusCode! >= 200 &&
response.statusCode! < 300) {
return StoreCart.fromJson(response.data);
} else {
throw Exception(
"API call failed with status code: ${response.statusCode}",
);
}
} on DioException catch (e) {
final errorMsg = e.response?.data["message"] ?? e.message;
throw Exception("API call failed: $errorMsg");
} catch (e) {
throw Exception("Unexpected error in API call: ${e.toString()}");
}
}