Skip to content

常見問題 ​

有沒有接入範例 Demo? ​

每個 API 文件下都有相應的程式碼範例,如果沒有請聯絡我們更新。

技術對接時遇到問題怎麼辦? ​

請先閱讀接入文檔。如仍未能解決問題,可透過客服渠道聯絡我們。

下單後如何判斷能量是否發送 ​

能量充足時,下單後約 1 至 3 秒便會委託至接收地址。status 為 4 表示下單成功,6 表示能量已發送,14 表示因能量不足而退款。其他狀態可輪詢 查詢訂單詳情 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.")
  // 可選擇在超時情況下進行相應處理
}