Java Stripe android,在服务器上创建PaymentIntent并在android上确认,但创建需要\u payment\u方法错误

Java Stripe android,在服务器上创建PaymentIntent并在android上确认,但创建需要\u payment\u方法错误,java,android,stripe-payments,Java,Android,Stripe Payments,我正在跟踪文件: 在服务器端: 创建了PaymentIntentCreateParams,我在这个对象上设置了货币和金额 使用PaymentIntentCreateParams clientSecretKey被发送到客户端(android) 在客户端: 从CardMultileWidget 使用PaymentMethodCreateParams和clientSecretKey 使用条带对象确认付款 以下是与此交易相关的付款: 显然,付款没有通过,我不明白为什么以及如何获得这种状态,我的付款方式

我正在跟踪文件:

在服务器端:

  • 创建了
    PaymentIntentCreateParams
    ,我在这个对象上设置了货币和金额
  • 使用
    PaymentIntentCreateParams
  • clientSecretKey
    被发送到客户端(android)
  • 在客户端:

  • CardMultileWidget
  • 使用
    PaymentMethodCreateParams
    clientSecretKey
  • 使用
    条带
    对象确认付款
  • 以下是与此交易相关的付款:

    显然,付款没有通过,我不明白为什么以及如何获得这种状态,我的付款方式是
    卡MultileWidget
    上的付款方式,不是吗

    如何在
    PaymentIntent
    上设置付款方式

    服务器

     @PostMapping("/api/payment")
        @ResponseBody
        public String startPay(@RequestHeader Map<String, String> headers,
                               @RequestParam(name = "currency") String currency,
                               @RequestParam(name = "name") String name) throws Exception{
    
            PaymentBody paymentBody = new PaymentBody(currency, name);
    
            PaymentIntentCreateParams createParams = new PaymentIntentCreateParams.Builder()
                    .setCurrency(paymentBody.getCurrency())
                    .setAmount(100000L)
                    .addPaymentMethodType("card")
                    .build();
    
            PaymentIntent intent = PaymentIntent.create(createParams);
    
            Gson gson = new Gson().newBuilder().setPrettyPrinting().create();
    
            System.out.println(gson.toJson(intent));
    
            PaymentResponse paymentResponse = new PaymentResponse(ApiKey.PUBLISHABLE_KEY,
                    intent.getClientSecret(),
                    intent.getId(),
                    intent.getStatus());
    
            return gson.toJson(paymentResponse);
        }
    
    @PostMapping(/api/payment)
    @应答器
    公共字符串startPay(@RequestHeader映射头,
    @RequestParam(name=“currency”)字符串货币,
    @RequestParam(name=“name”)字符串名)引发异常{
    PaymentBody PaymentBody=新的PaymentBody(货币、名称);
    PaymentIntentCreateParams createParams=新建PaymentIntentCreateParams.Builder()
    .setCurrency(paymentBody.getCurrency())
    .设定金额(100000升)
    .addPaymentMethodType(“卡”)
    .build();
    PaymentIntent=PaymentIntent.create(createParams);
    Gson Gson=new Gson().newBuilder().setPrettyPrinting().create();
    System.out.println(gson.toJson(intent));
    PaymentResponse PaymentResponse=新的PaymentResponse(ApiKey.PUBLISHABLE_KEY,
    intent.getClientSecret(),
    intent.getId(),
    intent.getStatus());
    返回gson.toJson(paymentResponse);
    }
    
    客户:

     @Override
        public void onPayClicked() {
    
            mStripeApi.requestPaymentIntent("USD", "Name").enqueue(new Callback<PaymentResponse>() {
                @Override
                public void onResponse(Call<PaymentResponse> call, Response<PaymentResponse> response) {
    
                    PaymentMethodCreateParams paymentMethodCreateParams = mViewMvc.getCardDetails();
    
                    if(paymentMethodCreateParams == null) {
                        return;
                    }
    
                    mViewMvc.setResponse(response.body().getResponse());
    
                    ConfirmPaymentIntentParams confirmPaymentIntentParams = ConfirmPaymentIntentParams.
                            createWithPaymentMethodCreateParams(paymentMethodCreateParams, response.body().getClientSecret());
    
                    mStripe.confirmPayment(mFragmentActivity, confirmPaymentIntentParams);
    
                }
    
                @Override
                public void onFailure(Call<PaymentResponse> call, Throwable t) {
    
                }
            });
    
        }
    
    @覆盖
    在PayClicked()上公开作废{
    mStripeApi.requestPaymentIntent(“USD”,“Name”).enqueue(新回调(){
    @凌驾
    公共void onResponse(调用、响应){
    PaymentMethodCreateParams PaymentMethodCreateParams=mViewMvc.getCardDetails();
    如果(paymentMethodCreateParams==null){
    返回;
    }
    mViewMvc.setResponse(response.body().getResponse());
    ConfirmPaymentIntentParams ConfirmPaymentIntentParams=ConfirmPaymentIntentParams。
    createWithPaymentMethodCreateParams(paymentMethodCreateParams,response.body().getClientSecret());
    mStripe.confirmPayment(mFragmentActivity,confirmPaymentIntentParams);
    }
    @凌驾
    失败时公共无效(调用调用,可丢弃的t){
    }
    });
    }
    
    你明白了吗?不,还没明白我也有同样的问题。我认为付款方式应该是客户设置付款详细信息时生成的条带令牌,但我不确定。