Quickbooks API - 如何使用存储的信用卡创建费用

时间:2017-12-26 13:28:17

标签: java quickbooks-online intuit

我想知道如何使用存储的信用卡创建费用。
使用/ card api我已成功将卡存储在QuickBooks Online中并收到卡ID作为回报。 现在我想针对存储的卡创建一个电荷。为了创建费用,我看到有两种方法可以提供卡片详细信息。

  1. 提供明确的卡片详细信息,如卡号,有效期等。
  2. 使用卡片令牌。但即使是检索卡片令牌,我们也需要向/令牌api电话提供明确的卡片详细信息。
  3. 我尝试使用它的ID检索存储的卡,然后使用收费中返回的卡详细信息,但它没有工作。
    所以我想知道如何使用存储的信用卡创建费用,而不是每次都要求提供明确的卡片详细信息。

      

    更新

    我试过按照测试代码,但它给了我&card;数字无效'错误。

    public Charge createCharge(Context context, String requestId) {
            String uri = "https://sandbox.api.intuit.com/quickbooks/v4/payments/charges";
            PaymentService paymentService = new PaymentService();
            Charge charge = new Charge();
            CreditCard card = null;
            try {
                card = paymentService.getCreditCard(context, getRequestId(), "https://sandbox.api.intuit.com/quickbooks/v4/customers/{customer_id}/cards/{card_id}");
            } catch (Exception e) {
                e.printStackTrace();
            }
            charge.setCard(card);
            charge.setAmount(new BigDecimal(10.55));
            charge.setCurrency("USD");
    
            try {
                charge = paymentService.createCharge(context, getRequestId(), charge, uri);
                return charge;
            } catch (Exception e) {
            }
    }
    
    Error com.intuit.ipp.exception.BadRequestException: ERROR CODE:PMT-4000, ERROR MESSAGE:card.number is invalid., ERROR DETAIL:card.number, MORE ERROR DETAIL:HttpStatusCode=400; Type=invalid_request; MoreInfo=Credit/Debit card number format, InfoLink=https://developer.intuit.com/v2/docs?redirectID=PayErrors
    

    我使用卡ID检索的卡中的卡号(显然)被混淆,格式为" xxxxxxxxxxxx1111"因此/费用api抱怨它无效。

1 个答案:

答案 0 :(得分:1)

使用此API端点存储卡详细信息(“创建卡”):

您获得了唯一的 值。

使用此API端点创建费用:

确保id传递了您从第一次API调用中获得的cardOnFile值。

您当前的代码不正确。您应该将id作为参数传递给您,而是通过cardOnFile节点(它需要一个完整的卡号,而不是卡card值)。特别是这一行不正确:

  

charge.setCard(卡);