API-запросы BraintreePayments для транзакций на указанную дату - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь запросить транзакции в Braintree Gateway с помощью BraintreePayments API .NET SDK.

В документации есть примечание:

https://developers.braintreepayments.com/reference/request/transaction/search/dotnet

«Часовые пояса, указанные в значении времени, будут учитываться при поиске. Если вы не укажете часовой пояс, для поиска по умолчанию будет выбран часовой пояс, связанный с вашей учетной записью шлюза. Результаты всегда будут возвращаться со значениями времени в UTC»

Как это можно указать в вызове API поискового запроса?

var searchRequest = new TransactionSearchRequest().
    CreatedAt.GreaterThanOrEqualTo(DateTime.Now.AddDays(-1));

ResourceCollection<Transaction> results = gateway.Transaction.Search(searchRequest);

1 Ответ

5 голосов
/ 12 марта 2019

Полное раскрытие: я работаю в Braintree. Если у вас есть какие-либо дополнительные вопросы, не стесняйтесь обращаться поддержка .

Согласно документам Microsoft .NET , вы можете использовать метод ConvertTime(DateTime, TimeZoneInfo) для преобразования вашего объекта DateTime из вашего часового пояса в другой часовой пояс.

Вы можете действовать следующим образом:

// Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
   TimeZoneInfo est; 
     try {
        est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
     }
     catch (TimeZoneNotFoundException) {
     Console.WriteLine("Unable to retrieve the Eastern Standard time zone.");
        return;
     }
     catch (InvalidTimeZoneException) {
        Console.WriteLine("Unable to retrieve the Eastern Standard time zone.");
        return;
     }

//Create a converted time zone DateTime object
DateTime targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est);

//Run search request
var searchRequest = new TransactionSearchRequest().
    CreatedAt.GreaterThanOrEqualTo(targetTime.AddDays(-1));  
...