From f371d4cd5b3664ba081de6877750204eb7bee796 Mon Sep 17 00:00:00 2001
From: Naloff67 <89504625+Naloff67@users.noreply.github.com>
Date: Wed, 14 Feb 2024 17:54:18 +0800
Subject: [PATCH 1/8] Update README.md
update documentation
---
README.md | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index e544d2b..0d7655f 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
# [Mobile XDK] – RazerMS Android Studio
@@ -8,11 +8,13 @@
This is the complete and functional Razer Merchant Services Android payment module that is ready to be implemented into Android Studio through gradle from JCenter/Maven repository as a MOLPayXDK module. An example application project
(MOLPayXdkExample) is provided for MOLPayXDK framework integration reference.
-这是一个完整和实用的 Razer Merchant Services 安卓支付模块,可以通过 JCenter/Maven 存储库中的 gradle 实现到 Android Studio 以作为一个 MOLPayXDK 框架。在此提供了一个示例应用程序项目(MOLPayXdkExample)以作为 MOLPayXDK 框架整合的参考。
+
+
+
## Recommended configurations
- - Minimum Android SDK Version: 27 ++
+ - Minimum Android SDK Version: 26 ++
- Minimum Android API level: 19 ++
@@ -22,7 +24,7 @@ This is the complete and functional Razer Merchant Services Android payment modu
## Installation Guidance
-[Installation](https://github.com/RazerMS/rms-mobile-xdk-android/wiki/Installation-Guidance)
+[[Installation](https://github.com/RazerMS/rms-mobile-xdk-android/wiki/Installation-Guidance)](https://github.com/Naloff67/Mobile-XDK-RazerMS_Android_Studio/wiki/Installation-Guide)
## Resources
From c38c654589482454cbabddd138afe107ee0e6588 Mon Sep 17 00:00:00 2001
From: Naloff67 <89504625+Naloff67@users.noreply.github.com>
Date: Fri, 16 Feb 2024 17:39:11 +0800
Subject: [PATCH 2/8] Update README.md
---
README.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 0d7655f..9f08ea8 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,4 @@
-[compresspng.zip](https://github.com/Naloff67/Mobile-XDK-RazerMS_Android_Studio/files/14277903/compresspng.zip)a
+
# [Mobile XDK] – RazerMS Android Studio
From 08e998044c7706b370d09d0847d81f6dc382cc99 Mon Sep 17 00:00:00 2001
From: Naloff67 <89504625+Naloff67@users.noreply.github.com>
Date: Sun, 18 Feb 2024 16:27:25 +0800
Subject: [PATCH 3/8] Update README.md
update documents
---
README.md | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 9f08ea8..655bcef 100644
--- a/README.md
+++ b/README.md
@@ -3,12 +3,15 @@
-This is the complete and functional Razer Merchant Services Android payment module that is ready to be implemented into Android Studio through gradle from JCenter/Maven repository as a MOLPayXDK module. An example application project
-(MOLPayXdkExample) is provided for MOLPayXDK framework integration reference.
+This is the finished and working Razer Merchant Services Android payment module, which can be added to Android Studio as a MOLPayXDK module by using the Gradle integration from the JCenter/Maven repository. For reference purposes, an example application project (MOLPayXdkExample) for the MOLPayXDK framework integration is given.

+# How does it work ?
+1. User chooses the Payment option they wish to pay with
+2. Press "Proceed"
+3. Complete the Transaction.
## Recommended configurations
From aaa4a520401a41be7a5072b395de6c27a5060e16 Mon Sep 17 00:00:00 2001
From: Razer Technical
Date: Mon, 19 Feb 2024 11:08:45 +0800
Subject: [PATCH 4/8] Update Demo app to latest gradle version
---
MOLPayXdkExample/app/build.gradle | 16 ++-
.../molpay/molpayxdkexample/BuildConfig.java | 12 ++
.../app/src/main/AndroidManifest.xml | 14 +-
.../molpay/molpayxdkexample/MainActivity.java | 125 +++++++++---------
.../app/src/main/res/layout/activity_main.xml | 47 +++++--
.../app/src/main/res/values/colors.xml | 3 +
MOLPayXdkExample/build.gradle | 2 +-
MOLPayXdkExample/gradle.properties | 6 +-
.../gradle/wrapper/gradle-wrapper.properties | 4 +-
9 files changed, 141 insertions(+), 88 deletions(-)
create mode 100644 MOLPayXdkExample/app/build/generated/source/buildConfig/debug/com/molpay/molpayxdkexample/BuildConfig.java
diff --git a/MOLPayXdkExample/app/build.gradle b/MOLPayXdkExample/app/build.gradle
index 326485e..355df55 100644
--- a/MOLPayXdkExample/app/build.gradle
+++ b/MOLPayXdkExample/app/build.gradle
@@ -1,13 +1,13 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 31
- buildToolsVersion "29.0.3"
+ compileSdkVersion 34
+ //buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.molpay.molpayxdkexample"
minSdkVersion 16
- targetSdkVersion 31
+ targetSdkVersion 34
versionCode 1
versionName "1.0"
}
@@ -22,13 +22,17 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
+ namespace 'com.molpay.molpayxdkexample'
}
dependencies {
testImplementation 'junit:junit:4.12'
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
- implementation 'androidx.appcompat:appcompat:1.4.1'
- implementation 'com.google.android.material:material:1.5.0'
- implementation 'com.github.RazerMS:Mobile-XDK-RazerMS_Android_Library:3.32.2'
+ implementation 'androidx.appcompat:appcompat:1.6.1'
+ implementation 'com.google.android.material:material:1.8.0'
+ implementation 'com.github.RazerMS:Mobile-XDK-RazerMS_Android_Library:3.33.6'
}
+
+
+
diff --git a/MOLPayXdkExample/app/build/generated/source/buildConfig/debug/com/molpay/molpayxdkexample/BuildConfig.java b/MOLPayXdkExample/app/build/generated/source/buildConfig/debug/com/molpay/molpayxdkexample/BuildConfig.java
new file mode 100644
index 0000000..d361061
--- /dev/null
+++ b/MOLPayXdkExample/app/build/generated/source/buildConfig/debug/com/molpay/molpayxdkexample/BuildConfig.java
@@ -0,0 +1,12 @@
+/**
+ * Automatically generated file. DO NOT MODIFY
+ */
+package com.molpay.molpayxdkexample;
+
+public final class BuildConfig {
+ public static final boolean DEBUG = Boolean.parseBoolean("true");
+ public static final String APPLICATION_ID = "com.molpay.molpayxdkexample";
+ public static final String BUILD_TYPE = "debug";
+ public static final int VERSION_CODE = 1;
+ public static final String VERSION_NAME = "1.0";
+}
diff --git a/MOLPayXdkExample/app/src/main/AndroidManifest.xml b/MOLPayXdkExample/app/src/main/AndroidManifest.xml
index 163a0a6..cf765f0 100644
--- a/MOLPayXdkExample/app/src/main/AndroidManifest.xml
+++ b/MOLPayXdkExample/app/src/main/AndroidManifest.xml
@@ -1,6 +1,5 @@
-
+
+ android:theme="@style/AppTheme.NoActionBar"
+ android:exported="true">
-
+
-
+
diff --git a/MOLPayXdkExample/app/src/main/java/com/molpay/molpayxdkexample/MainActivity.java b/MOLPayXdkExample/app/src/main/java/com/molpay/molpayxdkexample/MainActivity.java
index b74f40a..3566b4a 100644
--- a/MOLPayXdkExample/app/src/main/java/com/molpay/molpayxdkexample/MainActivity.java
+++ b/MOLPayXdkExample/app/src/main/java/com/molpay/molpayxdkexample/MainActivity.java
@@ -3,9 +3,12 @@
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
+
import android.util.Log;
+import android.view.Menu;
import android.view.MenuItem;
+import android.view.View;
+import android.widget.Button;
import android.widget.TextView;
import com.molpay.molpayxdk.MOLPayActivity;
@@ -15,13 +18,43 @@
public class MainActivity extends AppCompatActivity {
+ private void restartmolpay() {
+ HashMap paymentDetails = new HashMap<>();
+ paymentDetails.put(MOLPayActivity.mp_amount, "1.10");
+
+ paymentDetails.put(MOLPayActivity.mp_username, "RMSxdk_2022");
+ paymentDetails.put(MOLPayActivity.mp_password, "RMSpwd@2022");
+ paymentDetails.put(MOLPayActivity.mp_merchant_ID, "rmsxdk_mobile_Dev");
+ paymentDetails.put(MOLPayActivity.mp_app_name, "mobile");
+ paymentDetails.put(MOLPayActivity.mp_verification_key, "ee738b541eff7b6b495e44771f71c0ec");
+
+ paymentDetails.put(MOLPayActivity.mp_order_ID, Calendar.getInstance().getTimeInMillis());
+ paymentDetails.put(MOLPayActivity.mp_currency, "MYR");
+ paymentDetails.put(MOLPayActivity.mp_country, "MY");
+ paymentDetails.put(MOLPayActivity.mp_channel, "multi");
+ paymentDetails.put(MOLPayActivity.mp_bill_description, "bill description");
+ paymentDetails.put(MOLPayActivity.mp_bill_name, "bill name");
+ paymentDetails.put(MOLPayActivity.mp_bill_email, "example@gmail.com");
+ paymentDetails.put(MOLPayActivity.mp_bill_mobile, "01234567888");
+ paymentDetails.put(MOLPayActivity.mp_channel_editing, false);
+ paymentDetails.put(MOLPayActivity.mp_editing_enabled, true);
+ paymentDetails.put(MOLPayActivity.mp_express_mode, false);
+ paymentDetails.put(MOLPayActivity.mp_dev_mode, false);
+ paymentDetails.put(MOLPayActivity.mp_preferred_token, "new");
+
+ Intent intent = new Intent(MainActivity.this, MOLPayActivity.class);
+ intent.putExtra(MOLPayActivity.MOLPayPaymentDetails, paymentDetails);
+ startActivityForResult(intent, MOLPayActivity.MOLPayXDK);
+
+ }
+
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == MOLPayActivity.MOLPayXDK && resultCode == RESULT_OK){
- Log.d(MOLPayActivity.MOLPAY, "MOLPay result = " + data.getStringExtra(MOLPayActivity.MOLPayTransactionResult));
+ Log.d(MOLPayActivity.MOLPAY, "MOLPay result = "+data.getStringExtra(MOLPayActivity.MOLPayTransactionResult));
TextView tw = (TextView)findViewById(R.id.resultTV);
tw.setText(data.getStringExtra(MOLPayActivity.MOLPayTransactionResult));
}
@@ -32,72 +65,44 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
+ Button btnXdk = (Button) findViewById(R.id.xdk_button);
+ btnXdk.setOnClickListener( new View.OnClickListener() {
- HashMap paymentDetails = new HashMap<>();
- paymentDetails.put(MOLPayActivity.mp_amount, "1.10");
- paymentDetails.put(MOLPayActivity.mp_username, "");
- paymentDetails.put(MOLPayActivity.mp_password, "");
- paymentDetails.put(MOLPayActivity.mp_merchant_ID, "");
- paymentDetails.put(MOLPayActivity.mp_app_name, "");
- paymentDetails.put(MOLPayActivity.mp_order_ID, Calendar.getInstance().getTimeInMillis());
- paymentDetails.put(MOLPayActivity.mp_currency, "MYR");
- paymentDetails.put(MOLPayActivity.mp_country, "MY");
- paymentDetails.put(MOLPayActivity.mp_verification_key, "");
- paymentDetails.put(MOLPayActivity.mp_channel, "multi");
- paymentDetails.put(MOLPayActivity.mp_bill_description, "description");
- paymentDetails.put(MOLPayActivity.mp_bill_name, "example");
- paymentDetails.put(MOLPayActivity.mp_bill_email, "example@mail.com");
- paymentDetails.put(MOLPayActivity.mp_bill_mobile, "+60123456789");
-
- //paymentDetails.put(MOLPayActivity.mp_channel_editing, false);
- //paymentDetails.put(MOLPayActivity.mp_editing_enabled, true);
- //paymentDetails.put(MOLPayActivity.mp_transaction_id, "");
- //paymentDetails.put(MOLPayActivity.mp_request_type, "");
-
- //String binlock[] = {"123456","234567"};
- //paymentDetails.put(MOLPayActivity.mp_bin_lock, binlock);
- //paymentDetails.put(MOLPayActivity.mp_bin_lock_err_msg, "Wrong BIN format");
-
- //paymentDetails.put(MOLPayActivity.mp_is_escrow, "");
- //paymentDetails.put(MOLPayActivity.mp_filter, "1");
- //paymentDetails.put(MOLPayActivity.mp_custom_css_url, "file:///android_asset/custom.css");
- //paymentDetails.put(MOLPayActivity.mp_preferred_token, "");
- //paymentDetails.put(MOLPayActivity.mp_tcctype, ""); // SALS // AUTH
- //paymentDetails.put(MOLPayActivity.mp_is_recurring, false);
- //String allowedchannels[] = {"credit","credit3"};
- //paymentDetails.put(MOLPayActivity.mp_allowed_channels, allowedchannels);
- //paymentDetails.put(MOLPayActivity.mp_sandbox_mode, true);
- //paymentDetails.put(MOLPayActivity.mp_express_mode, true);
- //paymentDetails.put(MOLPayActivity.mp_advanced_email_validation_enabled, true);
- //paymentDetails.put(MOLPayActivity.mp_advanced_phone_validation_enabled, true);
- //paymentDetails.put(MOLPayActivity.mp_bill_name_edit_disabled, false);
- //paymentDetails.put(MOLPayActivity.mp_bill_email_edit_disabled, false);
- //paymentDetails.put(MOLPayActivity.mp_bill_mobile_edit_disabled, false);
- //paymentDetails.put(MOLPayActivity.mp_bill_description_edit_disabled, false);
- //paymentDetails.put(MOLPayActivity.mp_language, "EN");
-// paymentDetails.put(MOLPayActivity.mp_dev_mode, true);
- //paymentDetails.put(MOLPayActivity.mp_cash_waittime, 24);
- //paymentDetails.put(MOLPayActivity.mp_non_3DS, true);
- //paymentDetails.put(MOLPayActivity.mp_card_list_disabled, true);
-
- //String disabledChannels[] = {"credit"};
- //paymentDetails.put(MOLPayActivity.mp_disabled_channels, disabledChannels);
+ @Override
+ public void onClick(View v) {
+ restartmolpay();
+
+ }
+ });
- Intent intent = new Intent(MainActivity.this, MOLPayActivity.class);
- intent.putExtra(MOLPayActivity.MOLPayPaymentDetails, paymentDetails);
- startActivityForResult(intent, MOLPayActivity.MOLPayXDK);
-
+ }
+
+
+
+// @Override
+// public boolean onOptionsItemSelected(MenuItem item) {
+// int id = item.getItemId();
+//
+// if (id == R.id.action_settings) {
+// return true;
+// }
+//
+// return super.onOptionsItemSelected(item);
+// }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.menu_main, menu);
+ return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
- if (id == R.id.action_settings) {
- return true;
- }
+ // closebtn clicked
+
return super.onOptionsItemSelected(item);
}
diff --git a/MOLPayXdkExample/app/src/main/res/layout/activity_main.xml b/MOLPayXdkExample/app/src/main/res/layout/activity_main.xml
index 82fc1ac..3489739 100644
--- a/MOLPayXdkExample/app/src/main/res/layout/activity_main.xml
+++ b/MOLPayXdkExample/app/src/main/res/layout/activity_main.xml
@@ -8,27 +8,48 @@
tools:context="com.molpay.molpayxdkexample.MainActivity">
-
-
-
+
+
+
-
+ android:text="Welcome to Android XDK"
+ android:textColor="@android:color/white"
+ android:textSize="30sp"
+ app:layout_anchor="@+id/toolbar"
+ app:layout_anchorGravity="center" />
+
+
+
diff --git a/MOLPayXdkExample/app/src/main/res/values/colors.xml b/MOLPayXdkExample/app/src/main/res/values/colors.xml
index 3ab3e9c..ce42925 100644
--- a/MOLPayXdkExample/app/src/main/res/values/colors.xml
+++ b/MOLPayXdkExample/app/src/main/res/values/colors.xml
@@ -3,4 +3,7 @@
#3F51B5
#303F9F
#FF4081
+ #00FF00
+ #000000
+
diff --git a/MOLPayXdkExample/build.gradle b/MOLPayXdkExample/build.gradle
index b957b91..5275e53 100644
--- a/MOLPayXdkExample/build.gradle
+++ b/MOLPayXdkExample/build.gradle
@@ -10,7 +10,7 @@ buildscript {
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:4.0.2'
+ classpath 'com.android.tools.build:gradle:8.0.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/MOLPayXdkExample/gradle.properties b/MOLPayXdkExample/gradle.properties
index 915f0e6..5128ac5 100644
--- a/MOLPayXdkExample/gradle.properties
+++ b/MOLPayXdkExample/gradle.properties
@@ -17,4 +17,8 @@
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
android.enableJetifier=true
-android.useAndroidX=true
\ No newline at end of file
+android.useAndroidX=true
+android.suppressUnsupportedCompileSdk=34
+android.defaults.buildfeatures.buildconfig=true
+android.nonTransitiveRClass=false
+android.nonFinalResIds=false
\ No newline at end of file
diff --git a/MOLPayXdkExample/gradle/wrapper/gradle-wrapper.properties b/MOLPayXdkExample/gradle/wrapper/gradle-wrapper.properties
index f9ca34e..ddabe8e 100644
--- a/MOLPayXdkExample/gradle/wrapper/gradle-wrapper.properties
+++ b/MOLPayXdkExample/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Dec 09 14:38:46 MYT 2020
+#Wed Feb 14 15:36:17 MYT 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
From 3ad2d6e50cc068daf94634c70f62cd01503ba059 Mon Sep 17 00:00:00 2001
From: Razer Technical
Date: Mon, 19 Feb 2024 12:59:18 +0800
Subject: [PATCH 5/8] update commits
---
.../molpay/molpayxdkexample/MainActivity.java | 101 +++++++++++++++---
.../app/src/main/res/layout/activity_main.xml | 2 +-
2 files changed, 89 insertions(+), 14 deletions(-)
diff --git a/MOLPayXdkExample/app/src/main/java/com/molpay/molpayxdkexample/MainActivity.java b/MOLPayXdkExample/app/src/main/java/com/molpay/molpayxdkexample/MainActivity.java
index 3566b4a..ced37a7 100644
--- a/MOLPayXdkExample/app/src/main/java/com/molpay/molpayxdkexample/MainActivity.java
+++ b/MOLPayXdkExample/app/src/main/java/com/molpay/molpayxdkexample/MainActivity.java
@@ -20,28 +20,103 @@ public class MainActivity extends AppCompatActivity {
private void restartmolpay() {
HashMap paymentDetails = new HashMap<>();
- paymentDetails.put(MOLPayActivity.mp_amount, "1.10");
+ // Optional, REQUIRED when use online Sandbox environment and account credentials.
+ paymentDetails.put(MOLPayActivity.mp_dev_mode, false);
- paymentDetails.put(MOLPayActivity.mp_username, "RMSxdk_2022");
- paymentDetails.put(MOLPayActivity.mp_password, "RMSpwd@2022");
- paymentDetails.put(MOLPayActivity.mp_merchant_ID, "rmsxdk_mobile_Dev");
- paymentDetails.put(MOLPayActivity.mp_app_name, "mobile");
- paymentDetails.put(MOLPayActivity.mp_verification_key, "ee738b541eff7b6b495e44771f71c0ec");
+ // Mandatory String. Values obtained from MOLPay.
+ // Mandatory String. Values obtained from MOLPay.
+ paymentDetails.put(MOLPayActivity.mp_username, "");
+ paymentDetails.put(MOLPayActivity.mp_password, "");
+ paymentDetails.put(MOLPayActivity.mp_merchant_ID, "");
+ paymentDetails.put(MOLPayActivity.mp_app_name, "");
+ paymentDetails.put(MOLPayActivity.mp_verification_key, "");
+ // Mandatory String. Payment values.
+ paymentDetails.put(MOLPayActivity.mp_amount, "1.10"); // Minimum 1.01
paymentDetails.put(MOLPayActivity.mp_order_ID, Calendar.getInstance().getTimeInMillis());
paymentDetails.put(MOLPayActivity.mp_currency, "MYR");
paymentDetails.put(MOLPayActivity.mp_country, "MY");
+
+ // Optional, but required payment values. User input will be required when values not passed.
+ // Use 'multi' for all available channels option. For individual channel seletion, please refer to https://github.com/MOLPay/molpay-mobile-xdk-examples/blob/master/channel_list.tsv.
paymentDetails.put(MOLPayActivity.mp_channel, "multi");
- paymentDetails.put(MOLPayActivity.mp_bill_description, "bill description");
- paymentDetails.put(MOLPayActivity.mp_bill_name, "bill name");
- paymentDetails.put(MOLPayActivity.mp_bill_email, "example@gmail.com");
- paymentDetails.put(MOLPayActivity.mp_bill_mobile, "01234567888");
- paymentDetails.put(MOLPayActivity.mp_channel_editing, false);
+ paymentDetails.put(MOLPayActivity.mp_bill_description, "billdesc");
+ paymentDetails.put(MOLPayActivity.mp_bill_name, "billname");
+ paymentDetails.put(MOLPayActivity.mp_bill_email, "email@domain.com");
+ paymentDetails.put(MOLPayActivity.mp_bill_mobile, "+1234567");
+
+ // Optional, allow channel selection.
+ // paymentDetails.put(MOLPayActivity.mp_channel_editing, false);
+
+ // Optional, allow billing information editing.
paymentDetails.put(MOLPayActivity.mp_editing_enabled, true);
- paymentDetails.put(MOLPayActivity.mp_express_mode, false);
- paymentDetails.put(MOLPayActivity.mp_dev_mode, false);
+
+ // Optional, for Escrow.
+ // paymentDetails.put(MOLPayActivity.mp_is_escrow, ""); // Put "1" to enable escrow
+
+ // Optional, for credit card BIN restrictions and campaigns.
+ String binlock[] = {"414170","414171"};
+ // paymentDetails.put(MOLPayActivity.mp_bin_lock, binlock);
+
+ // Optional, for mp_bin_lock alert error.
+ // paymentDetails.put(MOLPayActivity.mp_bin_lock_err_msg, "Only UOB allowed");
+
+ // WARNING! FOR TRANSACTION QUERY USE ONLY, DO NOT USE THIS ON PAYMENT PROCESS.
+ // Optional, provide a valid cash channel transaction id here will display a payment instruction screen. Required if mp_request_type is 'Receipt'.
+ // paymentDetails.put(MOLPayActivity.mp_transaction_id, "");
+ // Optional, use 'Receipt' for Cash channels, and 'Status' for transaction status query.
+ // paymentDetails.put(MOLPayActivity.mp_request_type, "");
+
+ // Optional, use this to customize the UI theme for the payment info screen, the original XDK custom.css file can be obtained at https://github.com/MOLPay/molpay-mobile-xdk-examples/blob/master/custom.css.
+ // paymentDetails.put(MOLPayActivity.mp_custom_css_url, "file:///android_asset/custom.css");
+
+ // Optional, set the token id to nominate a preferred token as the default selection, set "new" to allow new card only.
paymentDetails.put(MOLPayActivity.mp_preferred_token, "new");
+ // Optional, credit card transaction type, set "AUTH" to authorize the transaction.
+ // paymentDetails.put(MOLPayActivity.mp_tcctype, "");
+
+ // Optional, required valid credit card channel, set true to process this transaction through the recurring api, please refer the MOLPay Recurring API pdf.
+ // paymentDetails.put(MOLPayActivity.mp_is_recurring, false);
+
+ // Optional, show nominated channels.
+ String allowedchannels[] = {"credit","credit3"};
+ // paymentDetails.put(MOLPayActivity.mp_allowed_channels, allowedchannels);
+
+ // Optional, simulate offline payment, set boolean value to enable.
+ // paymentDetails.put(MOLPayActivity.mp_sandbox_mode, true);
+
+ // Optional, required a valid mp_channel value, this will skip the payment info page and go direct to the payment screen.
+ paymentDetails.put(MOLPayActivity.mp_express_mode, false);
+
+ // Optional, extended email format validation based on W3C standards.
+ // paymentDetails.put(MOLPayActivity.mp_advanced_email_validation_enabled, true);
+
+ // Optional, extended phone format validation based on Google i18n standards.
+ // paymentDetails.put(MOLPayActivity.mp_advanced_phone_validation_enabled, true);
+
+ // Optional, explicitly force disable user input.
+// paymentDetails.put(MOLPayActivity.mp_bill_name_edit_disabled, true);
+// paymentDetails.put(MOLPayActivity.mp_bill_email_edit_disabled, true);
+// paymentDetails.put(MOLPayActivity.mp_bill_mobile_edit_disabled, true);
+// paymentDetails.put(MOLPayActivity.mp_bill_description_edit_disabled, true);
+
+ // Optional, EN, MS, VI, TH, FIL, MY, KM, ID, ZH.
+ //paymentDetails.put(MOLPayActivity.mp_language, "EN");
+
+ // Optional, Cash channel payment request expiration duration in hour.
+ // paymentDetails.put(MOLPayActivity.mp_cash_waittime, 48);
+
+ // Optional, allow bypass of 3DS on some credit card channels.
+ // paymentDetails.put(MOLPayActivity.mp_non_3DS, true);
+
+ // Optional, disable card list option.
+ // paymentDetails.put(MOLPayActivity.mp_card_list_disabled, true);
+
+ // Optional for channels restriction, this option has less priority than mp_allowed_channels.
+ String disabledChannels[] = {""};
+ // paymentDetails.put(MOLPayActivity.mp_disabled_channels, disabledChannels);
+
Intent intent = new Intent(MainActivity.this, MOLPayActivity.class);
intent.putExtra(MOLPayActivity.MOLPayPaymentDetails, paymentDetails);
startActivityForResult(intent, MOLPayActivity.MOLPayXDK);
diff --git a/MOLPayXdkExample/app/src/main/res/layout/activity_main.xml b/MOLPayXdkExample/app/src/main/res/layout/activity_main.xml
index 3489739..42f79f4 100644
--- a/MOLPayXdkExample/app/src/main/res/layout/activity_main.xml
+++ b/MOLPayXdkExample/app/src/main/res/layout/activity_main.xml
@@ -18,7 +18,7 @@
+ />
Date: Mon, 19 Feb 2024 15:10:08 +0800
Subject: [PATCH 6/8] Update README.md
---
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 655bcef..7764f23 100644
--- a/README.md
+++ b/README.md
@@ -5,9 +5,11 @@
This is the finished and working Razer Merchant Services Android payment module, which can be added to Android Studio as a MOLPayXDK module by using the Gradle integration from the JCenter/Maven repository. For reference purposes, an example application project (MOLPayXdkExample) for the MOLPayXDK framework integration is given.
+
+# How does it work ?
+

-# How does it work ?
1. User chooses the Payment option they wish to pay with
2. Press "Proceed"
From 220f70afaad52ac5352d7e6d386362a75f330927 Mon Sep 17 00:00:00 2001
From: Naloff67 <89504625+Naloff67@users.noreply.github.com>
Date: Tue, 27 Feb 2024 14:41:32 +0800
Subject: [PATCH 7/8] Update README.md
---
README.md | 38 +++++++++++++++++++++++++++++---------
1 file changed, 29 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
index 7764f23..6fac773 100644
--- a/README.md
+++ b/README.md
@@ -5,29 +5,49 @@
This is the finished and working Razer Merchant Services Android payment module, which can be added to Android Studio as a MOLPayXDK module by using the Gradle integration from the JCenter/Maven repository. For reference purposes, an example application project (MOLPayXdkExample) for the MOLPayXDK framework integration is given.
-
# How does it work ?

-1. User chooses the Payment option they wish to pay with
-2. Press "Proceed"
-3. Complete the Transaction.
+1. User chooses the Payment option/Bank they wish to pay with
+2. Press "Proceed".
+3. input your bank credentials until finish payment.
+4. Complete the Transaction
+
+#### Note :
+
+you must be a registered Razer merchant to receive your own credentials for you to use or test this module.
+
+To do so you can contact us here : sales-sa@razer.com
+
+
+
+## Getting Started
+
+Follow the "get started" guide to install Android studio here : [https://docs.flutter.dev/get-started/install](https://developer.android.com/studio?gad_source=1&gclid=CjwKCAiAivGuBhBEEiwAWiFmYcRftsvawKYGV68bhK2IluVModqwUchdEU_wli2H39oLU1EdkBiGjxoC3RkQAvD_BwE&gclsrc=aw.ds)
+
+For help getting started with Android Studio, view our [online documentation](https://developer.android.com/studio/intro), which offers tutorials, samples, guidance on mobile development, and a full API reference
## Recommended configurations
- - Minimum Android SDK Version: 26 ++
+Below is the installation guide to implement Razer XDK into your project.
+
+
+- Android SDK Version: 26 ++
+
+- Android API level: 19 ++
- - Minimum Android API level: 19 ++
+- Android target version: Android 4.4
- - Minimum Android target version: Android 4.4
+- Android Studio Gradle: 3.1.2
- - Minimum Android Studio Gradle: 3.1.2
## Installation Guidance
-[[Installation](https://github.com/RazerMS/rms-mobile-xdk-android/wiki/Installation-Guidance)](https://github.com/Naloff67/Mobile-XDK-RazerMS_Android_Studio/wiki/Installation-Guide)
+Below is the installation guide to implement Razer XDK into your project.
+
+[Click me to install now !](https://github.com/Naloff67/Mobile-XDK-RazerMS_Android_Studio/wiki/Installation-Guide)
## Resources
From b60ef7b03a546f7412efacdddbb5c79cf623a66a Mon Sep 17 00:00:00 2001
From: Razer Technical
Date: Wed, 28 Feb 2024 09:57:08 +0800
Subject: [PATCH 8/8] changed the User Interface 26/02/2024
---
.../molpay/molpayxdkexample/MainActivity.java | 88 +++++---
.../app/src/main/res/layout/activity_main.xml | 18 +-
.../app/src/main/res/layout/content_main.xml | 197 +++++++++++++++++-
3 files changed, 254 insertions(+), 49 deletions(-)
diff --git a/MOLPayXdkExample/app/src/main/java/com/molpay/molpayxdkexample/MainActivity.java b/MOLPayXdkExample/app/src/main/java/com/molpay/molpayxdkexample/MainActivity.java
index ced37a7..cc02982 100644
--- a/MOLPayXdkExample/app/src/main/java/com/molpay/molpayxdkexample/MainActivity.java
+++ b/MOLPayXdkExample/app/src/main/java/com/molpay/molpayxdkexample/MainActivity.java
@@ -17,19 +17,35 @@
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
+ String orderId;
+ String billName;
+ String Country;
+ String Currency;
+ String MobileNum;
+ String TtlAmount;
- private void restartmolpay() {
+
+ public void restartmolpay(HashMap paymentDetails) {
+ Intent intent = new Intent(MainActivity.this, MOLPayActivity.class);
+ intent.putExtra(MOLPayActivity.MOLPayPaymentDetails, paymentDetails);
+ startActivityForResult(intent, MOLPayActivity.MOLPayXDK);
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // Initialize payment details
HashMap paymentDetails = new HashMap<>();
// Optional, REQUIRED when use online Sandbox environment and account credentials.
- paymentDetails.put(MOLPayActivity.mp_dev_mode, false);
+// paymentDetails.put(MOLPayActivity.mp_dev_mode, false);
// Mandatory String. Values obtained from MOLPay.
- // Mandatory String. Values obtained from MOLPay.
- paymentDetails.put(MOLPayActivity.mp_username, "");
- paymentDetails.put(MOLPayActivity.mp_password, "");
- paymentDetails.put(MOLPayActivity.mp_merchant_ID, "");
- paymentDetails.put(MOLPayActivity.mp_app_name, "");
- paymentDetails.put(MOLPayActivity.mp_verification_key, "");
+ paymentDetails.put(MOLPayActivity.mp_username, "RMSxdk_2022");
+ paymentDetails.put(MOLPayActivity.mp_password, "RMSpwd@2022");
+ paymentDetails.put(MOLPayActivity.mp_merchant_ID, "rmsxdk_mobile_Dev");
+ paymentDetails.put(MOLPayActivity.mp_app_name, "mobile");
+ paymentDetails.put(MOLPayActivity.mp_verification_key, "ee738b541eff7b6b495e44771f71c0ec");
// Mandatory String. Payment values.
paymentDetails.put(MOLPayActivity.mp_amount, "1.10"); // Minimum 1.01
@@ -49,13 +65,13 @@ private void restartmolpay() {
// paymentDetails.put(MOLPayActivity.mp_channel_editing, false);
// Optional, allow billing information editing.
- paymentDetails.put(MOLPayActivity.mp_editing_enabled, true);
+// paymentDetails.put(MOLPayActivity.mp_editing_enabled, true);
// Optional, for Escrow.
// paymentDetails.put(MOLPayActivity.mp_is_escrow, ""); // Put "1" to enable escrow
// Optional, for credit card BIN restrictions and campaigns.
- String binlock[] = {"414170","414171"};
+// String binlock[] = {"414170","414171"};
// paymentDetails.put(MOLPayActivity.mp_bin_lock, binlock);
// Optional, for mp_bin_lock alert error.
@@ -71,7 +87,7 @@ private void restartmolpay() {
// paymentDetails.put(MOLPayActivity.mp_custom_css_url, "file:///android_asset/custom.css");
// Optional, set the token id to nominate a preferred token as the default selection, set "new" to allow new card only.
- paymentDetails.put(MOLPayActivity.mp_preferred_token, "new");
+// paymentDetails.put(MOLPayActivity.mp_preferred_token, "new");
// Optional, credit card transaction type, set "AUTH" to authorize the transaction.
// paymentDetails.put(MOLPayActivity.mp_tcctype, "");
@@ -80,14 +96,14 @@ private void restartmolpay() {
// paymentDetails.put(MOLPayActivity.mp_is_recurring, false);
// Optional, show nominated channels.
- String allowedchannels[] = {"credit","credit3"};
+// String allowedchannels[] = {"credit","credit3"};
// paymentDetails.put(MOLPayActivity.mp_allowed_channels, allowedchannels);
// Optional, simulate offline payment, set boolean value to enable.
// paymentDetails.put(MOLPayActivity.mp_sandbox_mode, true);
// Optional, required a valid mp_channel value, this will skip the payment info page and go direct to the payment screen.
- paymentDetails.put(MOLPayActivity.mp_express_mode, false);
+// paymentDetails.put(MOLPayActivity.mp_express_mode, false);
// Optional, extended email format validation based on W3C standards.
// paymentDetails.put(MOLPayActivity.mp_advanced_email_validation_enabled, true);
@@ -114,39 +130,43 @@ private void restartmolpay() {
// paymentDetails.put(MOLPayActivity.mp_card_list_disabled, true);
// Optional for channels restriction, this option has less priority than mp_allowed_channels.
- String disabledChannels[] = {""};
+// String disabledChannels[] = {""};
// paymentDetails.put(MOLPayActivity.mp_disabled_channels, disabledChannels);
- Intent intent = new Intent(MainActivity.this, MOLPayActivity.class);
- intent.putExtra(MOLPayActivity.MOLPayPaymentDetails, paymentDetails);
- startActivityForResult(intent, MOLPayActivity.MOLPayXDK);
+ orderId = paymentDetails.get(MOLPayActivity.mp_order_ID).toString();
+ billName = paymentDetails.get(MOLPayActivity.mp_bill_name).toString();
+ Country = paymentDetails.get(MOLPayActivity.mp_country).toString();
+ Currency = paymentDetails.get(MOLPayActivity.mp_currency).toString();
+ MobileNum = paymentDetails.get(MOLPayActivity.mp_bill_mobile).toString();
+ TtlAmount = paymentDetails.get(MOLPayActivity.mp_amount).toString();
- }
+ setContentView(R.layout.activity_main);
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data)
- {
- super.onActivityResult(requestCode, resultCode, data);
+ TextView orderIdTextView = findViewById(R.id.order_id);
+ orderIdTextView.setText(orderId);
- if (requestCode == MOLPayActivity.MOLPayXDK && resultCode == RESULT_OK){
- Log.d(MOLPayActivity.MOLPAY, "MOLPay result = "+data.getStringExtra(MOLPayActivity.MOLPayTransactionResult));
- TextView tw = (TextView)findViewById(R.id.resultTV);
- tw.setText(data.getStringExtra(MOLPayActivity.MOLPayTransactionResult));
- }
+ TextView billNameTextView = findViewById(R.id.bill_name);
+ billNameTextView.setText(billName);
+
+ TextView CountryTextView = findViewById(R.id.country);
+ CountryTextView.setText(Country);
+
+ TextView CurrencyTextView = findViewById(R.id.currency);
+ CurrencyTextView.setText(Currency);
+
+ TextView MobileNumTextView = findViewById(R.id.mobile);
+ MobileNumTextView.setText(MobileNum);
+
+ TextView TtlAmountTextView = findViewById(R.id.amount);
+ TtlAmountTextView.setText(TtlAmount);
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
Button btnXdk = (Button) findViewById(R.id.xdk_button);
btnXdk.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
- restartmolpay();
-
+ restartmolpay(paymentDetails);
}
});
diff --git a/MOLPayXdkExample/app/src/main/res/layout/activity_main.xml b/MOLPayXdkExample/app/src/main/res/layout/activity_main.xml
index 42f79f4..1372432 100644
--- a/MOLPayXdkExample/app/src/main/res/layout/activity_main.xml
+++ b/MOLPayXdkExample/app/src/main/res/layout/activity_main.xml
@@ -13,13 +13,19 @@
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
+
+
+
+
+
-
+
+
diff --git a/MOLPayXdkExample/app/src/main/res/layout/content_main.xml b/MOLPayXdkExample/app/src/main/res/layout/content_main.xml
index f8dbcdd..f519db9 100644
--- a/MOLPayXdkExample/app/src/main/res/layout/content_main.xml
+++ b/MOLPayXdkExample/app/src/main/res/layout/content_main.xml
@@ -4,17 +4,204 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingBottom="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.molpay.molpayxdkexample.MainActivity"
tools:showIn="@layout/activity_main">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ android:layout_below="@id/mobile_label"
+ android:layout_marginTop="200dp"
+ android:text="Total:"
+ android:textStyle="bold" />
+
+
+
+
+
\ No newline at end of file