我正在开设一个结算历史记录页面,根据braintree订阅向客户展示。虽然braintree api通常包含我需要的所有信息,但我在折扣时遇到了问题。
在braintree控制面板中,订阅会显示历史记录'交易部分下方的部分,跟踪订阅价格/余额的变化。可以在status_history
下的status_history
下找到此部分中的数据(供参考,我使用python api)。
我似乎无法找到的一条数据是折扣历史记录。在历史记录部分,附加组件/折扣列将显示特定历史事件的折扣数量和总折扣金额。
在订阅结果对象中,discounts
列表没有折扣信息,discounts
列表似乎只包含尚未应用的折扣(使其无法用于历史目的)。
所以,我想我的问题是:有没有办法通过braintree python api检索折扣列表,包含创建/应用日期和折扣金额等历史信息?
编辑:我也检查了braintree节点库。我抓住了与python库使用的相同订阅。当没有最近的折扣时,订阅结果对象也有一个空的In [1]: import braintree
In [2]: sub = braintree.Subscription.find('fkr6sr')
In [3]: sub.id
Out[3]: u'fkr6sr'
In [4]: sub.discounts
Out[4]: []
列表。
编辑2: 这是我访问订阅的方法:
在braintree控制面板中,在特定订阅的页面上,有一个订阅ID条目:
在同一页上,位于"历史"的底部。部分,我可以看到,在某些时候,订阅有折扣:
所以我在python中获取订阅:
sub.discounts
我希望sub.discounts
只有一个条目。
最终编辑:为了将来参考,空public static NodeList getNodesWithXPath(Node aNode, String aXPath) {
try {
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression xPathExpression = xpath.compile(aXPath);
return (NodeList) xPathExpression.evaluate(aNode, XPathConstants.NODESET);
} catch (XPathExpressionException e) {
// ignore
} catch (NullPointerException e) {
// ignore
}
return null;
}
是预期的行为。见。我已将父帖作为答案标记。
答案 0 :(得分:1)
完全披露:我在Braintree工作。如果您有任何其他问题,请随时联系support。
订阅结果对象具有属性add_ons和discounts,它们是这些对象的数组。您可以根据Discount.current_billing_cycle
属性结合Subscription.next_billing_date
属性推断应用修改的日期,以及从Discount.amount
和Discount.quantity
中提取的总修改数量
示例实现可能如下所示:
subscription_result_object = (Subscription.search(...)).first
discount = subscription_result_object.discounts[0]
billing_period = subscription_result_object.billing_period_end_date - subscription_result_object.billing_period_start_date
discount_start_date = subscription_result_object.next_billing_date - (discount.current_billing_cycle * billing_period)
total_discount = discount.amount * discount.quantity