Skip to content

자주 묻는 질문 ​

연동 예제가 있나요? ​

각 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.")
  // 필요하면 시간 초과를 처리
}