You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native集成Braintree PayPal Vault遇阻,求技术解决方案

React Native集成Braintree PayPal Vault问题求助

我在React Native开发的应用中,需要集成Braintree的PayPal Vault功能。官方提供了JS、Android、iOS三种SDK,尝试两种集成方式均遇到问题:

  • 集成Android原生库:调用Native方法后仅输出react-native-test,无报错但未跳转至PayPal授权页面,功能未生效;
  • 使用JS库:导入相关方法后应用无法启动。

疑惑是否只能通过WebView实现该功能?恳请有相关集成经验的开发者提供建议。

参考文档:Braintree PayPal Vault Android v4官方文档

我的Android代码如下:

BraintreeValueModule.java

public class BraintreeValueModule extends ReactContextBaseJavaModule implements PayPalListener {
    private static ReactApplicationContext reactContext;
    private Callback successCallback;
    private Callback errorCallback;
    private BraintreeClient braintreeClient;
    private PayPalClient payPalClient;

    public BraintreeValueModule(ReactApplicationContext context) {
        super(context);
        reactContext = context;
    }

    @NonNull
    @Override
    public String getName() {
        return "BraintreeValueModule";
    }
    @ReactMethod
    public void test(){
        System.out.println("react-native-test");
        braintreeClient = new BraintreeClient(reactContext.getApplicationContext(), "sandbox_ykbznr4s_ctmssyj6wz2qcj2g");
        FragmentActivity activity = (FragmentActivity) getCurrentActivity();
        activity.runOnUiThread(new MyRunnable(activity,braintreeClient));
        //The following writing method will report an error: Method addObserver must be called on the main thread
        //if(activity != null){
        //    payPalClient = new PayPalClient(activity, braintreeClient);
        //    payPalClient.setListener(this);
        //}
    }



    @Override
    public void onPayPalSuccess(@NonNull PayPalAccountNonce payPalAccountNonce) {
        successCallback.invoke(payPalAccountNonce.toString());
    }

    @Override
    public void onPayPalFailure(@NonNull Exception error) {
        if (error instanceof UserCanceledException) {
            // user canceled
            errorCallback.invoke("use canceled");
        } else {
            // handle error
            errorCallback.invoke("error");
        }
    }
}

MyRunnable.java

public class MyRunnable implements Runnable, PayPalListener {
    private BraintreeClient braintreeClient;
    private PayPalClient payPalClient;
    private FragmentActivity activity;
    MyRunnable(FragmentActivity activity,BraintreeClient braintreeClient){
        this.activity = activity;
        this.braintreeClient = braintreeClient;
    }
    @Override
    public void run() {
        if(activity != null){
            payPalClient = new PayPalClient(activity, braintreeClient);
            payPalClient.setListener(this);
        }
    }

    @Override
    public void onPayPalSuccess(@NonNull PayPalAccountNonce payPalAccountNonce) {
        System.out.println(payPalAccountNonce.getString());
    }

    @Override
    public void onPayPalFailure(@NonNull Exception error) {
        if (error instanceof UserCanceledException) {
            // user canceled
            System.out.println("use canceled");
        } else {
            // handle error
            System.out.println("error");
        }
    }
}

内容的提问来源于stack exchange,提问作者Z Hu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:45:43