送るリクエスト
先に実物を出します。紹介経由の注文が確定したら、自社のサーバーからこれを 1 回呼びます。
POST /api/<merchantSlug>/track/conversion
Content-Type: application/json
{
"orderId": "ORD-12345",
"amount": 99.00,
"currency": "USD",
"affiliateCode": "ABC123"
}
必須はこれだけです。URL の merchantSlug が識別子なので、管理すべき API Key はありません。管理画面で Webhook シークレットを設定した場合のみ、リクエストの生ボディに対する HMAC-SHA256 署名が追加で検証されます。クリック通知は任意で、送らなくても失うのはクリック統計だけです。
壊れる 1 か所目:重複計上
決済の Webhook は再送されます。決済代行のタイムアウトでも再送されます。自社のリトライでも再送されます。再送のたびに新しい成果が作られると、1 件の注文に対して報酬を二重に払うことになり、気づくのはたいてい月末の突合のときです。
Afflixo は自社プログラムの範囲内で orderId による重複排除を行います。同じ orderId をもう一度送っても、新しい成果ではなく既存の成果と報酬がそのまま返ります。したがって再送は安全で、追加のヘッダーも不要です。
条件は 1 つ、orderId が自社システム内で一意であることです。通常は注文番号がそのまま使えます。キャンセルや再作成で番号を再利用する運用になっている場合は、先にそちらを整理してください。そうしないと、別の注文が同じ注文として扱われます。
壊れる 2 か所目:紐付けが切れる
どのパートナーの成果かは、次の順に探されます。
- ボディの
affiliateCode x-affiliate-codeヘッダー- 紹介リンクが設定した
affiliate_refCookie
3 つとも見つからない場合、リクエストは 400 で拒否されます。誰に付ければよいか判断できないからです。これは意図した挙動で、黙って誤った相手に付けるより、その場で失敗させる方を選んでいます。
実務で最も切れやすいのが 3 番目です。紹介リンクをスマートフォンで開き、後から PC で購入すれば、Cookie は別の端末にあります。決済ページが別ドメインにあり、戻ってきたときに Cookie が付いてこない構成でも同じことが起きます。
確実にするには、Cookie に頼らないことです。訪問者が着地した時点で URL パラメータからコードを読み、自社のセッションか注文レコードに保存し、確定時にボディの affiliateCode として明示的に送ります。
通貨の扱い
currency は保存されますが、換算は行われません。報酬は amount に入れた数値からそのまま計算されます。Afflixo は米ドルで精算するため、円建てで請求している場合は送信前に換算してください。そうしないと、円の金額がドルとして記録されます。
報酬ルールと支払い
報酬は料率か定額で、プログラム全体の既定値を置き、必要な相手だけ個別に上書きします。両方ある場合はパートナー側が優先されます。適用範囲は料率とは別で、初回注文のみ、最初の N 件、期間指定から選べます。
支払いはパートナーが申請し、あなたが承認し、普段の方法で支払います。Afflixo は状態を記録して二重承認を防ぐだけで、資金は動かしません。これは意図した線引きです。
多階層の報酬、広告主ごとの独自ドメイン、PayPal や Stripe による自動支払い、米ドル以外での精算は現時点でありません。仕様の詳細は開発ドキュメントにあります。
