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