- * Provides a service by which we can make API calls
- */ -public class ApiClient { - - private static final String BASE_URL = "https://standard.paystack.co/"; - public static String API_URL = BASE_URL; - - private ApiService apiService; - - public ApiClient() throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException { - Gson gson = new GsonBuilder() - .setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'") - .create(); - - TLSSocketFactory tlsV1point2factory = new TLSSocketFactory(); - OkHttpClient okHttpClient = new OkHttpClient - .Builder() - .addInterceptor(new Interceptor() { - @Override - public Response intercept(Interceptor.Chain chain) throws IOException { - Request original = chain.request(); - // Add headers so we get Android version and Paystack Library version - Request.Builder builder = original.newBuilder() - .header("User-Agent", "Android_" + Build.VERSION.SDK_INT + "_Paystack_" + BuildConfig.VERSION_NAME) - .header("X-Paystack-Build", String.valueOf(BuildConfig.VERSION_CODE)) - .header("Accept", "application/json") - .method(original.method(), original.body()); - Request request = builder.build(); - - return chain.proceed(request); - } - }) - .sslSocketFactory(tlsV1point2factory, tlsV1point2factory.getX509TrustManager()) - .connectTimeout(5, TimeUnit.MINUTES) - .readTimeout(5, TimeUnit.MINUTES) - .writeTimeout(5, TimeUnit.MINUTES) - .build(); - - Retrofit retrofit = new Retrofit.Builder() - .baseUrl(API_URL) - .client(okHttpClient) - .addConverterFactory(GsonConverterFactory.create(gson)) - .build(); - - apiService = retrofit.create(ApiService.class); - } - - public ApiService getApiService() { - return apiService; - } -} diff --git a/paystack/src/main/java/co/paystack/android/api/ChargeApiCallback.kt b/paystack/src/main/java/co/paystack/android/api/ChargeApiCallback.kt new file mode 100644 index 0000000..d83bcbf --- /dev/null +++ b/paystack/src/main/java/co/paystack/android/api/ChargeApiCallback.kt @@ -0,0 +1,10 @@ +package co.paystack.android.api + +import co.paystack.android.api.model.ChargeResponse +import co.paystack.android.api.request.ChargeParams + +interface ChargeApiCallback { + fun onSuccess(params: ChargeParams, response: ChargeResponse) + + fun onError(exception: Throwable, reference: String?) +} \ No newline at end of file diff --git a/paystack/src/main/java/co/paystack/android/api/PaystackRepository.kt b/paystack/src/main/java/co/paystack/android/api/PaystackRepository.kt new file mode 100644 index 0000000..c95916c --- /dev/null +++ b/paystack/src/main/java/co/paystack/android/api/PaystackRepository.kt @@ -0,0 +1,24 @@ +package co.paystack.android.api + +import co.paystack.android.api.model.TransactionInitResponse +import co.paystack.android.api.request.ChargeParams +import co.paystack.android.model.Charge +import co.paystack.android.ui.AddressHolder.Address + +interface PaystackRepository { + + fun initializeTransaction(publicKey: String, charge: Charge, deviceId: String, callback: ApiCallback