If you are using Android Components v5.0.0 or later:
This payment method requires no additional configuration.
Follow the Components integration guide and use the following module and Component names:
- To import the module: mbway
- To launch and show the Component: MBWayComponent
This page explains how to add MB WAY to your existing Android Components integration.
Requirements
Requirement | Description |
---|---|
Integration type | Make sure that you have built an Advanced flow Android Components integration. |
Setup steps | Before you begin, add MB WAY in your Customer Area. |
MB WAY is supported as of Components version 3.7.0. For more information, refer to Release notes.
Set up the MB WAY Component
- Import the MB WAY Component to your
build.gradle
file:implementation "com.adyen.checkout:mbway:<latest-version>"
For the latest version, refer to our GitHub.
- Build a client-side configuration of the MB WAY Component:
val mbwayConfiguration = MBWayConfiguration.Builder(context, "YOUR_CLIENT_KEY") // When you are ready to accept live payments, change the value to one of our live environments. .setEnvironment(Environment.TEST) .build()
- Add the Component view to your layout:
<com.adyen.checkout.mbway.MBWayView android:id="@+id/YOUR_COMPONENT_VIEW_ID" .../>
You will attach the initialized component to this view when collecting payment details.
Collect payment details
Use the client-side Component to collect the phone number from your shopper.
- Deserialize the
/paymentMethods
response with theSERIALIZER
object:val paymentMethodsApiResponse = PaymentMethodsApiResponse.SERIALIZER.deserialize(paymentMethodsResponse)
- From the result, get the object containing
paymentMethods.type
: mbway. - Initialize an instance of the Component. Call
PROVIDER.get
from the MB WAY Component and pass the following:- The context (for example,
this@YourActivity
) - The
PaymentMethod
object (for example,paymentMethod
) - The
mbwayConfiguration
object:val mbwayComponent = MBWayComponent.PROVIDER.get(this@YourActivity, paymentMethod, mbwayConfiguration)
- The context (for example,
- Attach the Component to the view to start getting your shopper's payment details. You need to call
attach
from the payment method's Component view and pass in:- the
mbwayComponent
- the context (for example,
this@YourActivity
):MBWayView.attach(mbwayComponent, this@YourActivity)
You start receiving updates when the shopper enters their phone number.
- the
- Check if
isValid
is true, and when the shopper proceeds to pay, pass thepaymentComponentState.data.paymentMethod
to your server:mbwayComponent.observe(this@MainActivity) { state -> if (state?.isValid == true) { //serialize data val paymentComponentData = PaymentComponentData.SERIALIZER.serialize(state.data) // When the shopper proceeds to pay, pass the serialized `state.data` to your server to send a /payments request } }
Handle the await action
Step 1: Deserialize the action object
In your client-side app, deserialize the action
object from the /payments
response:
val action = Action.SERIALIZER.deserialize(paymentResponse.action)
Step 2: Initialize the Component
-
Before initializing the Component, make sure that you have added the following to your
build.gradle
file:Check the latest version on GitHub.
-
Create a configuration object for the Component, passing your client key:
-
To initialize an instance of the Component, call
PROVIDER.get
from the Component and pass in the context (for example,this@YourActivity
), application class, and the configuration object created in the previous step: -
From your instance, call
handleAction
and pass:- the context (for example,
this@YourActivity
) - the
action
object from the deserialized/payments
response.
- the context (for example,
Step 3: Check the payment result
The Component notifies the observer
with the actionComponentData
object from the data in intent.data
. Pass this to your server to make a /payments/details
request.
Test and go live
To test your MB WAY integration, you can use any telephone number; for example +351234567890.
You can check the status of MB WAY test payments in your Customer Area > Transactions > Payments.
Before you can accept live MB WAY payments, add MB WAY in your live Customer Area.
Trigger a resultCode
To trigger a specific resultCode
value, append a code to the shopperStatement
value in your /payments request:
resultCode |
Code to append to shopperStatement |
---|---|
Authorised (default test response) |
-c1 |
Pending | -c3 |
Refused | -c5 |
For example, to receive resultCode
: Refused, include the following in your /payments request: "shopperStatement": "MBWay shopper statement-c5"