2016-12-20 1 views
0

Я пытаюсь выполнить метод TransactionSearchReq с помощью SOAP API PayPal и я получаю следующее предупреждение:Есть ли разбиение на страницы для поиска транзакций?

ShortMessage: Поиск предупреждение

LongMessage: Количество результатов были усечены. Если вы хотите увидеть все свои результаты, измените параметры поиска.

ErrorCode: 11002

SeverityCode: Предупреждение

Он также говорит, что в документации, что «Максимальное количество сделок, которые могут быть возвращены из вызова TransactionSearch API 100.» (https://developer.paypal.com/docs/classic/api/merchant/TransactionSearch_API_Operation_SOAP/)

Есть ли какой-нибудь способ для разбивки на страницы, чтобы я мог получить более 100 результатов из нескольких запросов?

ответ

0

Вот один из способов сделать это в Rails. Предполагается, что вы хотите выполнить поиск с определенного момента времени до сих пор, но вы можете изменить end_date, чтобы указать дату окончания. Обратите внимание, что я добавил жемчужину 'paypal-sdk-merchant' в свой gemfile (см. 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 
Смежные вопросы