A0018、A0001、C0005 です。これらは見た目が似ています —
コード、短いメッセージ、詳細なし — が、必要な対応はまったく異なります。このページはその判断ツリーです。コードごとのリファレンスは
公開済みの エラーコード一覧 に、
各コードの仕組みは
よくあるエラーのトラブルシューティング と
上限・通貨・設定エラー にあります。
私が見ているのはこのうちどれですか?
先頭の文字が最速のトリアージです。
A はお客様側で修正するもの、C は Waffo または決済手段側、
E は未確定を意味します。E を失敗として扱わないでください。ルールと再試行パターンは公開済みの
エラーハンドリング にあります。
A0018 は「まだ有効化されていない」なのか、それとも私が何か間違って送ったのですか?
どちらもありえます。これがこの質問の核心です。A0018 は「指定した決済手段が契約されていない」という意味ではありません。
お客様が契約しているもののうち、リクエスト全体を通過したものが何もなかったという意味であり、リクエストは
多くの次元で同時に候補を絞り込みます。そのどれか 1 つでも集合を空にしうるうえ、すべて同じコード・同じメッセージで返されます。
次の順序で確認してください — 最初に見つかった不一致が答えです。
つまり、「未有効化」と「送信ミス」はコードではなく、消去法で区別します。 最速の切り分け方法:
/api/v1/paymethodconfig/inquiryを呼び出します。決済手段、国、通貨の組み合わせがレスポンスにない場合、 それは設定の問題です。ペイロードを何を変えても解決しません。- レスポンスにあり、利用可否が「available」であれば、その組み合わせは契約済みであり、拒否はリクエスト自体が追加した 何か — 上記の 1、6、7、8、9 のいずれか — に起因します。任意の絞り込みパラメーターを 1 つずつ外して再試行してください。
A0018 の隣にある 2 つのコードは、契約の欠如とは反対の意味を持ちます。複数の一致があるため、より具体的に
指定する必要があるという意味です:A0022(プロダクトを指定する)と A0033(決済手段の国を指定する)。
サポートされていない通貨に、なぜ専用のエラーコードがないのですか?
通貨は上記の次元のひとつであり、独立した検証ではないためです。契約していない注文通貨や通貨ペアは、決済手段の 文言でA0018 として返されます。通貨固有のコードを待たないでください。
通貨は使用前に有効化する必要がありますか? を参照してください。
同じコードがサブスクリプションで表示されました。同じ意味ですか?
コードは共通ですが、読み方が異なります。アクワイアリング側では上記の契約の不一致です。 サブスクリプション側では、その契約者に課金するために使用できる決済手段が残っていないことを意味します — たとえば、保存済みの決済手段が削除された場合です。公開済みのコード一覧は後者の意味で注釈しており、 受信するメッセージテキストは契約の文言です。呼び出した API と合わせて読んでください。 実装上考慮すべき結果がひとつあります。初回期間後の更新において、このコードは再試行不可として扱われます — スケジュールは再試行を続けません。再試行を待つのではなく、決済手段を修正してください。 サブスクリプションの再試行と決済手段 を参照してください。キーをローテーションしたら A0001 が出るようになりました。新しいキーが壊れているのですか?
通常はそうではありません。次の 3 点を順番に除外してください。
この期間の長さ、キー・そのスコープ・署名・IP 許可リストが検証される正確な順序、
A0001 と A0002 およびスコープ拒否との違いは
API 認証情報のスコープと認証エラーのトリアージ にあります。
提出とローテーションの手順、提出が却下された理由の確認場所は
本番 API キーと公開鍵 にあります。
キーは受け付けられたのに呼び出しが拒否される場合、原因は通常そのキーに許可されている操作の範囲です — A0001 ではなく、
別の拒否になります。
C0005 は実際に何を教えてくれるのですか? 理由はどこにありますか?
C0005 — Payment channel rejection — は、決済手段が決済を拒否したことを意味します。これ単体ではほとんど何も
分かりません。さまざまな根本的な拒否がこのコードに対応付けられており、すべてのカード拒否も含まれるからです。
詳細は注文とともに返される失敗理由にあり、これには 2 つの部分があります。
これらは 注文照会 で
orderFailedReason として一緒に返され、Portal では取引レコード上に
同じペアが Order Failure Code と Order Failure Description として表示されます。
取引フィールドリファレンス を参照してください。
したがって手順はこうです。C0005 で分岐せず、その中の失敗コードで分岐してください。 認証ステップを開始できなかった、
発行銀行が不正または法的理由でカードを拒否した、といった説明はまさにこの形で届くもので、それぞれまったく異なる対応が必要です。
C0005 の失敗のうち、再試行する価値があるのはどれですか?
再試行可能かどうかは C0005 ではなく、根本的な理由に属します。分類と各クラスへの対応 — 決して再試行してはいけない拒否、
顧客に認証情報を再入力してもらう必要があるものを含む — は
カードが拒否されました。再試行すべきですか? にあります。
それに加えて 2 つのルールがあります。
- 顧客に分かりやすいメッセージを表示し、別の決済手段を提示してください。 Waffo は連携受け入れテストにおいて、 チャネル拒否とシステム利用不可のレスポンスについて、まさにこの振る舞いを確認します。公開済みの 受け入れ基準 を参照してください。
- サンドボックスでは、いくつかの予約済み金額が意図的に
C0005を返すため、この経路を構築できます。特別だと想定していない 金額でC0005が返された場合は、結論を出す前に予約済み一覧を確認してください。 サンドボックスシミュレーター を参照してください。
返金が A0017 で返されました。この注文は API で返金できるようになりますか?
A0017 — 決済チャネルがサポートしていないため、注文を返金できない — は決済手段自体に由来し、再試行不可です。
変更せずに再送信しても同じ結果になります。
これを最終的なものとして扱う前に、他の返金拒否と区別してください。
この 4 つと、それぞれの場合の対応は
決済手段の返金と上限 と
返金 FAQ にあります。