从 Braintree 获取费用金额 Transaction.search()

Get fee amount from Braintree Transaction.search()

是否可以在使用Transaction.search()方法搜索交易时获取Braintree费用金额?我专门用 Braintree Node.js SDK API,所以当我调用方法时:

const gateway = braintree.connect({
    environment: braintree.Environment.Production,
    merchantId : process.env.BRAINTREE_merchantId,
    publicKey  : process.env.BRAINTREE_publicKey,
    privateKey : process.env.BRAINTREE_privateKey,
});

// start and end are well formatted dates, irrelevant here
const stream = gateway.transaction.search((search) => {
    search.createdAt().between(start, end)
});

let result = [];

stream.on("data", (transaction) => {
    result.push(transaction);
});
stream.on("end", () => {

    console.log(result[0]);

});
stream.on("error", reject);
stream.resume();

我的 console.log(result[0]) 显示了相当大的(160 行代码)单个 transaction 对象,其中 transaction.serviceFeeAmount: null

console.log({
  "id": "1egncjr5",
  "status": "settled",
  "type": "sale",
  "currencyIsoCode": "EUR",
  "amount": "799.00",
  "merchantAccountId": "mycompanyEUR",
  "subMerchantAccountId": null,
  "masterMerchantAccountId": null,
  "orderId": "54144",
  "createdAt": "2018-03-07T08:55:09Z",
  "updatedAt": "2018-03-07T19:41:10Z",
  "customer": {
    "id": null,
    "firstName": null,
    "lastName": null,
    "company": "Kunlabora NV",
    "email": "client@email.com",
    "website": null,
    "phone": null,
    "fax": null
  },
  "billing": {
    "id": null,
    "firstName": null,
    "lastName": null,
    "company": "Kunlabora NV",
    "streetAddress": "Veldkant 33 A",
    "extendedAddress": null,
    "locality": "Kontich",
    "region": null,
    "postalCode": "2550",
    "countryName": "Belgium",
    "countryCodeAlpha2": "BE",
    "countryCodeAlpha3": "BEL",
    "countryCodeNumeric": "056"
  },
  "refundId": null,
  "refundIds": [],
  "refundedTransactionId": null,
  "partialSettlementTransactionIds": [],
  "authorizedTransactionId": null,
  "settlementBatchId": "2018-03-08_mycompanyEUR_ecwhvhcf",
  "shipping": {
    "id": null,
    "firstName": null,
    "lastName": null,
    "company": null,
    "streetAddress": null,
    "extendedAddress": null,
    "locality": null,
    "region": null,
    "postalCode": null,
    "countryName": null,
    "countryCodeAlpha2": null,
    "countryCodeAlpha3": null,
    "countryCodeNumeric": null
  },
  "customFields": "",
  "avsErrorResponseCode": null,
  "avsPostalCodeResponseCode": "U",
  "avsStreetAddressResponseCode": "U",
  "cvvResponseCode": "M",
  "gatewayRejectionReason": null,
  "processorAuthorizationCode": "735709",
  "processorResponseCode": "1000",
  "processorResponseText": "Approved",
  "additionalProcessorResponse": null,
  "voiceReferralNumber": "",
  "purchaseOrderNumber": null,
  "taxAmount": "0.00",
  "taxExempt": false,
  "creditCard": {
    "token": null,
    "bin": "CENSORED",
    "last4": "CENSODER",
    "cardType": "MasterCard",
    "expirationMonth": "CENSORED",
    "expirationYear": "CENSORED",
    "customerLocation": "CENSORED",
    "cardholderName": "",
    "imageUrl": "https://assets.braintreegateway.com/payment_method_logo/mastercard.png?environment=production",
    "prepaid": "No",
    "healthcare": "No",
    "debit": "No",
    "durbinRegulated": "No",
    "commercial": "No",
    "payroll": "No",
    "issuingBank": "BNP PARIBAS FORTIS",
    "countryOfIssuance": "BEL",
    "productId": "MCB",
    "uniqueNumberIdentifier": null,
    "venmoSdk": false,
    "maskedNumber": "CENSORED",
    "expirationDate": "04/2020"
  },
  "statusHistory": [
    {
      "timestamp": "2018-03-07T08:55:10Z",
      "status": "authorized",
      "amount": "799.00",
      "user": "office@mycompany.com",
      "transactionSource": "api"
    },
    {
      "timestamp": "2018-03-07T08:55:10Z",
      "status": "submitted_for_settlement",
      "amount": "799.00",
      "user": "office@mycompany.com",
      "transactionSource": "api"
    },
    {
      "timestamp": "2018-03-07T19:41:10Z",
      "status": "settled",
      "amount": "799.00",
      "user": null,
      "transactionSource": ""
    }
  ],
  "planId": null,
  "subscriptionId": null,
  "subscription": {
    "billingPeriodEndDate": null,
    "billingPeriodStartDate": null
  },
  "addOns": [],
  "discounts": [],
  "descriptor": {
    "name": null,
    "phone": null,
    "url": null
  },
  "recurring": false,
  "channel": "woocommerce_bt",
  "serviceFeeAmount": null,
  "escrowStatus": null,
  "disbursementDetails": {
    "disbursementDate": null,
    "settlementAmount": null,
    "settlementCurrencyIsoCode": null,
    "settlementCurrencyExchangeRate": null,
    "fundsHeld": null,
    "success": null
  },
  "disputes": [],
  "authorizationAdjustments": [],
  "paymentInstrumentType": "credit_card",
  "processorSettlementResponseCode": "",
  "processorSettlementResponseText": "",
  "threeDSecureInfo": null,
  "shipsFromPostalCode": null,
  "shippingAmount": null,
  "discountAmount": null,
  "paypalAccount": {},
  "coinbaseAccount": {},
  "applePayCard": {},
  "androidPayCard": {},
  "visaCheckoutCard": {},
  "masterpassCard": {}
})

问题:这里的交易费怎么算?

您可能会在 transactionFeeAmount 字段中找到它

这是我从 Braintree 支持团队收到的答复:


不幸的是,目前无法使用 API 搜索 Braintree 费用金额(意味着 14/05/2018 ).

您可以通过执行高级交易搜索来计算单笔交易的费用。

  1. 登录Control Panel
  2. 在“高级搜索”下,单击“交易”
  3. 取消选中“创建日期范围”旁边的复选框
  4. 选中支付日期范围旁边的复选框
  5. 选择您想要的日期范围
  6. 点击搜索
  7. 在结果页面上,单击下载
  8. 在您选择的电子表格程序中打开 CSV 文件

在这里,您可以为您的交易费用创建额外的列。要查找您的具体交易费用,请查看对帐单上的定价表。请务必向下舍入,然后将费用应用于您的个人交易。


看来我要实现一些 PhantomJS 模块来做到这一点。