如何使用Authorize.net PHP SDK设置和使用includeTransactions?

时间:2018-01-23 21:45:27

标签: php authorize.net

我和其他人一直在使用API​​的Authorize.net自动定期结算(ARB)部分,尝试检索与订阅相关的最近交易。

ARBGetSubscriptionRequest的文档(https://developer.authorize.net/api/reference/#recurring-billing-get-subscription-status)声明有一个可选参数includeTransactions将返回与订阅相关的最近交易。

PHP SDK似乎缺少参数includeTransactions。

在我对Authorize.net的调用中,以下结果导致错误:

$subscription->setIncludeTransactions(true);

有没有人设法让它运作?

相关的github问题:#120#280

1 个答案:

答案 0 :(得分:0)

我怀疑includeTransactions支持已经在底层的Authorize.net API中实现;但是,PHP SDK已经过时了。并且没有来自Authorize.net的示例代码(最早的请求是从2016年6月开始)

所以,为了我的目的,我分叉了PHP SDK: https://github.com/sjordan1975/sdk-php

我实施了来自Get Subscription的获取ARB交易,足以满足我的需求。

具体来说,我修改了以下4个文件:

lib/net/authorize/api/contract/v1/ARBGetSubscriptionRequest.php
lib/net/authorize/api/contract/v1/ARBSubscriptionMaskedType.php
lib/net/authorize/api/yml/v1/ARBGetSubscriptionRequest.yml
lib/net/authorize/api/yml/v1/ARBSubscriptionMaskedType.yml

在示例代码(https://github.com/AuthorizeNet/sample-code-php/blob/master/RecurringBilling/get-subscription-status.php)中设置setSubscriptionID之后,立即添加以下内容:

$request->setIncludeTransactions(true);

注意:我使用了TransactionDetailsType,但我怀疑实际类型应该类似于ARBTransactionType,但是yaml定义缺失了,我还没有定义它

结果是现在并未填充所有交易数据;但是,transId已填充,这足以进行额外的API调用以获取交易详情。

随意拥有它。代码按原样提供给社区。 YMMV