よくある質問
実装例はありますか?
各 API のページにコード例を掲載しています。掲載されていない場合は、お問い合わせください。
API 連携で問題が発生した場合は?
まず API 連携ドキュメントをご確認ください。解決しない場合は、サポート窓口までお問い合わせください。
注文後にエネルギーの委任を確認するには?
エネルギーが十分にある場合、注文後およそ 1~3 秒で受取アドレスに委任されます。status が 4 なら注文成功、6 なら委任完了、14 ならエネルギー不足による返金を示します。 その他の状態については、注文詳細の取得 API を定期的に呼び出して確認してください。 Go での処理例を提供してくださった @miya0v0 さんに感謝します。
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.")
// 必要に応じてタイムアウト時の処理を行う
}