diff --git a/paystack/src/main/java/co/paystack/android/TransactionManager.java b/paystack/src/main/java/co/paystack/android/TransactionManager.java index 801e7bb..41db2e0 100644 --- a/paystack/src/main/java/co/paystack/android/TransactionManager.java +++ b/paystack/src/main/java/co/paystack/android/TransactionManager.java @@ -135,6 +135,7 @@ public void onSuccess(TransactionInitResponse data) { card.getLast4digits(), deviceId, data.getReference(), + data.getAccessCode(), null ); processCharge(params); diff --git a/paystack/src/main/java/co/paystack/android/api/PaystackRepositoryImpl.kt b/paystack/src/main/java/co/paystack/android/api/PaystackRepositoryImpl.kt index 74995a7..da5b015 100644 --- a/paystack/src/main/java/co/paystack/android/api/PaystackRepositoryImpl.kt +++ b/paystack/src/main/java/co/paystack/android/api/PaystackRepositoryImpl.kt @@ -60,7 +60,7 @@ internal class PaystackRepositoryImpl(private val apiService: PaystackApiService override fun requeryTransaction(chargeParams: ChargeParams, callback: ChargeApiCallback) { makeApiRequest( - apiCall = { apiService.requeryTransaction(chargeParams.transactionId) }, + apiCall = { apiService.requeryTransaction(chargeParams.accessCode) }, onSuccess = { data -> callback.onSuccess(chargeParams, data) }, onError = { throwable -> callback.onError(throwable, chargeParams.reference) }, ) diff --git a/paystack/src/main/java/co/paystack/android/api/model/TransactionInitResponse.kt b/paystack/src/main/java/co/paystack/android/api/model/TransactionInitResponse.kt index ccb7806..43c2a09 100644 --- a/paystack/src/main/java/co/paystack/android/api/model/TransactionInitResponse.kt +++ b/paystack/src/main/java/co/paystack/android/api/model/TransactionInitResponse.kt @@ -9,5 +9,8 @@ data class TransactionInitResponse( val transactionId: String, @Json(name = "reference") - val reference: String? + val reference: String?, + + @Json(name = "access_code") + val accessCode: String ) diff --git a/paystack/src/main/java/co/paystack/android/api/request/ChargeParams.kt b/paystack/src/main/java/co/paystack/android/api/request/ChargeParams.kt index 278a579..d035584 100644 --- a/paystack/src/main/java/co/paystack/android/api/request/ChargeParams.kt +++ b/paystack/src/main/java/co/paystack/android/api/request/ChargeParams.kt @@ -11,6 +11,7 @@ data class ChargeParams( val last4: String, val deviceId: String, val reference: String?, + val accessCode: String, val handle: String? = null ) { fun toRequestMap() = mapOf( diff --git a/paystack/src/main/java/co/paystack/android/api/service/PaystackApiService.kt b/paystack/src/main/java/co/paystack/android/api/service/PaystackApiService.kt index 376885d..11dfc62 100644 --- a/paystack/src/main/java/co/paystack/android/api/service/PaystackApiService.kt +++ b/paystack/src/main/java/co/paystack/android/api/service/PaystackApiService.kt @@ -33,7 +33,7 @@ internal interface PaystackApiService { fun validateAddress(@FieldMap fields: Map): Call @NoWrap - @GET("/checkout/requery/{transactionId}") - fun requeryTransaction(@Path("transactionId") transactionId: String): Call + @GET("/checkout/requery/{accessCode}") + fun requeryTransaction(@Path("accessCode") accessCode: String): Call } \ No newline at end of file diff --git a/paystack/src/test/java/co/paystack/android/TransactionManagerTest.kt b/paystack/src/test/java/co/paystack/android/TransactionManagerTest.kt index 29d3983..8b44deb 100644 --- a/paystack/src/test/java/co/paystack/android/TransactionManagerTest.kt +++ b/paystack/src/test/java/co/paystack/android/TransactionManagerTest.kt @@ -126,7 +126,7 @@ class TransactionManagerTest { whenever(paystackRepository.initializeTransaction(anyString(), any(), anyString(), any())) .thenAnswer { val callback = it.arguments[3] as ApiCallback - callback.onSuccess(TransactionInitResponse("success", "trans_id")) + callback.onSuccess(TransactionInitResponse("success", "trans_id", "access_code")) } val transactionManager = TransactionManager(paystackRepository) diff --git a/paystack/src/test/java/co/paystack/android/api/PaystackRepositoryImplTest.kt b/paystack/src/test/java/co/paystack/android/api/PaystackRepositoryImplTest.kt index b18422b..6101acf 100644 --- a/paystack/src/test/java/co/paystack/android/api/PaystackRepositoryImplTest.kt +++ b/paystack/src/test/java/co/paystack/android/api/PaystackRepositoryImplTest.kt @@ -34,7 +34,7 @@ class PaystackRepositoryImplTest { @Test fun `initializeTransaction calls PaystackApiService with correct params`() { whenever(apiService.initializeTransaction(anyMap())) - .thenReturn(FakeCall.success(TransactionInitResponse("success", "trans_id"))) + .thenReturn(FakeCall.success(TransactionInitResponse("success", "trans_id", "access_code"))) val repository = PaystackRepositoryImpl(apiService) val apiCallback = mock>() val testMetadata = "internal_tag" to "tag_internal_example" @@ -82,7 +82,8 @@ class PaystackRepositoryImplTest { transactionId = testTransactionId, last4 = "5599", deviceId = testDeviceId, - null + null, + accessCode = "test_access_code" ) val TEST_CHARGE_RESPONSE = ChargeResponse(