diff --git a/app/libs/nativesdk-0.1.0.aar b/app/libs/nativesdk-0.1.0.aar
index aa0e908..fe797de 100644
Binary files a/app/libs/nativesdk-0.1.0.aar and b/app/libs/nativesdk-0.1.0.aar differ
diff --git a/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/MainApplication.kt b/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/MainApplication.kt
index 5fdad72..c1a720d 100644
--- a/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/MainApplication.kt
+++ b/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/MainApplication.kt
@@ -11,11 +11,15 @@ class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
- val config = MPConfigBuilder(this)
+ val config = MPConfigBuilder(this, DEMO_APP_CLIENT_ID)
.withBluetoothConfig()
.withBluetoothUIConfig()
.build()
MPManager.initialize(this, config)
}
+
+ companion object {
+ private const val DEMO_APP_CLIENT_ID = "0011223344"
+ }
}
diff --git a/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/data/PaymentMethod.kt b/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/data/PaymentMethod.kt
deleted file mode 100644
index ebde28a..0000000
--- a/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/data/PaymentMethod.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.mercadolibre.android.point_mainapp_demo.app.data
-
-import com.google.gson.annotations.SerializedName
-
-enum class PaymentMethod {
- @SerializedName("point")
- POINT,
-
- @SerializedName("credit")
- CREDIT,
-
- @SerializedName("debit")
- DEBIT,
-
- @SerializedName("qr")
- QR,
-
- @SerializedName("voucher")
- VOUCHER,
-
- @SerializedName("link", alternate = ["link_payment"])
- LINK,
-
- @SerializedName("undefined")
- UNDEFINED
-}
diff --git a/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/data/PaymentSuccessResponse.kt b/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/data/PaymentSuccessResponse.kt
deleted file mode 100644
index a1cca80..0000000
--- a/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/data/PaymentSuccessResponse.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.mercadolibre.android.point_mainapp_demo.app.data
-
-import com.google.gson.annotations.SerializedName
-import com.mercadolibre.android.point_mainapp_demo.app.util.EMPTY
-import java.io.Serializable
-
-data class PaymentSuccessResponse(
- @SerializedName("paymentType", alternate = ["type"])
- val paymentMethod: PaymentMethod = PaymentMethod.UNDEFINED,
- @SerializedName("paymentReference", alternate = ["reference"])
- val paymentReference: String = EMPTY,
- @SerializedName("paymentCreationDate", alternate = ["creation_date"])
- val paymentCreationDate: String = EMPTY,
- @SerializedName("paymentAmount", alternate = ["amount"])
- val paymentAmount: Number = 0,
- @SerializedName("paymentSnDevice", alternate = ["sn_device"])
- val paymentSnDevice: String = EMPTY,
- @SerializedName("paymentInstallments", alternate = ["installments"])
- val paymentInstallments: String = EMPTY,
- @SerializedName("paymentBrandName", alternate = ["brand_name"])
- val paymentBrandName: String = EMPTY,
- @SerializedName("paymentLastFourDigits", alternate = ["last_four_digits"])
- val paymentLastFourDigits: String = EMPTY
-) : Serializable
diff --git a/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/view/payment/launcher/PaymentLauncherActivity.kt b/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/view/payment/launcher/PaymentLauncherActivity.kt
index a4af6ab..c866451 100644
--- a/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/view/payment/launcher/PaymentLauncherActivity.kt
+++ b/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/view/payment/launcher/PaymentLauncherActivity.kt
@@ -3,14 +3,14 @@ package com.mercadolibre.android.point_mainapp_demo.app.view.payment.launcher
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
-import com.mercadolibre.android.point_integration_sdk.nativesdk.payment.PaymentFlow
+import com.mercadolibre.android.point_integration_sdk.nativesdk.MPManager
import com.mercadolibre.android.point_mainapp_demo.app.databinding.PointMainappDemoAppActivityPaymentLauncherBinding
/** Main activity class */
class PaymentLauncherActivity : AppCompatActivity() {
private var binding: PointMainappDemoAppActivityPaymentLauncherBinding? = null
- private val paymentFlow = PaymentFlow()
+ private val paymentFlow = MPManager.paymentFlow
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -24,7 +24,7 @@ class PaymentLauncherActivity : AppCompatActivity() {
binding?.sendPaymentActionButton?.setOnClickListener {
val amount = binding?.amountEditText?.text?.toString()
val description = binding?.descriptionEditText?.text?.toString()
- if (!amount.isNullOrEmpty() && !description.isNullOrEmpty()) {
+ if (!amount.isNullOrEmpty()) {
val intent = launchPaymentFlowIntent(
amount = amount,
description = description,
@@ -36,10 +36,20 @@ class PaymentLauncherActivity : AppCompatActivity() {
private fun launchPaymentFlowIntent(
amount: String,
- description: String
+ description: String?
): Intent {
- val uriSuccess = paymentFlow.buildUri("https://success", "callback_success", "{\"attr\": \"123\"}", "demo_app")
- val uriError = paymentFlow.buildUri("https://error", "callback_error", "{\"attr\": \"345\"}", "demo_app")
- return paymentFlow.launchPaymentFlowIntent(amount, description, uriSuccess, uriError, "123456")
+ val uriSuccess = paymentFlow.buildCallbackUri(
+ "mercadopago://launcher_native_app",
+ "callback_success",
+ hashMapOf("attr" to "123"),
+ "demo_app"
+ )
+ val uriError = paymentFlow.buildCallbackUri(
+ "mercadopago://launcher_native_app",
+ "callback_error",
+ hashMapOf("attr" to "456"),
+ "demo_app"
+ )
+ return paymentFlow.launchPaymentFlowIntent(amount, description, uriSuccess, uriError)
}
}
diff --git a/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/view/payment/result/PaymentResultActivity.kt b/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/view/payment/result/PaymentResultActivity.kt
index 5ffb9f5..e751291 100644
--- a/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/view/payment/result/PaymentResultActivity.kt
+++ b/app/src/main/java/com/mercadolibre/android/point_mainapp_demo/app/view/payment/result/PaymentResultActivity.kt
@@ -3,9 +3,9 @@ package com.mercadolibre.android.point_mainapp_demo.app.view.payment.result
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
-import com.google.gson.Gson
+import androidx.core.content.ContextCompat
+import com.mercadolibre.android.point_integration_sdk.nativesdk.MPManager
import com.mercadolibre.android.point_mainapp_demo.app.R
-import com.mercadolibre.android.point_mainapp_demo.app.data.PaymentSuccessResponse
import com.mercadolibre.android.point_mainapp_demo.app.databinding.PointMainappDemoAppActivityPaymentResultBinding
import com.mercadolibre.android.point_mainapp_demo.app.view.home.HomeActivity
@@ -24,11 +24,20 @@ class PaymentResultActivity : AppCompatActivity() {
private fun configPaymentResult() {
intent.data?.let { data ->
- val queryPaymentSuccess = data.getQueryParameter("payment_success")
- queryPaymentSuccess?.let {
- val paymentResult = Gson().fromJson(it, PaymentSuccessResponse::class.java)
- binding?.run {
- val reference = "${getString(R.string.point_mainapp_demo_app_lab_reference)}: ${paymentResult.paymentReference}"
+ val paymentFlowResult = MPManager.paymentFlow.parseResponse(data)
+ binding?.run {
+ if (paymentFlowResult.paymentStatusError.isEmpty()) {
+ val reference =
+ "${getString(R.string.point_mainapp_demo_app_lab_reference)}: ${paymentFlowResult.paymentReference}"
+ pointMainappDemoAppReferenceText.text = reference
+ } else {
+ pointMainappDemoAppTextview.text = getString(R.string.point_mainapp_demo_app_payment_error)
+ with(pointMainappDemoAppImageview) {
+ setImageResource(R.drawable.point_mainapp_demo_app_ic_error)
+ setColorFilter(ContextCompat.getColor(context, android.R.color.holo_red_light), android.graphics.PorterDuff.Mode.SRC_IN);
+ }
+ val reference =
+ "${getString(R.string.point_mainapp_demo_app_lab_error_reference)}: ${paymentFlowResult.paymentStatusError}"
pointMainappDemoAppReferenceText.text = reference
}
}
diff --git a/app/src/main/res/drawable/point_mainapp_demo_app_ic_error.xml b/app/src/main/res/drawable/point_mainapp_demo_app_ic_error.xml
new file mode 100644
index 0000000..269fdc6
--- /dev/null
+++ b/app/src/main/res/drawable/point_mainapp_demo_app_ic_error.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/point_mainapp_demo_app_activity_payment_launcher.xml b/app/src/main/res/layout/point_mainapp_demo_app_activity_payment_launcher.xml
index 1035fc6..8882959 100644
--- a/app/src/main/res/layout/point_mainapp_demo_app_activity_payment_launcher.xml
+++ b/app/src/main/res/layout/point_mainapp_demo_app_activity_payment_launcher.xml
@@ -37,7 +37,7 @@
android:id="@+id/amountEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:inputType="number"
+ android:inputType="numberDecimal"
android:textColor="@color/primaryTextColor" />
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1448c7e..f1e0f76 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -7,6 +7,8 @@
Go to payment
The payment has been successful
Reference
+ The payment failed
+ Error
Back to home