2015-01-09 2 views
1

인보이스의 경우 invoice.created 이벤트가 발생했을 때 정확한 날짜와 시간을 결정할 방법이 있습니까? 예를 들어인보이스의 날짜 - 시간은 스트라이프에도 적용됩니다

:

inv = Stripe::Invoice.retrieve(....) 
# when did `invoice.created ` occurred for "inv"? 

지금까지 내가 아는 한, period_endinvoice.payment_succeeded의 날짜 - 시간을 반영합니다. 나는 period_end을 가지고 1 시간을 뺀다. (문서가 말한대로), 1 시간은 정확한 시간이 아니다. 어딘가에 몇 시간 만 읽었다. 더 많은 것은 실패한 시도가 사용자에게 부과 될 수 있다는 것이다. 따라서 (여기에서 가장 쉬운 해결책은은 webhook와 invoice.created 이벤트를 수신하고 created 값을 저장하는 것, 그래서 그냥 1 시간 빼서 그들 사이에 추가 지연 나에게 invoice.created

답변

1

의 정확한 시간을 제공하지 않습니다 수있다 또는 최소한 이벤트 ID)를 데이터베이스에 저장하십시오.

한 시간 후에 인보이스가 닫히지 만 모든 webhook이 요청에 대한 응답 코드 200을 성공적으로 반환 한 경우에만 올바른 것입니다. 그렇지 않으면 송장을 폐쇄하기 전에 성공할 때까지 최대 3 일마다 웹 후크가 재전송됩니다 [1]. 당신이 invoice.created을 둘 것입니다 및 사후 이벤트를 찾아 created 값을 검색 할 수 있도록 할 곳

당신은 그렇지 않으면 created 매개 변수와 type와 날짜까지 List Events API 및 필터 이벤트를 사용할 수 있습니다.

Invoice 개체의 webhooks_delivered_at 필드를 조사 할 수도 있지만 첫 번째 배달시 webhooks가 실패한 경우 작동하지 않습니다.

+0

'Stripe :: Event.all'은 30 일간의 목록이기 때문에 신뢰할 수 없습니다. 그렇습니까? 가장 좋은 해결책은 내 데이터베이스로 보낸 모든 이벤트를 저장하는 것입니다. –

+0

나는 당신이 30 일 전에 일어날'invoice.payment_succeeded '를받을 때 데이트를 받고 싶다고 생각했다. 당신이 창조 날짜의 정확한 정보를 표시하고 싶다면 나는 더 좋은 방법이 있다고 생각하지 않는다. 그렇지 않으면 인보이스에 대한 날짜를 표시하려는 경우'date' 필드를 사용하십시오. – koopajah

+0

"invoice.created"날짜를 저장 한 후 검색해야하는 이유는 http://stackoverflow.com/questions/27836824입니다./what-should-i-use-as-a-starting-point-each-month-for-counting-how-much-of-my-res –

관련 문제