android - 为什么我收到 PayPal Android Native Checkout SDK - 无效的 client_id 或 redirect_uri
问题描述
我正在将新的 Native Checkout SDK for Android 与 Kotlin 一起使用,并且我一直在遵循文档中的每一步,但这种情况一直在发生,我不知道为什么。我也在尝试PayPal Android Native Checkout SDK - 无效的 client_id 或 redirect_uri 和 CHECKOUT_ERROR但它对我不起作用。
build.girdle:
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
applicationId "com.example.paypalkotlin"
minSdkVersion 23
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation('com.paypal.checkout:android-sdk:0.2.0')
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
构建腰带
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = "1.3.72"
repositories {
google()
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.3"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
// This private repository is required to resolve the Cardinal SDK transitive dependency.
maven {
url "https://cardinalcommerceprod.jfrog.io/artifactory/android"
credentials {
// Be sure to add these non-sensitive credentials in order to retrieve dependencies from the private repository.
username "paypal_sgerritz"
password "AKCp8jQ8tAahqpT5JjZ4FRP2mW7GMoFZ674kGqHmupTesKeAY2G8NcmPKLuTxTGkKjDLRzDUQ"
}
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
显现
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.paypalkotlin">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.PaypalKotlin">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.paypal.checkout.paymentbutton.PayPalButton
android:id="@+id/payPalButton"
android:layout_width="100dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
活动
package com.example.paypalkotlin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.paypal.checkout.PayPalCheckout
import com.paypal.checkout.approve.OnApprove
import com.paypal.checkout.config.CheckoutConfig
import com.paypal.checkout.config.Environment
import com.paypal.checkout.config.SettingsConfig
import com.paypal.checkout.createorder.CreateOrder
import com.paypal.checkout.createorder.CurrencyCode
import com.paypal.checkout.createorder.OrderIntent
import com.paypal.checkout.createorder.UserAction
import com.paypal.checkout.order.Amount
import com.paypal.checkout.order.AppContext
import com.paypal.checkout.order.Order
import com.paypal.checkout.order.PurchaseUnit
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
val YOUR_CLIENT_ID = "AVxCKg9vnFKxNXLU5LLylEOnGCnsG8UiN300FlmY37zI4oKdrpyiuR_zutUn77rKSVxC377x0jM_uCPk";
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val config = CheckoutConfig(
application = application,
clientId = YOUR_CLIENT_ID,
environment = Environment.SANDBOX,
returnUrl = "${BuildConfig.APPLICATION_ID}://paypalpay",
currencyCode = CurrencyCode.USD,
userAction = UserAction.PAY_NOW,
settingsConfig = SettingsConfig(
loggingEnabled = true
)
)
PayPalCheckout.setConfig(config)
payPalButton.setup(
createOrder = CreateOrder { createOrderActions ->
val order = Order(
intent = OrderIntent.CAPTURE,
appContext = AppContext(
userAction = UserAction.PAY_NOW
),
purchaseUnitList = listOf(
PurchaseUnit(
amount = Amount(
currencyCode = CurrencyCode.USD,
value = "10.00"
)
)
)
)
createOrderActions.create(order)
},
onApprove = OnApprove { approval ->
approval.orderActions.capture { captureOrderResult ->
Log.i("CaptureOrder", "CaptureOrderResult: $captureOrderResult")
}
}
)
}
}
解决方案
我有同样的问题。我设法通过在沙盒网站的 returnURL 中写入“com.example.appname://paypalpay”来解决它。试试看!
推荐阅读
- python - 无法使用 python ldap3 模块连接到 ldap
- r - 如何根据一定的规则对矩阵中的列求和?
- c# - C#:子类类型的泛型方法约束
- python - 尝试循环时挂起的Python cmd脚本
- javascript - POST 请求后下载 CSV
- c++ - 如何将文件的特定部分读入私有数据成员
- android - 在 Wear OS 中的应用之间共享数据的最佳选择
- firebase - actionsdk 云功能的工作原理
- javascript - 当应用程序不使用或处于后台模式时,React Native 是否有函数生命周期正在运行?
- javascript - 对多个事件触发的操作