flowon failureon cancel宿泊 v1examples/hotel/temporal/hotel.ja.flow · dandori doc
宿泊の予約を受けたらカードに与信を取り、チェックアウトの日に売上を確定する。与信の額と、フロントが先に確認するかどうかは規則が決め、決済は Stripe の PaymentIntent で行う。Temporal 向けの版:Stripe の呼び出しは dandori が生成するアクティビティで、秘密鍵は Transport が付ける。お客さまの 3-D セキュアの手続きが済んだことは、Stripe の Webhook が予約の ID を宛先にして知らせる(event)。お客さまが予約を取り消すと、与信も取り消す(on cancel)
flowon failureon cancel| 行 | 呼び出し | 呼ぶもの | リトライ | タイムアウト | 失敗したとき | 呼び出しのあとの案件 |
|---|---|---|---|---|---|---|
| 75 | 見積 = 与信(…) | 規則 宿泊の与信額.rule | 1 秒後と 2 秒後の 2 回(failure) | — | timeout・failure → on failure | — |
| 78 | 決済 ← 決済を作る(…) | POST stripe /v1/payment_intents・starts payment_intent.payment then attach・key | 2 秒おきに 2 回(failure・timeout) | — | timeout・failure → on failure | 決済: requires_confirmation |
| 79 | 決済 ← 与信を取る(…) | POST stripe /v1/payment_intents/{intent}/confirm・sends confirm・key | — | — | カード拒否 → 80 行目状態の不一致・timeout・failure → on failure | 決済: requires_payment_method・requires_action・requires_capture・canceled |
| 80 | 決済 ← 決済を見る(…) | GET stripe /v1/payment_intents/{intent}・observes・idempotent | 2 秒おきに 3 回(failure・timeout) | — | timeout・failure → on failure | 決済: requires_payment_method・requires_confirmation・requires_action・requires_capture・canceled |
| 83 | 決済 ← 本人認証の知らせ() | event・observes | — | 1 時間 | timeout → 84 行目failure → on failure | 決済: requires_payment_method・requires_action・requires_capture・canceled |
| 84 | 決済 ← 決済を見る(…) | GET stripe /v1/payment_intents/{intent}・observes・idempotent | 2 秒おきに 3 回(failure・timeout) | — | timeout・failure → on failure | 決済: requires_payment_method・requires_action・requires_capture・canceled |
| 89 | 決済 ← 与信を取り消す(…) | POST stripe /v1/payment_intents/{intent}/cancel・sends cancel・key | — | — | 状態の不一致 → 90 行目timeout・failure → on failure | 決済: canceled |
| 93 | 決済 ← 売上を確定する(…) | POST stripe /v1/payment_intents/{intent}/capture・sends capture・key | 5 秒おきに 2 回(failure・timeout) | — | 状態の不一致 → 94 行目timeout・failure → on failure | 決済: processing・succeeded |
| 100 | 決済 ← 決済を見る(…) | GET stripe /v1/payment_intents/{intent}・observes・idempotent | 2 秒おきに 3 回(failure・timeout) | — | timeout・failure → on failure | 決済: requires_payment_method・processing・succeeded |
| 112 | 決済 ← 与信を取り消す(…) | POST stripe /v1/payment_intents/{intent}/cancel・sends cancel・key | — | — | 状態の不一致 → 113 行目timeout・failure → 114 行目 | 決済: canceled |
| 122 | 決済 ← 与信を取り消す(…) | POST stripe /v1/payment_intents/{intent}/cancel・sends cancel・key | — | — | 状態の不一致 → 123 行目timeout・failure → 124 行目 | 決済: canceled |
| 行 | 終わり方 | 決済 |
|---|---|---|
| 77 | succeed 結果 = 確認待ち | 始まっていない |
| 91 | fail 与信不可 "カードの与信が取れませんでした" | canceled |
| 92 | fail 決済の取消 "PaymentIntent が取り消されていました" | canceled |
| 94 | fail 与信の有効期限切れ "チェックアウトまでに与信の有効期限が切れていました" | canceled |
| 96 | succeed 結果 = 宿泊済 | succeeded |
| 105 | succeed 結果 = 宿泊済 | succeeded |
| 106 | fail 確定の結果不明 "売上の確定の結果が分かりません。担当者に引き渡します" leaving 決済 | そのまま引き渡す: requires_payment_method・processing・succeeded |
| 113 | fail 取消の失敗 "Stripe が与信の取消を拒否しました。売上が確定しているかもしれません。担当者に引き渡します" leaving 決済 | そのまま引き渡す: requires_payment_method・processing・succeeded・canceled |
| 114 | fail 取消の失敗 "与信を取り消せませんでした。担当者に引き渡します" leaving 決済 | そのまま引き渡す: requires_payment_method・requires_confirmation・requires_action・processing・requires_capture・succeeded・canceled |
| 115 | fail 確定の結果不明 "売上の確定の途中で失敗しました。担当者に引き渡します" leaving 決済 | そのまま引き渡す: requires_payment_method・processing・succeeded |
| 115 | on failure が最後まで走り、ワークフローは元のエラーで失敗する | 始まっていないか、canceled |
| 123 | fail 取消の失敗 "Stripe が与信の取消を拒否しました。売上が確定しているかもしれません。担当者に引き渡します" leaving 決済 | そのまま引き渡す: requires_payment_method・processing・succeeded・canceled |
| 124 | fail 取消の失敗 "与信を取り消せませんでした。担当者に引き渡します" leaving 決済 | そのまま引き渡す: requires_payment_method・requires_confirmation・requires_action・processing・requires_capture・succeeded・canceled |
| 125 | fail 確定の結果不明 "売上の確定の途中でキャンセルされました。担当者に引き渡します" leaving 決済 | そのまま引き渡す: requires_payment_method・processing・succeeded |
| 125 | on cancel が最後まで走り、ワークフローはキャンセルで終わる | 始まっていないか、canceled |
ステップを選ぶと、そこについて検査で分かったことが出ます。左のシナリオを選ぶと、その実行が通るところが光ります。ステップの横の数は、その実行が通った回数です。
宿泊 v1宿泊の予約を受けたらカードに与信を取り、チェックアウトの日に売上を確定する。与信の額と、フロントが先に確認するかどうかは規則が決め、決済は Stripe の PaymentIntent で行う。Temporal 向けの版:Stripe の呼び出しは dandori が生成するアクティビティで、秘密鍵は Transport が付ける。お客さまの 3-D セキュアの手続きが済んだことは、Stripe の Webhook が予約の ID を宛先にして知らせる(event)。お客さまが予約を取り消すと、与信も取り消す(on cancel)
予約: 予約結果: 結果examples/hotel/temporal/hotel.ja.flow見積 = 与信(…) 75 行目 75 let 見積 = 与信(客室: 予約.客室, 泊数: 予約.泊数)
決済: 始まっていない宿泊の与信額.ruletimeout・failure → on failure 4 use rule 与信 from "../rules/宿泊の与信額.rule"
match 見積.扱い 76 行目76 match 見積.扱い 77 確認 => succeed 結果 = 確認待ち 78 自動 => 決済 <- 決済を作る(amount: 見積.与信額, currency: "jpy", payment_method: 予約.カード, capture_method: manual)
決済: 始まっていないsucceed 結果 = 確認待ち 77 行目 77 確認 => succeed 結果 = 確認待ち
決済: 始まっていない決済: 始まっていない決済 ← 決済を作る(…) 78 行目 78 自動 => 決済 <- 決済を作る(amount: 見積.与信額, currency: "jpy", payment_method: 予約.カード, capture_method: manual)
決済: 始まっていないPOST stripe /v1/payment_intents・starts payment_intent.payment then attach・keytimeout・failure → on failure決済: requires_confirmation27 task 決済を作る(amount: money[円, incl_tax] range >=50 <=99999999, currency: string, payment_method: string, capture_method: payment_intent.capture_method) -> PaymentIntent 28 http POST stripe "/v1/payment_intents" 29 starts payment_intent.payment then attach 30 key 31 retry 2 times every 2 seconds
決済 ← 与信を取る(…) 79 行目79 決済 <- 与信を取る(intent: 決済.id) 80 on カード拒否 => 決済 <- 決済を見る(intent: 決済.id)
決済: requires_confirmationPOST stripe /v1/payment_intents/{intent}/confirm・sends confirm・keyカード拒否 → 80 行目状態の不一致・timeout・failure → on failure決済: requires_payment_method・requires_action・requires_capture・canceled33 task 与信を取る(intent: string) -> PaymentIntent 34 http POST stripe "/v1/payment_intents/{intent}/confirm" 35 sends confirm 36 errors カード拒否 = 402, 状態の不一致 = 400 37 refused as 状態の不一致 38 key
決済 ← 決済を見る(…) 80 行目 80 on カード拒否 => 決済 <- 決済を見る(intent: 決済.id)
決済: requires_payment_method・requires_confirmation・requires_action・requires_capture・canceledGET stripe /v1/payment_intents/{intent}・observes・idempotenttimeout・failure → on failure決済: requires_payment_method・requires_confirmation・requires_action・requires_capture・canceled55 task 決済を見る(intent: string) -> PaymentIntent 56 http GET stripe "/v1/payment_intents/{intent}" 57 observes 58 idempotent 59 retry 3 times every 2 seconds
match 決済.status 81 行目81 match 決済.status 82 requires_action => 85 requires_capture, requires_payment_method, requires_confirmation, canceled => pass
決済: requires_payment_method・requires_confirmation・requires_action・requires_capture・canceled決済 ← 本人認証の知らせ() 83 行目83 決済 <- 本人認証の知らせ() 84 on timeout => 決済 <- 決済を見る(intent: 決済.id)
決済: requires_actionevent・observestimeout → 84 行目failure → on failure決済: requires_payment_method・requires_action・requires_capture・canceled61 # お店が受ける Stripe の Webhook は、お客さまの 3-D セキュアの手続きが済むと、そのときの 62 # PaymentIntent を予約のワークフローに送る。 63 task 本人認証の知らせ() -> PaymentIntent 64 event 65 observes 66 timeout 1 hour
決済 ← 決済を見る(…) 84 行目 84 on timeout => 決済 <- 決済を見る(intent: 決済.id)
決済: requires_actionGET stripe /v1/payment_intents/{intent}・observes・idempotenttimeout・failure → on failure決済: requires_payment_method・requires_action・requires_capture・canceled55 task 決済を見る(intent: string) -> PaymentIntent 56 http GET stripe "/v1/payment_intents/{intent}" 57 observes 58 idempotent 59 retry 3 times every 2 seconds
match 決済.status 86 行目86 match 決済.status 87 requires_capture => wait until 予約.チェックアウト 88 requires_payment_method, requires_confirmation, requires_action => 92 canceled => fail 決済の取消 "PaymentIntent が取り消されていました"
決済: requires_payment_method・requires_confirmation・requires_action・requires_capture・canceledwait until 予約.チェックアウト 87 行目 87 requires_capture => wait until 予約.チェックアウト
決済: requires_capture決済 ← 与信を取り消す(…) 89 行目89 決済 <- 与信を取り消す(intent: 決済.id) 90 on 状態の不一致 => pass
決済: requires_payment_method・requires_confirmation・requires_actionPOST stripe /v1/payment_intents/{intent}/cancel・sends cancel・key状態の不一致 → 90 行目timeout・failure → on failure決済: canceled48 task 与信を取り消す(intent: string) -> PaymentIntent 49 http POST stripe "/v1/payment_intents/{intent}/cancel" 50 sends cancel 51 errors 状態の不一致 = 400 52 refused as 状態の不一致 53 key
fail 与信不可 91 行目 91 fail 与信不可 "カードの与信が取れませんでした"
決済: canceled決済: canceledfail 決済の取消 92 行目 92 canceled => fail 決済の取消 "PaymentIntent が取り消されていました"
決済: canceled決済: canceled決済 ← 売上を確定する(…) 93 行目93 決済 <- 売上を確定する(intent: 決済.id) 94 on 状態の不一致 => fail 与信の有効期限切れ "チェックアウトまでに与信の有効期限が切れていました"
決済: requires_capturePOST stripe /v1/payment_intents/{intent}/capture・sends capture・key状態の不一致 → 94 行目timeout・failure → on failure決済: processing・succeeded40 task 売上を確定する(intent: string) -> PaymentIntent 41 http POST stripe "/v1/payment_intents/{intent}/capture" 42 sends capture 43 errors 状態の不一致 = 400 44 refused as 状態の不一致 45 key 46 retry 2 times every 5 seconds
fail 与信の有効期限切れ 94 行目 94 on 状態の不一致 => fail 与信の有効期限切れ "チェックアウトまでに与信の有効期限が切れていました"
決済: canceled決済: canceledmatch 決済.status 95 行目95 match 決済.status 96 succeeded => succeed 結果 = 宿泊済 97 processing =>
決済: processing・succeededsucceed 結果 = 宿泊済 96 行目 96 succeeded => succeed 結果 = 宿泊済
決済: succeeded決済: succeededwait 1 hour 99 行目 99 wait 1 hour
決済: processing決済 ← 決済を見る(…) 100 行目 100 決済 <- 決済を見る(intent: 決済.id)
決済: processingGET stripe /v1/payment_intents/{intent}・observes・idempotenttimeout・failure → on failure決済: requires_payment_method・processing・succeeded55 task 決済を見る(intent: string) -> PaymentIntent 56 http GET stripe "/v1/payment_intents/{intent}" 57 observes 58 idempotent 59 retry 3 times every 2 seconds
match 決済.status 101 行目101 match 決済.status 102 processing => pass 103 succeeded, requires_payment_method => break
決済: requires_payment_method・processing・succeededbreak 103 行目 103 succeeded, requires_payment_method => break
決済: requires_payment_method・succeededmatch 決済.status 104 行目104 match 決済.status 105 succeeded => succeed 結果 = 宿泊済 106 processing, requires_payment_method => fail 確定の結果不明 "売上の確定の結果が分かりません。担当者に引き渡します" leaving 決済
決済: requires_payment_method・processing・succeededsucceed 結果 = 宿泊済 105 行目 105 succeeded => succeed 結果 = 宿泊済
決済: succeeded決済: succeededfail 確定の結果不明 106 行目 106 processing, requires_payment_method => fail 確定の結果不明 "売上の確定の結果が分かりません。担当者に引き渡します" leaving 決済
決済: requires_payment_method・processing決済: そのまま引き渡す: requires_payment_method・processing・succeeded終わり(成功)flow が最後まで走り、ワークフローは成功します。
on failure 108 行目呼び出しが失敗し、そのエラーをその場で処理しないときに走ります。最後まで走ると、ワークフローはそのエラーで失敗します。75・78・79・80・83・84・89・93・100 行目の呼び出しから、ここに来ます。
match 決済.status 109 行目109 match 決済.status 110 none => pass 111 requires_payment_method, requires_confirmation, requires_action, requires_capture => 115 processing => fail 確定の結果不明 "売上の確定の途中で失敗しました。担当者に引き渡します" leaving 決済
決済: 始まっていないか、requires_payment_method・requires_confirmation・requires_action・processing・requires_capture・succeeded・canceled決済 ← 与信を取り消す(…) 112 行目112 決済 <- 与信を取り消す(intent: 決済.id) 113 on 状態の不一致 => fail 取消の失敗 "Stripe が与信の取消を拒否しました。売上が確定しているかもしれません。担当者に引き渡します" leaving 決済 114 on failure => fail 取消の失敗 "与信を取り消せませんでした。担当者に引き渡します" leaving 決済
決済: requires_payment_method・requires_confirmation・requires_action・processing・requires_capture・succeeded・canceledPOST stripe /v1/payment_intents/{intent}/cancel・sends cancel・key状態の不一致 → 113 行目timeout・failure → 114 行目決済: canceled48 task 与信を取り消す(intent: string) -> PaymentIntent 49 http POST stripe "/v1/payment_intents/{intent}/cancel" 50 sends cancel 51 errors 状態の不一致 = 400 52 refused as 状態の不一致 53 key
fail 取消の失敗 113 行目 113 on 状態の不一致 => fail 取消の失敗 "Stripe が与信の取消を拒否しました。売上が確定しているかもしれません。担当者に引き渡します" leaving 決済
決済: processing・succeeded・canceled決済: そのまま引き渡す: requires_payment_method・processing・succeeded・canceledfail 取消の失敗 114 行目 114 on failure => fail 取消の失敗 "与信を取り消せませんでした。担当者に引き渡します" leaving 決済
決済: requires_payment_method・requires_confirmation・requires_action・processing・requires_capture・succeeded・canceled決済: そのまま引き渡す: requires_payment_method・requires_confirmation・requires_action・processing・requires_capture・succeeded・canceledfail 確定の結果不明 115 行目 115 processing => fail 確定の結果不明 "売上の確定の途中で失敗しました。担当者に引き渡します" leaving 決済
決済: processing決済: そのまま引き渡す: requires_payment_method・processing・succeeded同じエラーで失敗するon failure が最後まで走り、ワークフローは元のエラーで失敗します。
決済: 始まっていないか、canceledon cancel 118 行目ワークフローがキャンセルされると、そのとき待っている呼び出しや wait から、ここに来ます。最後まで走ると、ワークフローはキャンセルで終わります。
match 決済.status 119 行目119 match 決済.status 120 none => pass 121 requires_payment_method, requires_confirmation, requires_action, requires_capture => 125 processing => fail 確定の結果不明 "売上の確定の途中でキャンセルされました。担当者に引き渡します" leaving 決済
決済: 始まっていないか、requires_payment_method・requires_confirmation・requires_action・processing・requires_capture・succeeded・canceled決済 ← 与信を取り消す(…) 122 行目122 決済 <- 与信を取り消す(intent: 決済.id) 123 on 状態の不一致 => fail 取消の失敗 "Stripe が与信の取消を拒否しました。売上が確定しているかもしれません。担当者に引き渡します" leaving 決済 124 on failure => fail 取消の失敗 "与信を取り消せませんでした。担当者に引き渡します" leaving 決済
決済: requires_payment_method・requires_confirmation・requires_action・processing・requires_capture・succeeded・canceledPOST stripe /v1/payment_intents/{intent}/cancel・sends cancel・key状態の不一致 → 123 行目timeout・failure → 124 行目決済: canceled48 task 与信を取り消す(intent: string) -> PaymentIntent 49 http POST stripe "/v1/payment_intents/{intent}/cancel" 50 sends cancel 51 errors 状態の不一致 = 400 52 refused as 状態の不一致 53 key
fail 取消の失敗 123 行目 123 on 状態の不一致 => fail 取消の失敗 "Stripe が与信の取消を拒否しました。売上が確定しているかもしれません。担当者に引き渡します" leaving 決済
決済: processing・succeeded・canceled決済: そのまま引き渡す: requires_payment_method・processing・succeeded・canceledfail 取消の失敗 124 行目 124 on failure => fail 取消の失敗 "与信を取り消せませんでした。担当者に引き渡します" leaving 決済
決済: requires_payment_method・requires_confirmation・requires_action・processing・requires_capture・succeeded・canceled決済: そのまま引き渡す: requires_payment_method・requires_confirmation・requires_action・processing・requires_capture・succeeded・canceledfail 確定の結果不明 125 行目 125 processing => fail 確定の結果不明 "売上の確定の途中でキャンセルされました。担当者に引き渡します" leaving 決済
決済: processing決済: そのまま引き渡す: requires_payment_method・processing・succeededキャンセルで終わるon cancel が最後まで走り、ワークフローはキャンセルで終わります。
決済: 始まっていないか、canceledrepeat at most 12 times 98 行目 98 repeat at most 12 times
決済: processing見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: canceledmatch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → canceledfail 決済の取消見積 = 与信(…) failure failure failure → ここでは処理しないon failurematch 決済.status → none見積 = 与信(…) ok見積 = 与信(…) ok見積 = 与信(…) cancelon cancelmatch 決済.status → none見積 = 与信(…) okmatch 見積.扱い → 確認succeed 結果 = 確認待ち見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure failure failure → ここでは処理しないon failurematch 決済.status → none見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() ok: requires_actionmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) ok: canceledfail 与信不可見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_payment_method見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) cancelon cancelmatch 決済.status → none見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() ok: requires_payment_methodmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) 状態の不一致 → on 状態の不一致fail 与信不可見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_payment_methodmatch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) failure → ここでは処理しないon failurematch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) ok: canceled見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) ok: succeededmatch 決済.status → succeededsucceed 結果 = 宿泊済見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) カード拒否 → on カード拒否決済 ← 決済を見る(…) ok: requires_confirmationmatch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) ok: requires_payment_method見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) failure → ここでは処理しないon failurematch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) 状態の不一致 → on 状態の不一致fail 取消の失敗見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_confirmation見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) cancelon cancelmatch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) ok: canceled見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_payment_methodmatch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) ok見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) ok: processingmatch 決済.status → processingrepeat at most 12 timeswait 1 hour決済 ← 決済を見る(…) ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) ok: processingmatch 決済.status → processingmatch 決済.status → processing, requires_payment_methodfail 確定の結果不明見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) カード拒否 → on カード拒否決済 ← 決済を見る(…) failure failure failure failure → ここでは処理しないon failurematch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) failure → on failurefail 取消の失敗見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) failure → ここでは処理しないon failurematch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) ok: requires_payment_method見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) cancelon cancelmatch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) 状態の不一致 → on 状態の不一致fail 取消の失敗見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() ok: requires_payment_methodmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) cancelon cancelmatch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) failure → on failurefail 取消の失敗見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() ok: requires_capturematch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) 状態の不一致 → on 状態の不一致fail 与信の有効期限切れ見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() ok: canceledmatch 決済.status → canceledfail 決済の取消見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() timeout → on timeout決済 ← 決済を見る(…) ok: requires_actionmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) cancelon cancelmatch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) failure → on failurefail 取消の失敗見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() failure → ここでは処理しないon failurematch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) ok: requires_payment_method見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() ok: requires_confirmation見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() ok見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() cancelon cancelmatch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) ok: requires_payment_method見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() ok: requires_actionmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) 状態の不一致 → on 状態の不一致fail 与信不可見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() ok: requires_actionmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) failure → ここでは処理しないon failurematch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) ok見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() ok: requires_actionmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) cancelon cancelmatch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) ok見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() ok: requires_capturematch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) 状態の不一致 → on 状態の不一致fail 与信の有効期限切れ見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() timeout → on timeout決済 ← 決済を見る(…) ok: requires_payment_methodmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) 状態の不一致 → on 状態の不一致fail 与信不可見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() failure → ここでは処理しないon failurematch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) cancelon cancelmatch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) ok: canceled見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() cancelon cancelmatch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) 状態の不一致 → on 状態の不一致fail 取消の失敗見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) ok: processingmatch 決済.status → processingrepeat at most 12 timeswait 1 hour決済 ← 決済を見る(…) ok: succeededmatch 決済.status → succeeded, requires_payment_methodbreakmatch 決済.status → succeededsucceed 結果 = 宿泊済見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) failure failure failure → ここでは処理しないon failurematch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) 状態の不一致 → on 状態の不一致fail 取消の失敗見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) failure ok: succeededmatch 決済.status → succeededsucceed 結果 = 宿泊済見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) ok: requires_payment_method見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) ok見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) cancelon cancelmatch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) ok見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) カード拒否 → on カード拒否決済 ← 決済を見る(…) failure ok: requires_confirmationmatch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) failure → ここでは処理しないon failurematch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) ok: requires_payment_method見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) カード拒否 → on カード拒否決済 ← 決済を見る(…) ok: processing見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) カード拒否 → on カード拒否決済 ← 決済を見る(…) ok見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) ok: requires_confirmation決済 ← 与信を取る(…) カード拒否 → on カード拒否決済 ← 決済を見る(…) cancelon cancelmatch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) ok: canceled見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) ok: processingmatch 決済.status → processingrepeat at most 12 timeswait 1 hour決済 ← 決済を見る(…) ok: requires_payment_methodmatch 決済.status → succeeded, requires_payment_methodbreakmatch 決済.status → processing, requires_payment_methodfail 確定の結果不明見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) ok: processingmatch 決済.status → processingrepeat at most 12 timeswait 1 hour決済 ← 決済を見る(…) failure failure failure failure → ここでは処理しないon failurematch 決済.status → processingfail 確定の結果不明見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) ok: processingmatch 決済.status → processingrepeat at most 12 timeswait 1 hour決済 ← 決済を見る(…) failure ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) failure ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) failure ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) failure ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) failure ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) failure ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) failure ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) failure ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) failure ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) failure ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) failure ok: processingmatch 決済.status → processingwait 1 hour決済 ← 決済を見る(…) failure ok: processingmatch 決済.status → processingmatch 決済.status → processing, requires_payment_methodfail 確定の結果不明見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) ok: processingmatch 決済.status → processingrepeat at most 12 timeswait 1 hour決済 ← 決済を見る(…) ok: requires_confirmation見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) ok: processingmatch 決済.status → processingrepeat at most 12 timeswait 1 hour決済 ← 決済を見る(…) ok見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_capturematch 決済.status → requires_capture, requires_payment_method, requires_confirmation, canceledmatch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) ok: processingmatch 決済.status → processingrepeat at most 12 timeswait 1 hour決済 ← 決済を見る(…) cancelon cancelmatch 決済.status → processingfail 確定の結果不明見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() timeout → on timeout決済 ← 決済を見る(…) ok: requires_capturematch 決済.status → requires_capturewait until 予約.チェックアウト決済 ← 売上を確定する(…) failure failure failure → ここでは処理しないon failurematch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) 状態の不一致 → on 状態の不一致fail 取消の失敗見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() timeout → on timeout決済 ← 決済を見る(…) ok: canceledmatch 決済.status → canceledfail 決済の取消見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() timeout → on timeout決済 ← 決済を見る(…) failure failure failure failure → ここでは処理しないon failurematch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) failure → on failurefail 取消の失敗見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() timeout → on timeout決済 ← 決済を見る(…) failure ok: requires_actionmatch 決済.status → requires_payment_method, requires_confirmation, requires_action決済 ← 与信を取り消す(…) cancelon cancelmatch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) ok見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() timeout → on timeout決済 ← 決済を見る(…) ok: requires_confirmation見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() timeout → on timeout決済 ← 決済を見る(…) ok見積 = 与信(…) okmatch 見積.扱い → 自動決済 ← 決済を作る(…) failure ok: requires_confirmation決済 ← 与信を取る(…) ok: requires_actionmatch 決済.status → requires_action決済 ← 本人認証の知らせ() timeout → on timeout決済 ← 決済を見る(…) cancelon cancelmatch 決済.status → requires_payment_method, requires_confirmation, requires_action, requires_capture決済 ← 与信を取り消す(…) 状態の不一致 → on 状態の不一致fail 取消の失敗