Часто задаваемые вопросы
Есть ли примеры интеграции?
Для каждого метода API приведены примеры кода. Если пример отсутствует, сообщите нам.
Что делать, если при интеграции возникли проблемы?
Сначала ознакомьтесь с документацией по интеграции. Если вопрос остаётся нерешённым, обратитесь в поддержку.
Как проверить делегирование Energy после создания заказа?
При наличии ресурсов Energy делегируется на адрес получателя примерно через 1–3 секунды после создания заказа. status = 4 означает, что заказ создан, 6 — Energy делегирована, 14 — средства возвращены из-за нехватки Energy. Для остальных состояний периодически вызывайте API Получение сведений о заказе. Благодарим @miya0v0 за пример обработки на Go.
Golang
go
// Создаём буферизированный канал для получения результата
resultCh := make(chan *utils.OrderQueryResponse, 1)
var wg sync.WaitGroup
wg.Add(1)
// Создаём контекст и функцию отмены
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
defer cancel()
// Запускаем горутину
go func() {
defer wg.Done() // Уменьшаем число ожидаемых горутин
for {
select {
case <-ctx.Done():
// При тайм-ауте выходим из цикла
log.Println("Timeout, stopping to fetch order details.")
return
default:
result, err := utils.GetOrderDetail(sendRentEnergy.OrderNo)
if err != nil {
log.Println("Error getting order detail:", err)
return
}
// Если result.FrozenTxID не пуст, отправляем результат в канал и выходим из цикла
if result.Status == 6 && result.FrozenTxID != "" {
resultCh <- result
return
} else {
log.Println(result.Status, result.FrozenTxID)
}
time.Sleep(1 * time.Second)
}
}
}()
// Ожидаем завершения всех горутин
wg.Wait()
// Получаем результат горутины
select {
case result := <-resultCh:
cancel() // Отменяем тайм-аут основной горутины
case <-ctx.Done():
log.Println("Timeout: Failed to receive result from the goroutine.")
// При необходимости обрабатываем тайм-аут
}