diff --git a/example/res/drawable/ic_brandicon_grabpay.xml b/example/res/drawable/ic_brandicon_grabpay.xml new file mode 100644 index 00000000000..f47067ecfbb --- /dev/null +++ b/example/res/drawable/ic_brandicon_grabpay.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/example/src/main/java/com/stripe/example/activity/SimplePaymentMethodConfirmationActivity.kt b/example/src/main/java/com/stripe/example/activity/SimplePaymentMethodConfirmationActivity.kt index a525f5b161f..3cb58ef7f6f 100644 --- a/example/src/main/java/com/stripe/example/activity/SimplePaymentMethodConfirmationActivity.kt +++ b/example/src/main/java/com/stripe/example/activity/SimplePaymentMethodConfirmationActivity.kt @@ -129,6 +129,10 @@ class SimplePaymentMethodConfirmationActivity : StripeIntentActivity() { Giropay( "de", R.drawable.ic_brandicon__giropay, PaymentMethodCreateParams.Companion::createGiropay + ), + GrabPay( + "sg", R.drawable.ic_brandicon_grabpay, + PaymentMethodCreateParams.Companion::createGrabPay ); } diff --git a/stripe/src/main/java/com/stripe/android/model/PaymentMethod.kt b/stripe/src/main/java/com/stripe/android/model/PaymentMethod.kt index d5d40521673..d748628563a 100644 --- a/stripe/src/main/java/com/stripe/android/model/PaymentMethod.kt +++ b/stripe/src/main/java/com/stripe/android/model/PaymentMethod.kt @@ -133,7 +133,8 @@ data class PaymentMethod internal constructor( Giropay("giropay", isReusable = false), Eps("eps", isReusable = false), Oxxo("oxxo", isReusable = false), - Alipay("alipay", isReusable = false); + Alipay("alipay", isReusable = false), + GrabPay("grabpay", isReusable = false); override fun toString(): String { return code diff --git a/stripe/src/main/java/com/stripe/android/model/PaymentMethodCreateParams.kt b/stripe/src/main/java/com/stripe/android/model/PaymentMethodCreateParams.kt index 0b2054360ab..66f94190070 100644 --- a/stripe/src/main/java/com/stripe/android/model/PaymentMethodCreateParams.kt +++ b/stripe/src/main/java/com/stripe/android/model/PaymentMethodCreateParams.kt @@ -167,7 +167,8 @@ data class PaymentMethodCreateParams internal constructor( Giropay("giropay"), Eps("eps"), Oxxo("oxxo"), - Alipay("alipay") + Alipay("alipay"), + GrabPay("grabpay"), } @Parcelize @@ -534,6 +535,22 @@ data class PaymentMethodCreateParams internal constructor( ) } + /** + * @return params for creating a [PaymentMethod.Type.GrabPay] payment method + */ + @JvmStatic + @JvmOverloads + fun createGrabPay( + billingDetails: PaymentMethod.BillingDetails, + metadata: Map? = null + ): PaymentMethodCreateParams { + return PaymentMethodCreateParams( + type = Type.GrabPay, + billingDetails = billingDetails, + metadata = metadata + ) + } + /** * @return params for creating a [PaymentMethod.Type.Eps] payment method */ diff --git a/stripe/src/test/java/com/stripe/android/ApiKeyFixtures.kt b/stripe/src/test/java/com/stripe/android/ApiKeyFixtures.kt index 989f6d52ead..f66f9f6a615 100644 --- a/stripe/src/test/java/com/stripe/android/ApiKeyFixtures.kt +++ b/stripe/src/test/java/com/stripe/android/ApiKeyFixtures.kt @@ -18,4 +18,5 @@ internal object ApiKeyFixtures { const val OXXO_PUBLISHABLE_KEY = "pk_test_bjqpeDIsfh4Bnwok0rtnrS7200PY7PLRfb" const val ALIPAY_PUBLISHABLE_KEY = "pk_test_vOo1umqsYxSrP5UXfOeL3ecm" const val CB_PUBLISHABLE_KEY = "pk_test_51Gsr5VLtxFHECmaoeyWTxRKLZZiks5QKbg5H0IeGd8yt7OzQhA7807thLrHayMOeDRmJv3ara1VYy6AvBXAnUGcB00QAZheC0Z" + const val GRABPAY_PUBLISHABLE_KEY = "pk_test_TP0eh0buhedbg787icFUy83H00i9fh4Auj" } diff --git a/stripe/src/test/java/com/stripe/android/PaymentMethodEndToEndTest.kt b/stripe/src/test/java/com/stripe/android/PaymentMethodEndToEndTest.kt index 644db6a9e4c..6e360a4f4e4 100644 --- a/stripe/src/test/java/com/stripe/android/PaymentMethodEndToEndTest.kt +++ b/stripe/src/test/java/com/stripe/android/PaymentMethodEndToEndTest.kt @@ -214,4 +214,20 @@ class PaymentMethodEndToEndTest { assertThat(paymentMethod?.type) .isEqualTo(PaymentMethod.Type.Alipay) } + + @Test + fun createPaymentMethod_withGrabPay_shouldCreateObject() { + val repository = StripeApiRepository( + context, + ApiKeyFixtures.GRABPAY_PUBLISHABLE_KEY + ) + + val params = PaymentMethodCreateParamsFixtures.GRABPAY + val paymentMethod = repository.createPaymentMethod( + params, + ApiRequest.Options(ApiKeyFixtures.GRABPAY_PUBLISHABLE_KEY) + ) + assertThat(paymentMethod?.type) + .isEqualTo(PaymentMethod.Type.GrabPay) + } } diff --git a/stripe/src/test/java/com/stripe/android/model/PaymentMethodCreateParamsFixtures.kt b/stripe/src/test/java/com/stripe/android/model/PaymentMethodCreateParamsFixtures.kt index f6bd2f2d893..4b8d1c2f340 100644 --- a/stripe/src/test/java/com/stripe/android/model/PaymentMethodCreateParamsFixtures.kt +++ b/stripe/src/test/java/com/stripe/android/model/PaymentMethodCreateParamsFixtures.kt @@ -85,6 +85,10 @@ internal object PaymentMethodCreateParamsFixtures { billingDetails = BILLING_DETAILS ) + internal val GRABPAY = PaymentMethodCreateParams.createGrabPay( + billingDetails = BILLING_DETAILS + ) + @JvmStatic fun createWith(metadata: Map): PaymentMethodCreateParams { return PaymentMethodCreateParams.create(