我和其他人一直在使用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);
有没有人设法让它运作?
答案 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