Firebase云功能(Stripe:AddPaymentSource)

问题描述 投票:1回答:1

我有一个Android和iOS应用程序,它使用带有Stripe的Firebase云功能来处理付款。

在客户端,我处理令牌操作,然后写入实时数据库。完成后写入addPaymentSource云功能触发器,该触发器存储该支付源以供将来交易。

有趣的是在iOS上创建令牌然后将该输出保存到我​​的服务器的过程按预期工作。尝试将我的iOS实现复制到我的Android应用程序时出现了问题。 Firebase云功能按预期触发,但它向我的服务器输出错误。

服务器中发现错误:

"The source hash must include an 'object' key indicating what type of source to create."

客户代码:

public void tokenizePaymentFields(){
    Stripe stripe = new Stripe(getApplicationContext(), stripePublishableKey);

    final Card stripeCard  = new Card(validCard.getCardNumber()
    ,Integer.valueOf(validCard.getExpiredDate().substring(0,2)),Integer.valueOf(validCard.getExpiredDate().substring(3,5)),validCard.getCvvCode());

    if (!stripeCard.validateCard()) {
        Toast.makeText(getApplicationContext(),
                "There was an error validating your card.",
                Toast.LENGTH_LONG
        ).show();
        return;
    }
    stripe.createToken(
            stripeCard,
            new TokenCallback() {
                public void onSuccess(Token token) {
                    // Send token to your server
                    pushToServer(token);
                }
                public void onError(Exception error) {
                    // Show localized error message
                    activitySubmitCreditCardBinding.progressCircle.setVisibility(View.INVISIBLE);
                    Toast.makeText(getApplicationContext(),
                            error.getLocalizedMessage(),
                            Toast.LENGTH_LONG
                    ).show();
                }
            }
    );
}

Stripe(Firebase云功能):https://github.com/firebase/functions-samples/tree/master/stripe

java android firebase stripe-payments google-cloud-functions
1个回答
2
投票

而不是将整个token object发送到您的服务器,您应该只发送令牌的id,如下所示:

public void onSuccess(Token token) {
    // Send token to your server
    pushToServer(token.getId());
}

在服务器端(Firebase)代码中,charge creation request只需要source参数中的标记ID,而不是完整标记对象。

© www.soinside.com 2019 - 2024. All rights reserved.