是否有交易搜索的分页



我正在尝试使用PayPal SOAP API执行TransactionsearchReq方法,我会收到以下警告:

短message:搜索警告

longmessage:截断结果的数量。如果您想查看所有结果,请更改搜索参数。

错误代码:11002

严重码:警告

它还在文档中说:"可以从Transactionsearch API调用中返回的最大交易数为100。"(https://developer.paypal.com/docs/classic/api/merchant/merchant/transactionsearch_api_operation_soap/)

是否有某种方法可以分页结果,以便我可以从多个查询中获得100多个结果?

这是您可以在铁轨中进行的一种方法。假设您想从特定的时间点搜索到现在,但是您可以更改end_date以指定结束日期。请注意,我已经在我的gemfile中添加了 'paypal-sdk-merchant' gem(请参阅https://github.com/paypal/merchant-sdk-ruby),并按照说明设置了我的身份验证。

您要在下面要编辑的两件事是start_date方法(设置您自己的开始日期)和do_something(x)方法,这将是您要在日期范围内对每个单个订单的方法。

module PaypalTxnSearch
  def check_for_updated_orders
    begin
      @paypal_order_list = get_paypal_orders_in_range(start_date, end_date)
      @paypal_order_list.PaymentTransactions.each do |x|
        # This is where you can call a method to process each transaction
        do_something(x)
      end
      # TransactionSearch returns up to 100 of the most recent items.
    end while txn_search_result_needs_pagination?
  end
  def get_paypal_orders_in_range(start_date, end_date)
    @api = PayPal::SDK::Merchant::API.new
    # Build Transaction Search request object
    # https://developer.paypal.com/webapps/developer/docs/classic/api/merchant/TransactionSearch_API_Operation_NVP/
    @transaction_search = @api.build_transaction_search(
      StartDate: start_date,
      EndDate: end_date
    )
    # Make API call & get response
    @response = @api.transaction_search(@transaction_search)
    # Access Response
    return_response_or_errors(@response)
  end
  def start_date
    # In this example we look back 6 months, but you can change it 
    Date.today.advance(months: -6)
  end
  def end_date
    if defined?(@paypal_order_list)
      @paypal_order_list.PaymentTransactions.last.Timestamp
    else
      DateTime.now
    end
  end
  def txn_search_result_needs_pagination?
    @@paypal_order_list.Ack == 'SuccessWithWarning' &&
      @@paypal_order_list.Errors.count == 1 &&
      @@paypal_order_list.Errors[0].ErrorCode == '11002'
  end
  def return_response_or_errors(response)
    if response.success?
      response
    else
      response.Errors
    end
  end
end

相关内容

  • 没有找到相关文章

最新更新