├── app ├── proguard-rules.pro ├── .gitignore ├── debug.keystore ├── src │ └── main │ │ ├── res │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ └── styles.xml │ │ ├── values-w820dp │ │ │ └── dimens.xml │ │ └── layout │ │ │ └── activity_test.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── uz │ │ └── paycom │ │ └── testpaycom │ │ └── TestActivity.java └── build.gradle ├── payment ├── proguard-payment.pro ├── .gitignore ├── src │ └── main │ │ ├── java │ │ └── uz │ │ │ └── paycom │ │ │ └── payment │ │ │ ├── utils │ │ │ ├── Logger.java │ │ │ ├── PaycomSandBox.java │ │ │ ├── ViewDisable.java │ │ │ ├── DateExpireFormat.java │ │ │ ├── CardNumberFormat.java │ │ │ └── LocaleHelper.java │ │ │ ├── model │ │ │ ├── Confirm.java │ │ │ └── Result.java │ │ │ ├── api │ │ │ ├── TLSSocketFactory.java │ │ │ ├── task │ │ │ │ └── VerifyCardTask.java │ │ │ ├── JsonRpcRequest.java │ │ │ └── JsonParser.java │ │ │ ├── PaymentActivity.java │ │ │ └── ConfirmActivity.java │ │ ├── res │ │ ├── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ ├── drawable │ │ │ ├── ic_repeat.xml │ │ │ └── ic_warning.xml │ │ ├── values-uz │ │ │ └── strings.xml │ │ └── layout │ │ │ ├── paycom_payment_confirm.xml │ │ │ └── paycom_payment_main.xml │ │ └── AndroidManifest.xml └── build.gradle ├── settings.gradle ├── docs └── img.png ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── .gitignore ├── gradlew.bat ├── README.md ├── gradlew └── LICENSE /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /payment/proguard-payment.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /payment/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':payment' 2 | -------------------------------------------------------------------------------- /docs/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PaycomUZ/AndroidSDK/HEAD/docs/img.png -------------------------------------------------------------------------------- /app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PaycomUZ/AndroidSDK/HEAD/app/debug.keystore -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PaycomUZ/AndroidSDK/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PaycomUZ/AndroidSDK/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PaycomUZ/AndroidSDK/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PaycomUZ/AndroidSDK/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PaycomUZ/AndroidSDK/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PaycomUZ/AndroidSDK/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | TestPaycom 3 | Многократная оплата 4 | Оплата 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #e71f15 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Mar 06 12:41:32 UZT 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip -------------------------------------------------------------------------------- /payment/src/main/java/uz/paycom/payment/utils/Logger.java: -------------------------------------------------------------------------------- 1 | package uz.paycom.payment.utils; 2 | 3 | import android.util.Log; 4 | import uz.paycom.payment.BuildConfig; 5 | 6 | public class Logger { 7 | public static void d(String tag, String log) { 8 | if (BuildConfig.DEBUG) { 9 | Log.d(tag, log); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /payment/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #4591d1 4 | #4591d1 5 | @android:color/holo_blue_light 6 | 7 | #ffc4c4c4 8 | 9 | -------------------------------------------------------------------------------- /payment/src/main/java/uz/paycom/payment/utils/PaycomSandBox.java: -------------------------------------------------------------------------------- 1 | package uz.paycom.payment.utils; 2 | 3 | public class PaycomSandBox { 4 | 5 | private static boolean isSandBox; 6 | 7 | public static void setEnabled(boolean enabled) { 8 | isSandBox = enabled; 9 | }; 10 | 11 | public static boolean isSandBox() { 12 | return isSandBox; 13 | } 14 | } -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /payment/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /payment/src/main/res/drawable/ic_repeat.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /payment/src/main/res/drawable/ic_warning.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /payment/src/main/java/uz/paycom/payment/utils/ViewDisable.java: -------------------------------------------------------------------------------- 1 | package uz.paycom.payment.utils; 2 | 3 | import android.view.View; 4 | 5 | class ViewDisable { 6 | 7 | private View view; 8 | 9 | ViewDisable(View view) { 10 | this.view = view; 11 | } 12 | 13 | void enableView() { 14 | view.setEnabled(true); 15 | view.setAlpha(1f); 16 | view.setClickable(true); 17 | }; 18 | 19 | void disableView() { 20 | view.setEnabled(false); 21 | view.setAlpha(.3f); 22 | view.setClickable(false); 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | #org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | 19 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion project.ext.compileSdkVersion 5 | buildToolsVersion project.ext.buildToolsVersion 6 | defaultConfig { 7 | applicationId "uz.paycom.testpaycom" 8 | minSdkVersion project.ext.minSdkVersion 9 | targetSdkVersion project.ext.targetSdkVersion 10 | versionCode project.ext.versionCode 11 | versionName project.ext.versionName 12 | } 13 | signingConfigs { 14 | release { 15 | keyAlias 'androiddebugkey' 16 | keyPassword 'android' 17 | storeFile file('debug.keystore') 18 | storePassword 'android' 19 | } 20 | } 21 | buildTypes { 22 | debug { 23 | debuggable true 24 | } 25 | release { 26 | minifyEnabled true 27 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 28 | signingConfig signingConfigs.release 29 | } 30 | } 31 | } 32 | 33 | dependencies { 34 | implementation "com.android.support:appcompat-v7:$supportVersion" 35 | implementation project(':payment') 36 | } -------------------------------------------------------------------------------- /payment/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | 7 | 4dp 8 | 8dp 9 | 12dp 10 | 16dp 11 | 20dp 12 | 24dp 13 | 48dp 14 | 15 | 16 | 8sp 17 | 10sp 18 | 12sp 19 | 14sp 20 | 18sp 21 | 22sp 22 | 24sp 23 | 32sp 24 | 80dp 25 | 26 | 27 | -------------------------------------------------------------------------------- /payment/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Paycom 3 | Сумма к оплате 4 | Номер карты 5 | Только карты Uzcard Online 6 | Срок истечения 7 | Запомнить карту 8 | Продолжить 9 | Подтвердить 10 | КОД ПОДТВЕРЖДЕНИЯ ВЫСЛАН НА НОМЕР 11 | КОД ПОДТВЕРЖДЕНИЯ 12 | Ошибка 13 | Закрыть 14 | Произошла ошибка, попробуйте еще раз 15 | xxxx xxxx xxxx xxxx 16 | мм/гг 17 | Paycom Оплата 18 | Неправильный номер карты 19 | сум 20 | 21 | -------------------------------------------------------------------------------- /payment/src/main/res/values-uz/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Paycom 3 | To`lov so`mmasi 4 | Kartaning raqami 5 | Faqat Uzcard Online kartalari 6 | Kartaning amal qilish muddati 7 | Kartani saqlab qo`yin 8 | Oldinga 9 | Tasdiqlash 10 | TASDIQLASH KODI QUYIDAGI RAQAMGA JUNATILDI 11 | Tekshiruv kodi 12 | Xato 13 | Yopish 14 | Xatolik yuz berdi, qaytadan urinib ko`ring 15 | xxxx xxxx xxxx xxxx 16 | mm/yy 17 | Paycom To`lov 18 | Karta raqami noto`g`ri`kiritildi 19 | so`m 20 | 21 | -------------------------------------------------------------------------------- /payment/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | 19 | 20 | 26 | 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | #built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Java class files 6 | *.class 7 | 8 | # built native files (uncomment if you build your own) 9 | # *.o 10 | # *.so 11 | 12 | # generated files 13 | bin/ 14 | gen/ 15 | 16 | # Ignore gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Android Studio Navigation editor temp files 21 | .navigation/ 22 | 23 | # files for the dex VM 24 | *.dex 25 | 26 | # generated files 27 | bin/ 28 | gen/ 29 | 30 | # Local configuration file (sdk path, etc) 31 | local.properties 32 | 33 | # Windows thumbnail db 34 | Thumbs.db 35 | 36 | # Android Studio captures folder 37 | captures/ 38 | 39 | # OSX files 40 | .DS_Store 41 | 42 | # Proguard folder generated by Eclipse 43 | proguard/ 44 | 45 | # Eclipse project files 46 | .classpath 47 | .project 48 | .metadata/ 49 | 50 | # Android Studio 51 | *.iml 52 | .idea 53 | 54 | # Mac OS X clutter 55 | *.DS_Store 56 | 57 | # mpeltonen/sbt-idea plugin 58 | .idea_modules/ 59 | 60 | # IntelliJ 61 | /out/ 62 | 63 | /*/out 64 | /*/*/build 65 | /*/*/production 66 | *.iws 67 | *.ipr 68 | *~ 69 | *.swp 70 | 71 | */build 72 | */production 73 | */local.properties 74 | */out 75 | 76 | # Log Files 77 | *.log 78 | 79 | #NDK 80 | obj/ 81 | 82 | local.properties 83 | 84 | -------------------------------------------------------------------------------- /payment/src/main/java/uz/paycom/payment/utils/DateExpireFormat.java: -------------------------------------------------------------------------------- 1 | package uz.paycom.payment.utils; 2 | 3 | import android.text.Editable; 4 | import android.text.TextWatcher; 5 | import android.view.View; 6 | import android.widget.EditText; 7 | 8 | public class DateExpireFormat extends ViewDisable implements TextWatcher { 9 | 10 | private boolean lock; 11 | private EditText editText; 12 | 13 | public DateExpireFormat(View view, EditText editText) { 14 | super(view); 15 | this.editText = editText; 16 | } 17 | 18 | @Override 19 | public void beforeTextChanged(CharSequence s, int start, int count, int after) { 20 | } 21 | 22 | @Override 23 | public void onTextChanged(CharSequence s, int start, int before, int count) { 24 | } 25 | 26 | @Override 27 | public void afterTextChanged(Editable s) { 28 | int cardNumberLength = editText.getText().toString().length(); 29 | if (s.length() > 4 && cardNumberLength > 18) { enableView(); } else { disableView(); } 30 | if (lock || s.length() > 4) { 31 | return; 32 | } 33 | lock = true; 34 | for (int i = 2; i < s.length(); i +=2) { 35 | if (s.toString().charAt(i) != '/') { 36 | s.insert(i, "/"); 37 | } 38 | } 39 | lock = false; 40 | } 41 | } -------------------------------------------------------------------------------- /payment/src/main/java/uz/paycom/payment/utils/CardNumberFormat.java: -------------------------------------------------------------------------------- 1 | package uz.paycom.payment.utils; 2 | 3 | import android.text.Editable; 4 | import android.text.TextWatcher; 5 | import android.view.View; 6 | import android.widget.EditText; 7 | 8 | public class CardNumberFormat extends ViewDisable implements TextWatcher { 9 | 10 | private boolean lock; 11 | private EditText editText; 12 | 13 | public CardNumberFormat(View view, EditText editText) { 14 | super(view); 15 | this.editText = editText; 16 | } 17 | 18 | @Override 19 | public void beforeTextChanged(CharSequence s, int start, int count, int after) { 20 | } 21 | 22 | @Override 23 | public void onTextChanged(CharSequence s, int start, int before, int count) { 24 | } 25 | 26 | @Override 27 | public void afterTextChanged(Editable s) { 28 | int dateExpireLength = editText.getText().toString().length(); 29 | if (s.length() > 18 && dateExpireLength> 4) { enableView(); } else { disableView(); } 30 | if (lock || s.length() > 16) { 31 | return; 32 | } 33 | lock = true; 34 | for (int i = 4; i < s.length(); i += 5) { 35 | if (s.toString().charAt(i) != ' ') { 36 | s.insert(i, " "); 37 | } 38 | } 39 | lock = false; 40 | } 41 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 14 | 21 | 27 |