【问题标题】:adding stripe server code to Backendless Cloud将条带服务器代码添加到 Backendless Cloud
【发布时间】:2018-01-19 08:52:23
【问题描述】:

我正在尝试将 Stripe 集成到我的 android 应用程序中,并将 Backendless 中设置的服务器代码作为自定义 API 服务。使用成功的回调方法向卡收费后,我无法在我的条纹仪表板上的付款列表中看到它。不确定问题出在哪里。任何建议将不胜感激。以下是我到目前为止的内容: ChargeItem://Charge 类

package com.mbaas.service;

public class ChargeItem {
   public String token;
   public int price;
   public String description;
 }

ChargeService //后端服务

import com.stripe.Stripe;
import com.stripe.exception.StripeException;
import com.stripe.model.Charge;

import java.util.HashMap;
import java.util.Map;

public class ChargeService implements IBackendlessService
{
    public boolean makeCharge(ChargeItem charges){
    Stripe.apiKey = "my stripe secret key";

    // Get the credit card details submitted by the form
    String token = charges.token;
    double price = charges.price;
    String desc = charges.description;
    String userId = charges.userId;
    String orderId = charges.orderId;

    // Create a charge: this will charge the user's card
    try {
      Map<String, Object> chargeParams = new HashMap<String, Object>();
      chargeParams.put("orderId",orderId);
      chargeParams.put("userId",userId);
      chargeParams.put("amount", price); // Amount in cents
      chargeParams.put("currency", "usd");
      chargeParams.put("source", token);
      chargeParams.put("description", desc);
      @SuppressWarnings("unused")
      Charge charge = Charge.create(chargeParams);
    } 
    catch (StripeException e) {
      // The card has been declined
        return false;
    }
    return true;
   }
}

//我的条带令牌回调方法

private  void convertCardToToken(Card card, final Orders order){
                 Stripe stripe = new Stripe(getApplicationContext(),              CustomApplication.PUBLISHABLE_KEY);
    stripe.createToken(
            card,
            new TokenCallback() {
                public void onSuccess(Token token) {
                    // Send token to your server
                    ChargeItem chargeItem = new ChargeItem();
                    chargeItem.setToken(token.getId());
                    chargeItem.setOrderId(order.getObjectId());
                    chargeItem.setPrice(order.getOrder_price());
                    chargeItem.setUserName(order.getOwnerId());
                    chargeItem.setDescription("Delivery Fee");
                    ChargeService.initApplication();
                    ChargeService chargeService =     ChargeService.getInstance();
                    chargeService.makeChargeAsync(chargeItem, new AsyncCallback<Boolean>() {
                        @Override
                        public void handleResponse(Boolean response) {
                            Toast.makeText(getApplicationContext(),
                                   "Payment Successful",
                                    Toast.LENGTH_LONG
                           ).show();
                        }

                        @Override
                        public void handleFault(BackendlessFault fault) {
                            Toast.makeText(getApplicationContext(), fault.getMessage(),
                                    Toast.LENGTH_LONG
                            ).show();


                        }
                    });
                }
                public void onError(Exception error) {
                    // Show localized error message
                    Toast.makeText(CheckoutActivity.this,
                            error.getLocalizedMessage(),
                            Toast.LENGTH_LONG
                    ).show();
                }
            }
    );

}

【问题讨论】:

    标签: android stripe-payments backendless


    【解决方案1】:

    我对 Backendless 不熟悉,因此无法在此处提供太多帮助,但您的代码存在一些问题:

    • price 是一个double。为避免四舍五入错误,Stripe API 中的所有金额均以美分为单位(或更一般地,以您使用的货币的最小单位),因此price 应该是int

    • userIdorderIdcreating a charge 时不是有效参数。您可能希望将这些变量作为metadata values 传递。

    为了帮助您进一步调试,您还应该在您的 Stripe 帐户仪表板https://dashboard.stripe.com/test/logs?method=not_get 中查看您的日志。您应该会看到对POST /v1/tokens 的请求(由您的Android 应用发送)和对POST /v1/charges 的请求(由Backendless 发送)。

    【讨论】:

    • 嗨@Ywain,谢谢你的回复。我意识到问题出在检查日志后添加的其他参数上。第一次实现条带,不知道我也可以从仪表板看到我的日志。这帮助很大
    • @GadoseyP。很高兴我能帮上忙! :)
    猜你喜欢
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多