常見問題
有沒有接入範例 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.")
// 可選擇在超時情況下進行相應處理
}