Use paymentId from create PayPal intent instead of confirm.

This commit is contained in:
Cody Henthorne
2024-02-01 16:47:34 -05:00
committed by Nicholas Tinsley
parent fa937f9f43
commit e798feb1d7
3 changed files with 6 additions and 8 deletions

View File

@@ -7,19 +7,18 @@ import kotlinx.parcelize.Parcelize
@Parcelize
data class PayPalConfirmationResult(
val payerId: String,
val paymentId: String,
val paymentId: String?,
val paymentToken: String
) : Parcelable {
companion object {
private const val KEY_PAYER_ID = "PayerID"
private const val KEY_PAYMENT_ID = "paymentId"
private const val KEY_PAYMENT_TOKEN = "token"
fun fromUrl(url: String): PayPalConfirmationResult? {
val uri = Uri.parse(url)
return PayPalConfirmationResult(
payerId = uri.getQueryParameter(KEY_PAYER_ID) ?: return null,
paymentId = uri.getQueryParameter(KEY_PAYMENT_ID) ?: return null,
paymentId = null,
paymentToken = uri.getQueryParameter(KEY_PAYMENT_TOKEN) ?: return null
)
}

View File

@@ -126,7 +126,7 @@ class PayPalPaymentInProgressFragment : DialogFragment(R.layout.donation_in_prog
val listener = FragmentResultListener { _, bundle ->
val result: PayPalConfirmationResult? = bundle.getParcelableCompat(PayPalConfirmationDialogFragment.REQUEST_KEY, PayPalConfirmationResult::class.java)
if (result != null) {
emitter.onSuccess(result)
emitter.onSuccess(result.copy(paymentId = createPaymentIntentResponse.paymentId))
} else {
emitter.onError(DonationError.UserCancelledPaymentError(args.request.donateToSignalType.toErrorSource()))
}

View File

@@ -15,11 +15,10 @@ class PayPalConfirmationResultTest {
companion object {
private val PAYER_ID = "asdf"
private val PAYMENT_ID = "sdfg"
private val PAYMENT_TOKEN = "dfgh"
private val TEST_URL = "${PayPalRepository.ONE_TIME_RETURN_URL}?PayerID=$PAYER_ID&paymentId=$PAYMENT_ID&token=$PAYMENT_TOKEN"
private val TEST_MISSING_PARAM_URL = "${PayPalRepository.ONE_TIME_RETURN_URL}?paymentId=$PAYMENT_ID&token=$PAYMENT_TOKEN"
private val TEST_URL = "${PayPalRepository.ONE_TIME_RETURN_URL}?PayerID=$PAYER_ID&token=$PAYMENT_TOKEN"
private val TEST_MISSING_PARAM_URL = "${PayPalRepository.ONE_TIME_RETURN_URL}?token=$PAYMENT_TOKEN"
}
@Test
@@ -27,7 +26,7 @@ class PayPalConfirmationResultTest {
val result = PayPalConfirmationResult.fromUrl(TEST_URL)
assertEquals(
PayPalConfirmationResult(PAYER_ID, PAYMENT_ID, PAYMENT_TOKEN),
PayPalConfirmationResult(PAYER_ID, null, PAYMENT_TOKEN),
result
)
}