Как использовать Simplify Commerce Payment API в Android?

Я пытаюсь создать платеж с токена карты в моей программе Android, как показано ниже:

Пример использования api

Я не могу создать объект "Оплата" с помощью Simplify Commerce Android SDK, поэтому я включил SDK для java-платежей, добавив эту строку в мою конструкцию gradle

compile 'com.simplify:payments-sdk-java:1.3.0'

После добавления этой строки я могу импортировать пакет "com.simplify.payments" и создать объект платежа, но на этот раз моя сборка Android не удалась (я использую java sdk?).

Information:Gradle tasks [:app:assembleDebug]
Warning:Dependency org.apache.httpcomponents:httpclient:4.2.1 is ignored for debug as it may be conflicting with the internal version provided by Android.
 In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency org.apache.httpcomponents:httpclient:4.2.1 is ignored for debug as it may be conflicting with the internal version provided by Android.
 In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency commons-logging:commons-logging:1.1.1 is ignored for debug as it may be conflicting with the internal version provided by Android.
 In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency org.apache.httpcomponents:httpclient:4.2.1 is ignored for release as it may be conflicting with the internal version provided by Android.
 In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency org.apache.httpcomponents:httpclient:4.2.1 is ignored for release as it may be conflicting with the internal version provided by Android.
 In case of problem, please repackage it with jarjar to change the class packages
Warning:Dependency commons-logging:commons-logging:1.1.1 is ignored for release as it may be conflicting with the internal version provided by Android.
 In case of problem, please repackage it with jarjar to change the class packages
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72220Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42220Library UP-TO-DATE
:app:prepareComSimplifySdkAndroid103Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:compileDebugJavaWithJavac UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources UP-TO-DATE
:app:preDexDebug UP-TO-DATE
:app:dexDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lorg/hamcrest/Description;
 at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
 at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
 at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
 at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
 at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
 at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)
 at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
 at com.android.dx.command.dexer.Main.run(Main.java:277)
 at com.android.dx.command.dexer.Main.main(Main.java:245)
 at com.android.dx.command.Main.main(Main.java:106)
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_60\bin\java.exe'' finished with non-zero exit value 2
Information:BUILD FAILED

Как я могу использовать упрощенную транзакцию api в моей программе Android?

Github Ссылка на мой проект

1 ответ

Полное раскрытие информации: это не отвечает на вопрос о том, как включить API-интерфейс Payment в ваше приложение, а скорее укажет вам в правильном направлении для использования Simplify для сбора платежей в вашем приложении.

Вы не должны пытаться использовать платежи java sdk в своем приложении для Android. Для этого требуется, чтобы вы предоставили свой частный ключ API и внесете серьезные проблемы с безопасностью. См.: https://github.com/simplifycom/simplify-android-sample/wiki/Simplify-Android-SDK-Tutorial#process-a-payment

Дружественное напоминание: НЕ НАРУШАЙТЕ ВАШУ ЧАСТНЫЙ КЛЮЧ В ВАШЕМ ПРИЛОЖЕНИИ!

Ваши личные ключи считаются священными и могут использоваться для обработки платежей, выдачи возмещений и т.д. Общей ошибкой развития является простое включение Java SDK в приложение и использование закрытого ключа для завершения жизненного цикла транзакции без привлечения сервера. Хотя это может показаться простым способом интеграции платежей, распространение вашего закрытого ключа в приложении делает его уязвимым с помощью простой обратной инженерии. После взлома злоумышленник может использовать ваш ключ для выполнения почти каждой операции, предлагаемой через наши API. Это плохая практика безопасности. Кроме того, поскольку ключи могут быть отменены со страницы API Keys, они также считаются изменчивыми. Если личный ключ отменяется, любое приложение, использующее его, будет разорвано до тех пор, пока обновление не будет выпущено с новым ключом. Суть заключается в следующем: не делайте этого. Мы найдем вас.:)

Хорошей новостью является то, что Simplify предоставляет Android SDK, который вы можете использовать для сбора и маркировки информации о карте в своем приложении. Просто включите его со следующей строкой:

compile 'com.simplify:simplify-android:2.0.3'

И справочная документация и пример приложения здесь: https://github.com/simplifycom/simplify-android-sample

licensed under cc by-sa 3.0 with attribution.