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(