diff --git a/lib/api/request_models/create_stripe_checkout_request.dart b/lib/api/request_models/create_stripe_checkout_request.dart new file mode 100644 index 0000000..e29458f --- /dev/null +++ b/lib/api/request_models/create_stripe_checkout_request.dart @@ -0,0 +1,25 @@ +import 'package:client_common/api/request_models/api_request.dart'; + +class CreateStripeCheckoutRequest extends ApiRequest { + int appId; + String plan; + String customer; + String successUrl; + String cancelUrl; + + CreateStripeCheckoutRequest({ + required this.appId, + required this.plan, + required this.customer, + required this.successUrl, + required this.cancelUrl, + }); + + Map toJson() => { + 'id': appId, + 'plan': plan, + 'customer': customer, + 'success_url': successUrl, + 'cancel_url': cancelUrl, + }; +} diff --git a/lib/api/request_models/create_stripe_customer_request.dart b/lib/api/request_models/create_stripe_customer_request.dart new file mode 100644 index 0000000..015b693 --- /dev/null +++ b/lib/api/request_models/create_stripe_customer_request.dart @@ -0,0 +1,13 @@ +import 'package:client_common/api/request_models/api_request.dart'; + +class CreateStripeCustomerRequest extends ApiRequest { + final String email; + + CreateStripeCustomerRequest({ + required this.email, + }); + + Map toJson() => { + 'email': email, + }; +} diff --git a/lib/api/response_models/get_stripe_subscriptions_response.dart b/lib/api/response_models/get_stripe_subscriptions_response.dart new file mode 100644 index 0000000..55d6a53 --- /dev/null +++ b/lib/api/response_models/get_stripe_subscriptions_response.dart @@ -0,0 +1,14 @@ +import 'package:client_common/api/response_models/api_response.dart'; + +class GetStripeSubscriptionsResponse extends ApiResponse { + String startDate; + String endDate; + String plan; + int applicationId; + + GetStripeSubscriptionsResponse.fromJson(Map json) + : startDate = json["start_date"], + endDate = json["end_date"], + plan = json["plan"], + applicationId = json["application_id"]; +} diff --git a/lib/api/stripe_api.dart b/lib/api/stripe_api.dart new file mode 100644 index 0000000..a189b81 --- /dev/null +++ b/lib/api/stripe_api.dart @@ -0,0 +1,28 @@ +import 'package:client_common/api/lenra_http_client.dart'; +import 'package:client_common/api/request_models/create_stripe_checkout_request.dart'; +import 'package:client_common/api/request_models/create_stripe_customer_request.dart'; +import 'package:client_common/api/response_models/get_stripe_subscriptions_response.dart'; + +class StripeApi { + static Future createCustomer(CreateStripeCustomerRequest body) => LenraApi.instance.post( + "/stripe/customers", + body: body, + responseMapper: (json, header) => json as String, + ); + + static Future getSubscriptions(int appId) => LenraApi.instance.get( + "/stripe/subscriptions?id=$appId", + responseMapper: (json, header) => json == null ? null : GetStripeSubscriptionsResponse.fromJson(json), + ); + + static Future createCheckout(CreateStripeCheckoutRequest body) => LenraApi.instance.post( + "/stripe/checkout", + body: body, + responseMapper: (json, header) => json as String, + ); + + static Future getCustomerPortalUrl() => LenraApi.instance.get( + "/stripe/customer_portal", + responseMapper: (json, header) => json as String, + ); +}