Skip to content

よくある質問 ​

実装例はありますか? ​

各 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.")
  // 必要に応じてタイムアウト時の処理を行う
}