WebhookãšããŒãªã³ã°ïŒé©åãªçµ±åã¢ãããŒãã®éžã³æ¹
WebhookãšããŒãªã³ã°ïŒé å»¶ãé害ãã¬ãŒãå¶éãã©ã圱é¿ããããããŒã¿æŽåãä¿ã€å詊è¡ãšãªãã¬ã€ã®ãã¿ãŒã³ãåŠã³ãŸãã

ããŒã¿åæã§è§£ãã¹ãåé¡ã¯äœãïŒ
åæãšèšããšãæŽæ°ãéãåæ ãããããã«èãããŸãããæ¬åœã®ä»äºã¯ãã£ãšå³ããïŒã¡ãã»ãŒãžãé ãããéè€ãããæ¬ èœããŠããŠããäºã€ã®ã·ã¹ãã ãäœãæ£ãããåæããããšã§ãã
WebhookãšããŒãªã³ã°ã®éãã¯ã倿Žãã©ãç¥ããã«ãããŸãã
Webhookã¯ããã·ã¥ã§ããã·ã¹ãã Aã§ã€ãã³ããçºçãããïŒäŸïŒãpayment_succeededãããinvoice paidãïŒAãããªãã®ãšã³ããã€ã³ããåŒã³åºããŸããããŒãªã³ã°ã¯ãã«ã§ããããªãã®ã·ã¹ãã ã宿çã«ãåå以éäœãããïŒããšã·ã¹ãã Aã«åãåãããŸãã
ã·ã¹ãã ãåæãããã«ã¯éåžžãã€ãã³ããšç¶æ ã®äž¡æ¹ã远跡ããŸããã€ãã³ãã¯äœãèµ·ããããäŒããç¶æ ã¯çŸåšã®ã¬ã³ãŒãã®å§¿ã瀺ããŸããæç³»åã¯éèŠã§ããçµ±åã¯å®ç§ãªé åºã§åãããšã¯çšã§ã"updated" ã€ãã³ãã "created" ããå ã«å±ãããšããäºéã«å±ãããšãããŸã£ããå±ããªãããšããããŸãã
ç®æšã¯ãæ°ãããã ãã§ãªããæ£ãããã§ããæ£ãããšã¯ã倿ŽãèŠéãããåã倿ŽãäºåºŠé©çšãããããŠã³ã¿ã€ã ããæäœæ¥ãªãã§åŸ©æ§ã§ãããã€äœãåŠçããã蚌æã§ããããšãæå³ããŸãã
å®äŸïŒæ¯æããããã€ãã "payment_succeeded" ã®Webhookãéã£ãŠããªãã®ã¢ããªã泚æãäœæããŠææã«ãããWebhookãšã³ããã€ã³ããçæéããŠã³ããŠãããšããã®ã€ãã³ããèŠéããããããŸããã"æšæ¥ä»¥éã«æŽæ°ãããæ¯æã" ãåãåãããããŒãªã³ã°ãžã§ããããã®ã®ã£ãããåããŠæ³šæç¶æ ãä¿®æ£ã§ããŸãã
å€ãã®å®çšçãªçµ±åã¯äž¡æ¹ã䜿ããŸãïŒé床ã®ããã«Webhookãããã¯ãã£ã«ãæ€èšŒã®ããã«ããŒãªã³ã°ãéèŠãªã®ã¯ã©ã¡ããéžã¶ãã§ã¯ãªããåšå²ã®å®å šçã§ãã
ã¬ã€ãã³ã·ãšé®®åºŠïŒå®éã«æŽæ°ãå±ãéã
WebhookãšããŒãªã³ã°ãæ¯ã¹ããšããå€ãã®äººãæå³ããã®ã¯ãçžæã®å€æŽã«ã©ãã ãæ©ãæ°ã¥ãããã§ãããã®é®®åºŠã¯åãªãèŽ æ²¢ã§ã¯ãªãããµããŒããã±ãããéè€äœæ¥ããŠãŒã¶ã®ä¿¡é Œã«åœ±é¿ããŸãã
ããŒãªã³ã°ã¯ã¹ã±ãžã¥ãŒã«ã«åŸãããé å»¶ãå åšããŸãã5åããšã«ããŒãªã³ã°ãããªããæ°ç§ããæå€§ã»ãŒ5åã®é ãã«å ãAPIå¿çæéãããããŸããããŒãªã³ã°é »åºŠãäžããã°é®®åºŠã¯è¯ããªããŸãããAPIã³ãŒã«ãã³ã¹ããã¬ãŒãå¶éã«åœããå¯èœæ§ãå¢ããŸãã
Webhookã¯ãããã€ããäœãèµ·ãããå³åº§ã«ããã·ã¥ããã®ã§ãªã¢ã«ã¿ã€ã ã«è¿ãæããããŸãããæ±ºããŠç¬æã§ãä¿èšŒãããŠãããŸããããããã€ãã¯ã€ãã³ãããããããããåŸã§ãªãã©ã€ããããé ä¿¡ã忢ããããšããããŸããããªãã®ã·ã¹ãã åŽã§ãïŒãã¥ãŒã®æ»çãããŒã¿ããŒã¹ããã¯ããããã€ïŒé å»¶ãçºçããŸããããçŸå®çãªæåŸ å€ã¯ïŒèª¿åãè¯ããã°éãããããã§ãªããšãã¯æçµçã«æŽåããããšããããšã§ãã
ãã©ãã£ãã¯ã®åœ¢ç¶ãéèŠã§ããããŒãªã³ã°ã¯å®å®ããäºæž¬å¯èœãªè² è·ãäžããŸããWebhookã¯ããŒã¹ãçã§ãïŒç¹å¿æéã«1åã§æ°çŸã®ã€ãã³ããæ¥ãŠããã®åŸãã°ããäœãæ¥ãªãããšããããŸããWebhookãåãå ¥ãããªãã¹ãã€ã¯ãæ³å®ããã€ãã³ãããã¥ãŒã«å ¥ããŠå¶åŸ¡ãããé床ã§åŠçã§ããããã«èšç»ããŠãã ããã
èšèšåã«ç®æšãšãªã鮮床ãŠã£ã³ããŠã決ããŸãããïŒ
- ç§åäœïŒãŠãŒã¶åãéç¥ããã£ãããæ¯æãã¹ããŒã¿ã¹
- ååäœïŒãµããŒãããŒã«ã管çç»é¢ã軜éãªã¬ããŒã
- æéåäœïŒå€éãªã³ã³ã·ãªãšãŒã·ã§ã³ãåªå 床ã®äœãåæ
å¶æ¥ããŒã ã1å以å ã«æ°èŠãªãŒããèŠãããªãWebhookãé©ããŠããŸããæ°æéããšã®âå®å šãªããŒã«âã§èŠéããã€ãã³ãããã£ãããæçµç¶æ ã確èªããã®ãæå¹ã§ãã
æ¬çªã§å®éã«èŠãé害ã¢ãŒã
å€ãã®çµ±åã¯éå±ã§åçŸå¯èœãªæ¹æ³ã§å£ããŸããé©ãã¯äœããå£ããããšã§ã¯ãªããéãã«å£ããããšã§ããé床ã®è°è«ã¯å®¹æã§ãããä¿¡é Œæ§ãæ¬åœã®ä»äºã§ãã
ããŒãªã³ã°ã®å€±æã¯ãæŽæ°ãèŠãŠããªãã£ããã«èŠããããšãå€ãã§ããã¿ã€ã ã¢ãŠãã§ãªã¯ãšã¹ããéäžã§åãããHTTP 200 ã ããèŠãŠã¬ã¹ãã³ã¹ããã£ãæ€èšŒããªãããã«äžå®å šãªã¬ã¹ãã³ã¹ãéããããŒãžããŒã·ã§ã³ã®å€æŽïŒãœãŒãé ã®å€æŽãããŒãžçªå·ããã«ãŒãœã«ãžã®ç§»è¡ïŒã§é ç®ãã¹ããããããéè€èªã¿ã«é¥ããããŒã«ã«ã®æèšãåºæºã« "updated_since" ããã£ã«ã¿ããŠãããã€ããšæèšããããããæŽæ°ãèŠéãããªã©ãããããåé¡ã§ãã
Webhookã®å€±æã¯ç°ãªããŸããé ä¿¡ã¯éåžž "at least once" ãªã®ã§ããããã€ãã¯ãããã¯ãŒã¯ãšã©ãŒæã«ãªãã©ã€ããçµæãšããŠéè€ãç®ã«ããŸãããšã³ããã€ã³ãã10åéããŠã³ããŠãããšå€ãã€ãã³ããäžåºŠã«ãã£ãŠããããšããããŸããçœ²åæ€èšŒã®åé¡ãé »åºïŒã·ãŒã¯ã¬ãããããŒããŒã·ã§ã³ãããã誀ã£ãçãã€ããŒããæ€èšŒããããããã·ãããããæ¹å€ããããªã©ã§æ£åœãªã€ãã³ããç¡å¹ãšå€å®ãããããšããããŸãã
äž¡æ¹ã«å ±éããé害ã¢ãŒãã¯éè€ãšé åºã®ä¹±ãã§ããåãã€ãã³ããè€æ°åå±ããé ããŠå±ããé åºãå ¥ãæ¿ãããæ³å®ããŠããªããã£ãŒã«ããæ¬ ããŠããããšãæ³å®ããŠãã ããã
ã»ãšãã©ã®å Žåãã¡ããã©äžåºŠãã¯åŸãããŸããã"æäœäžåºŠ" ãåæã«èšèšããå®å šã«åŠçã§ããããã«ããŸããidempotencyããŒïŒã€ãã³ãIDããããã€ãã®ãªããžã§ã¯ãããŒãžã§ã³ïŒãä¿åããŠéè€ãç¡èŠããä¿åæžã¿ã®ãã®ããæ°ããå Žåã«ã®ã¿æŽæ°ãé©çšããŸãããŸãäœãåãåã£ãŠäœããããããã°ã«æ®ããæšæž¬ã§ãªãèªä¿¡ãæã£ãŠãªãã¬ã€ã§ããããã«ããŸãã
ã¬ãŒãå¶éãšã³ã¹ãïŒAPI䜿çšãæãã
ã¬ãŒãå¶éã¯Webhook察ããŒãªã³ã°ã®è°è«ãçè«ããäºç®ãšä¿¡é Œæ§ã®åé¡ã«ãªãé åã§ããäœåãªãªã¯ãšã¹ãã¯æéãšéãæ¶è²»ãããããã€ããšã®é¢ä¿ãæããå¯èœæ§ããããŸãã
ããŒãªã³ã°ã¯äœãå€åããªããŠããã§ãã¯ããããã¯ã©ãŒã¿ãæ¶è²»ããŸãããŠãŒã¶ãããŒã¯ã³åäœã§å¶éããããšæªåããŸãïŒäŸãã°1000人ã®é¡§å®¢ãæ¯åããŒãªã³ã°ãããšãããããã¯ãé©åã«æ¯ãèã£ãŠããããããããŸããããåç®ãããšæ»æã®ããã«èŠããŸããããŒãªã³ã°ã¯ãŸãã³ãŒã«ã®æãç®ãçã¿ãããïŒãªã¹ãååŸã®åŸã«åã¢ã€ãã ã詳现ååŸïŒå¶éã«éããåå ã«ãªããŸãã
Webhookã¯éåžžAPIã³ãŒã«ãæžãããŸãããããŒã¹ãã®ãã¬ãã·ã£ãŒãçã¿ãŸãããããã€ããé害ããå埩ãããäžæ¬ã€ã³ããŒããè¡ã£ãã補åããŒã³ãããããšãäœåãšããã€ãã³ããäžåºŠã«é ä¿¡ãããããããŸããããããã€ãã¯429ã§ãµãŒãžãå¶éããããããªããé ããšã€ãã³ãããããããããããŸããåãåŽã¯ããã¯ãã¬ãã·ã£ãŒãèšèšããå¿ èŠããããŸãïŒãã°ããåãå ¥ããŠãã¥ãŒã«å ¥ããå¶åŸ¡ãããããŒã¹ã§åŠçããã
åŒã³åºããæžããã€ã€æ£ç¢ºæ§ãæãªããªãããã®å®è·µçãã¿ãŒã³ïŒ
- âupdated sinceâ ã¿ã€ã ã¹ã¿ã³ãã倿ŽããŒã¯ã³ã䜿ã£ãå¢ååæ
- ãµãŒããµã€ãã®ãã£ã«ã¿ïŒå¿ èŠãªã€ãã³ãã¿ã€ãã ã賌èªïŒ
- èªã¿åãã»æžã蟌ã¿ã®ãããåïŒè©³çްã¯ãã£ã³ã¯ã§ååŸãæžã蟌ã¿ã¯ãŸãšããŠïŒ
- å®å®ããåç §ããŒã¿ã®ãã£ãã·ã¥ïŒãã©ã³ãã¹ããŒã¿ã¹äžèЧããããã£ãŒã«ïŒ
- âãªã¢ã«ã¿ã€ã â ãš âã¬ããŒãã£ã³ã°â ãåé¢ïŒé«éçµè·¯ãšå€éãããïŒ
ããŒã¯ã«åããŠèšç»ãç«ãŠãŠãããŸããããå°çšã®ããã¯ãã£ã«ã¢ãŒããçšæããé ãåããã¯ã©ãŒã¿ãå°éãäžæåæ¢ã»åéã§ããããã«ããŸãã
æ£ããã¢ãããŒãã®éžã³æ¹ïŒç°¡åãªã¬ã€ã
WebhookãããŒãªã³ã°ãã®éžæã¯ãããŠãããããåãã«èœã¡çããŸãïŒé床ãå¿ èŠãããããšããã³ããä¿¡é Œã§ããªããšãã§ã確å®ã«æŽæ°ãåŸãããäºæž¬å¯èœããå¿ èŠãïŒ
第äžè ãWebhookãæäŸããŠããªãããŸãã¯ã¯ãŒã¯ãããŒãé å»¶ã蚱容ãããªãããŒãªã³ã°ãåæã®è¯ãããã©ã«ãã§ããæ¥æ¬¡ãææ¬¡ã®åæã§APIã« "updated since" ãã£ã«ã¿ããããªãèãããããªããŸãã
æéãéèŠãªãWebhookãããã©ã«ãã§åªããŠããŸãïŒãæ°ããæ³šæãå ¥ã£ãããæ¯æãã«å€±æãããããã±ãããå²ãåœãŠãããããªã©ãç¡é§ãªAPIã³ãŒã«ãæžããå³åº§ã«åŠçãããªã¬ãŒã§ããŸãã
æ£ç¢ºããéèŠãªãäž¡æ¹ã䜿ãã®ãå®çšçãªã«ãŒã«ã§ããWebhookã§é床ãåããããŒãªã³ã°ã§èŠéããè£ããäŸãã°Webhookã¯çŽ æ©ãåŠçãã15åããšïŒãŸãã¯æ°æéããšïŒã«ã¹ã±ãžã¥ãŒã«ãããããŒãªã³ã°ãèµ°ãããŠãããããããã€ãã³ããäžæçãªåæ¢ã§çããã®ã£ãããåããŸãã
ç°¡åãªæéïŒ
- æ°åã®é å»¶ã§åé¡ãªããã°ããŒãªã³ã°ããå§ããã
- æ°ç§ã§è¡šç€ºããå¿ èŠãããã°Webhookããå§ããã
- ãã³ãã®ä¿¡é Œæ§ãäœããã€ãã³ããéèŠãªãWebhookïŒããŒãªã³ã°ãèšç»ããã
- APIãå³ããã¬ãŒãå¶éãªãWebhookïŒè»œãã®ããŒãªã³ã°ãåªå ããã
- ããŒã¿éãå€ããªãé »ç¹ãªãã«ããŒã«ã¯é¿ããã
確å®åã«ãã³ãã«ããã€ã質åããŠæç¢ºãªåçãåŸãŠãã ããïŒ
- ã©ã®ã€ãã³ãã¿ã€ãããããäœæã»æŽæ°ã»åé€ãç¶²çŸ ãããŠãããïŒ
- Webhookã¯ã©ã®ããã«ãªãã©ã€ããããã©ããããã®æéãªãã©ã€ãããïŒ
- ã€ãã³ãã®åçããæéç¯å²ã§ã®ã€ãã³ãå±¥æŽååŸã¯å¯èœãïŒ
- Webhookãªã¯ãšã¹ãã«çœ²åãä»ãããçæ£æ§ãæ€èšŒã§ãããïŒ
- å¹ççãªããŒãªã³ã°ã®ããã« âupdated sinceâ ã¯ãšãªããµããŒãããŠãããïŒ
ã¹ããããã€ã¹ãããïŒæ£ãããä¿ã€åæèšèš
ãæ£ãããåæã¯åã«ããŒã¿ãåºçŸããããšã§ã¯ãããŸãããæ£ããåæãšã¯é©åãªã¬ã³ãŒããäžèŽããææ°ã®å€æŽãåã¡ãåé¡ãèµ·ãããšãã«äœãèµ·ããã蚌æã§ããããšã§ãã
ãã¹ããšç£èŠãã§ããèšç»ããå§ããŸãããïŒ
- å®çŸ©ïŒã©ã¡ããçå®ã®ãœãŒã¹ããšã«ãŒã«ã決ããããã£ãŒã«ãããšã«è²¬ä»»ã®æåšã決ããïŒäŸïŒCRMã顧客åãææããè«æ±ããŒã«ããµãã¹ã¯ãªãã·ã§ã³ç¶æ ãææããïŒããååã«æ°ããããšã¯äœå以å ãã蚱容ã§ãããšã©ãŒã¯äœããæ±ºããã
- å®å®ããèå¥åãéžã¶ããµãŒãããŒãã£ã®åºæIDãå éšIDãšäžŠã¹ãŠä¿åãããã¡ãŒã«ãååãããŒã«ããªãïŒå€æŽãããããïŒãå¯èœãªãããŒãžã§ã³ã "updated_at" ã¿ã€ã ã¹ã¿ã³ããä¿åããŠæ°ããããŒã¿ãæ€åºããã
- åæã€ã³ããŒããšå¢åæŽæ°ãèšç»ãããååã€ã³ããŒãã¯ãã§ãã¯ãã€ã³ãä»ãã®å¥ãžã§ããšããŠæ±ããåéå¯èœã«ããããã®åŸã¯å€æŽã®ã¿ãåŠçïŒã€ãã³ãã"since" ã¯ãšãªããŸãã¯ãã®äž¡æ¹ïŒã "last successful sync time" ã®ãããªã«ãŒãœã«ãèšé²ããã
- åé€ãšããŒãžãæå³çã«æ±ããåé€ã§ã¬ã³ãŒããæ¶ããã¢ãŒã«ã€ããããéã¢ã¯ãã£ãã«ãããæ±ºãããããŒãžã¯ã©ã®IDãæ®ãããæ±ºããç£æ»èšŒè·¡ãä¿æããã
- ç£èŠã·ã°ãã«ãèšå®ãããåæé å»¶ã倱æããåŒã³åºããè©°ãŸã£ããã¥ãŒã远跡ããéŸå€ãè¶ ãããã¢ã©ãŒãããïŒåã«ã¯ã©ãã·ã¥ãããšãã ãã§ãªãïŒã
å®è£ ãããšãã¯å€éšIDãã¿ã€ã ã¹ã¿ã³ããã¹ããŒã¿ã¹ãã£ãŒã«ããåæãã§ãã¯ãã€ã³ããããŒã¿ã¢ãã«ã§èŠããããã«ããŠãããŸããçŸå®äžçãä¹±ããŠããããã®æ§é ãåæãæ£ããä¿ã¡ãŸãã
åªçæ§ãšé åºïŒä¿¡é Œã§ããçµ±åã®æ žå¿
WebhookãšããŒãªã³ã°ãé·ãäœã£ãŠãããšæ¯åèŠããŠããã«ãŒã«ããããŸãïŒéè€ããªãã©ã€ãé åºã®ä¹±ãã¯å¿ ãèµ·ããŸããåæãåãã¡ãã»ãŒãžãå®å šã«ååŠçã§ããªããªããæéãšãšãã«å·®åãçããŸãã
åªçæ§ãšã¯ãåãå ¥åãªãåãçµæããæå³ããŸãããã¹ãŠã®çä¿¡ã€ãã³ãããç¹°ãè¿ããããããããªãããšæ±ãããã³ãã©ãå®å šã«èšèšããŸããäžè¬çãªãã¿ãŒã³ã¯ïŒéè€é€å»ããŒãç®åºããæ¢ã«åŠçæžã¿ã確èªããŠãã倿Žãé©çšãããã§ãã
éè€é€å»ããŒã«ã¯ãã¬ãŒããªãããããŸãããããã€ããã€ãã³ãIDãäžãããªããããæè¯ã§ãããªããã°ãªããžã§ã¯ãã®ããŒãžã§ã³ïŒå¢åãªããžã§ã³ïŒã䜿ããã"10åéã¯éè€ãç¡èŠãã" ã®ãããªã¿ã€ã ã¹ã¿ã³ããŠã£ã³ããŠã¯é å»¶å°çãããããè匱ã§ãã
é åºã¯ããäžæ¹ã®ååã§ããã°ããŒãã«ãªé åºã¯çšãªã®ã§ããªããžã§ã¯ãåäœã®é åºãç®æšã«ããŸãããã±ãããè«æ±æžãé¡§å®¢ã®æŽæ°ã¯ä¿åæžã¿ããæ°ããããŒãžã§ã³ãªãé©çšããŸããããŒãžã§ã³ããªããã° last-write-winsïŒäŸãã° newer updated_at ãåã€ïŒãæç¢ºãªã«ãŒã«ã§æ¡çšããæèšããã®ãšããžã±ãŒã¹ã¯åãå ¥ããèšèšã«ããŸãã
åçã埩æ§ã®ããã«ååãªæ å ±ãä¿æããŸãïŒ
- åãªããžã§ã¯ãã® "last seen" ããŒãžã§ã³ã updated_at
- ããŒãªã³ã°ãžã§ãã®æåŸã«åŠçããã«ãŒãœã«ããã§ãã¯ãã€ã³ã
- åŠçæžã¿ã€ãã³ãIDã®ããŒãã«ïŒæ¥éã«å¢ããå Žåã¯ä¿ææ¹éãèšããïŒ
- äžæçã«ä¿æãã raw payload ã§ãä¿®æ£ãåå®è¡ã§ããããã«ãã
äŸïŒStripeã®æ¯æãWebhookãäºåºŠå±ãããã®åŸ "paid" æŽæ°ã "created" ã€ãã³ãããå ã«æ¥ãå Žåã§ããè«æ±æžã®ææ°ã¹ããŒã¿ã¹ããŒãžã§ã³ãä¿åãå€ãæŽæ°ãç¡èŠããã°æ£ããç¶æ ã«ãªããŸãã
ãµã€ã¬ã³ããªããŒã¿ãããé²ãå詊è¡ãšåçãã¿ãŒã³
å€ãã®çµ±åã¯éãã«å€±æããŸããWebhookãé ããŠå±ããããŒãªã³ã°ãå¶éã«åœãããã¢ããªãä¿åäžã«ã¿ã€ã ã¢ãŠããããå詊è¡ãšåçããªããã°ã·ã¹ãã ã¯åŸã ã«ãããŠããã顧客ããã®èŠæ ã§åããŠæ°ã¥ããŸãã
Webhookã®å詊è¡ïŒéãåãå ¥ããå®å šã«åŠçãã
ãããã€ãã¯æåã³ãŒããéããã«è¿ããªããšãªãã©ã€ããããšãå€ãã§ããWebhookãªã¯ãšã¹ããéãåŠçã®å Žãšèãããé ä¿¡éç¥ãšããŠæ±ã£ãŠãã ããã
å®è·µçãªWebhookãã¿ãŒã³ïŒ
- 眲åãã¹ããŒããã¿ã€ã ã¹ã¿ã³ãã®åºæ¬æ€èšŒåŸã«éããã«2xxãè¿ãã
- ã€ãã³ããäžæIDä»ãã§ä¿åãä¿çäžã«ããŒã¯ããã
- ã¯ãŒã«ãŒã§éåæã«åŠçã詊è¡åæ°ã远跡ããã
- äžæçãšã©ãŒãªãåŸã§å詊è¡ããæä¹ çãšã©ãŒãªã忢ããŠã¢ã©ãŒãããã
- äžæ£ãªããŒã¿ã«ã¯4xxããµãŒããã©ãã«ã«ã¯5xxã䜿ãã
ããã§ããããçœ ãé¿ããããŸãïŒãWebhookãåãåã£ãïŒããŒã¿ãåæããããšæã蟌ãããšã§ãã
ããŒãªã³ã°ã®å詊è¡ïŒAPIã«ç€Œåæ£ãã
ããŒãªã³ã°ã®å€±æã¯å¥ç©ã§ããçã忢åŸã«ãªãã©ã€ã®çŸ€ããçºçãã¬ãŒãå¶éãæªåããããªã¹ã¯ããããŸããææ°ããã¯ãªãïŒãžãã¿ãŒã䜿ãã"since" ã«ãŒãœã«ãä¿æããŠå šä»¶åã¹ãã£ã³ãé¿ããŠãã ããã
ä»åŠçã§ããªããã®ã¯ãããã¬ã¿ãŒãã¥ãŒïŒãŸãã¯ããŒãã«ïŒã«å ¥ããŠçç±ãèšé²ããŸããããããã«ããå®å šã«æ€æ»ããããã³ã°ä¿®æ£ãåå®è¡ãã§ããŸãã
åçã¯èŠéããã€ãã³ããå埩ããæ¹æ³ã§ããç°¡åãªåçæŠç¥ïŒ
- æéçªãéžã¶ïŒäŸïŒéå»24æéïŒãã察象ã¬ã³ãŒã矀ãéžã¶ã
- ãããã€ãããçŸåšã®ç¶æ ãåååŸããã
- åªçã«æŽæ°ãåé©çšããŠäžæŽåãä¿®æ£ããã
- äœãå€ããããªãããèšé²ããã
äŸïŒè«æ±ã®Webhookã§ "invoice.paid" ãåãåã£ããããŒã¿ããŒã¹ãããã¯ãã30ç§ä¿åã§ããªãã£ãå Žåãã€ãã³ãããããã¬ã¿ãŒã«å ¥ããè«æ±æžã𿝿ãã¹ããŒã¿ã¹ãåãã§ããããŠã¬ã³ãŒããåãããããšã§åçã§ããŸãã
ãããããã¹ãšåé¿æ³
å€ãã®åæãã°ã¯å€§ããªã¢ãŒããã¯ãã£åé¡ã§ã¯ãªããå°ããªåæã®ããéãã§ãããããéããªãããéè€ã¬ã³ãŒããèŠéãã«ã€ãªãããŸãã
ç¹°ãè¿ãåºã倱æäŸïŒ
- å¢åãã£ã«ã¿ãªãã«é »ç¹ã«ããŒãªã³ã°ããã ã«ãŒãœã«ïŒupdated_atãã€ãã³ãIDãããŒãžããŒã¯ã³ïŒã远跡ããæåŸã®æåå®è¡ä»¥éã®å€æŽã ããåãåãããã
- Webhookãä¿èšŒãããé ä¿¡ãšã¿ãªãã æè¿ã®å±¥æŽïŒéå»24ã72æéãªã©ïŒãåãã§ãã¯ããããã¯ãã£ã«ãžã§ããæã€ã
- éè€ãç¡èŠããã ãã¹ãŠã®æžã蟌ã¿ãåªçã«ããããããã€ãã®ã€ãã³ãIDãå®å®ããå€éšIDãä¿åããåäžå€æŽãäºåºŠé©çšããªãã
- æ€èšŒãªãã«Webhookãåãå ¥ããã ãããã€ããæäŸãã眲åããŒã¯ã³ãæ€èšŒææ®µã䜿ã£ãŠæ€èšŒããã
- åæã®å¥åº·ç¶æ ãèŠãŠããªãã é å»¶ãããã¯ãã°ã®ãµã€ãºãæåŸã®æåå®è¡æå»ããšã©ãŒçã远跡ããéŸå€ãè¶ ãããã¢ã©ãŒãããã
å€ãã® "Webhook vs Polling" ã®è°è«ã¯èŠç¹ãå€ããŠããŸãïŒä¿¡é Œæ§ã¯ã©ã¡ããã®ææ³ãã®ãã®ã§ã¯ãªãããã®åšå²ã«ããå®å šçããçãŸããŸããæ¯æãWebhookãäºåºŠå±ããé ããŠå±ãå¯èœæ§ãèæ ®ãããWebhookã§çŽæ¥ã¬ã³ãŒããäœæãããšé¡§å®¢ã«äºéã§ã¡ãã»ãŒãžãéã£ããè«æ±ãããããæãããããŸãã
å¥å šãªçµ±åã®ããã®ã¯ã€ãã¯ãã§ãã¯ãªã¹ã
æ¥åžžã®å¥åº·ãã§ãã¯ã¯WebhookãããŒãªã³ã°ããŸãã¯åæ¹ã§äŒŒãŠããŸããããŒã¿ãæ°ãããããšã©ãŒãç©ã¿äžãã£ãŠããªãããã¯ãªãŒã³ã«åŸ©æ§ã§ããããç¥ãããã¯ãã§ãã
æ°åã§å®è¡ã§ãããã§ãã¯ãªã¹ãïŒ
- é®®åºŠïŒ ãæåŸã«ã€ãã³ããåãåã£ãæéãããæåŸã®ããŒã«å®äºæéããæåŸ é å»¶ãšæ¯èŒããã
- 倱æïŒ ãªãã©ã€ãå¢ãç¶ããŠããªãããåããŠããªããžã§ãããªããããšã©ãŒæ°ãšãæåŸã®æåãæå»ãçµã¿åãããŠèŠãã
- ã¯ã©ãŒã¿ïŒ 䜿çšããAPIã³ãŒã«æ°ãšæ®ãã確èªãéçã«è¿ããªãããŒãªã³ã°ãé ãããããåããã
- æ£ç¢ºæ§ïŒ ã·ã¹ãã éã§åèšïŒäŸãã°ã仿¥ã®æ³šææ°ãïŒãã¹ããããã§ãã¯ããæè¿ã®ã¬ã³ãŒããããã€ããµã³ããªã³ã°ããã
- åŸ©æ§æºåïŒ éè€ãèŠéããªãæè¿ã®æéçªãå®å šã«ååŠçã§ããããšã確èªããã
圹ç«ã€ç¿æ £ã¯ãæ¢ç¥ã®ç¹å¿æãå¶åŸ¡äžã§å®æçã«åçããçµæãæ¬çªãšäžèŽããããšã確èªããããšã§ãã
äŸïŒçŸå®çãªã¯ãŒã¯ãããŒã§WebhookãšããŒãªã³ã°ãæ··ãã
å°ããªSaaSããŒã ãCRMïŒé£çµ¡å ãšæ¡ä»¶ïŒãStripe決æžïŒèª²éãšè¿éïŒããµããŒãããŒã«ïŒãã±ããç¶æ ïŒã®äžã€ãåæãããå¿ èŠããããšããŸãã
é«éåå¿ãå¿ èŠãªãã®ã¯Webhookåªå ã§èšå®ããŸããCRMã€ãã³ãã¯é¡§å®¢ã¬ã³ãŒããæŽæ°ãå éšã¿ã¹ã¯ãããªã¬ãŒããŸããStripeã®Webhookã¯è«æ±æžãäœæããæ¯æãåŸã«æ©èœãè§£æŸãã倱ææã«ã¢ã«ãŠã³ããæªæãã«ããŸãããµããŒãããŒã«ã¯Webhookãããã°äœ¿ããŸããããã±ãããäžæ¬ã§ç¶æ 倿Žãããããšããããã宿ããŒãªã³ã°ãç¶æããŸãã
圌ãã¯ããŒãªã³ã°ãã¡ã€ã³ã§ã¯ãªãã»ãŒããã£ããããšããŠæ±ããŸããæ¯æ©ãéå»24æéã®å€æŽãåã·ã¹ãã ããååŸããŠã¢ããªãä¿æããŠãããã®ãšç §åãããªã³ã³ã·ãªãšãŒã·ã§ã³ãžã§ããèµ°ãããŸãã
ãããšãçŸå®ã®é害ãèµ·ãããããã€äžã«Webhookãšã³ããã€ã³ãã20åéããŠã³ããŸããã
- CRMãšStripeã¯ãã°ããã®ããã ãªãã©ã€ããŸãã
- äžéšã®ã€ãã³ãã¯é ããŠå±ããé åºãå ¥ãæ¿ãããæéåãã«ãªããã®ããããŸãã
- ãªã³ã³ã·ãªãšãŒã·ã§ã³ããŒã«ãã®ã£ããïŒæ¬ æããã€ãã³ãIDãäžäžèŽã®åèšïŒãæ€åºãæ¬ ããŠãã倿Žãããã¯ãã£ã«ããŸãã
圌ãããã°ã«æ®ããã®ïŒåä¿¡ã€ãã³ãIDããããã€ãã®ã¿ã€ã ã¹ã¿ã³ããå éšã¬ã³ãŒãIDãæçµçµæïŒäœæã»æŽæ°ã»ç¡èŠïŒãã¢ã©ãŒãã®ããªã¬ãŒã¯ç¹°ãè¿ãWebhook倱æããªãã©ã€ã®æ¥å¢ããŸãã¯ãªã³ã³ã·ãªãšãŒã·ã§ã³ãå°ããªéŸå€ä»¥äžã®æ¬ æãèŠã€ãããšãã§ãã
次ã®ã¹ãããïŒå®è£ ãç£èŠãå埩
å€ãã®ããŒã ã«ãšã£ãŠå®çšçãªããã©ã«ãã¯ã·ã³ãã«ã§ãïŒå³ææ§ã¯Webhookãè£å®ã¯å°ããªããŒãªã³ã°ãžã§ãã§ãWebhookã§çŽ æ©ãå±ãããã«ããããŒãªã³ã°ã§é害ãèšå®ãã¹ã§èŠéãããã®ãè£ãã
ãŸãã¯éããããæ£ç¢ºããåªå ããŠãã ããããã¹ãŠã®çä¿¡å€æŽãäœåºŠåŠçãããŠãå®å šã«é©çšã§ããããã«ããŸãã
æåã«åãã¹ã3ã€ã®ã¢ã¯ã·ã§ã³ïŒ
- ãã³ãã®ã€ãã³ããšãã£ãŒã«ããå éšã¢ãã«ã«ãããããã"delete"ã"refund"ã"status change" ãããªãã®ã·ã¹ãã ã§äœãæå³ããããæç¢ºã«ããã
- 忥ããåªçæ§ãèšèšããïŒå€éšã€ãã³ãIDãããŒãžã§ã³ãä¿åããåçããŠãéè€ãèµ·ããªãããã«ããã
- æå³çã«åçã远å ããïŒ"last seen" ã«ãŒãœã«ãæéçªããŒãªã³ã°ãä¿æããåé¡ããã£ãç¯å²ã管çè ãåå®è¡ã§ããããã«ããã
皌ååŸã¯ç£èŠãéçšãæ¯ããŸããWebhooké ä¿¡çãçç±å¥ã®å€±æïŒã¿ã€ã ã¢ãŠãã4xxã5xxïŒããªã³ã³ã·ãªãšãŒã·ã§ã³ããŒã«ã®é ãã远跡ããŸãããã"ã€ãã³ãããŸã£ããåä¿¡ãããŠããªã" ããšã«ãã¢ã©ãŒããäžããç¿æ £ãã€ããŠãã ããã
æäœæ¥ã§ãã«ããã¯ãšã³ããæžãã®ã§ã¯ãªãèŠèŠçããŒã«ã§ãããäœãããå ŽåãAppMaster (appmaster.io) ã¯ããŒã¿ã¢ãã«ã®èšèšãWebhookãšã³ããã€ã³ãäœæãå詊è¡/åçãããŒèšèšãããžã¥ã¢ã«ã«è¡ããããŒã³ãŒããªãã·ã§ã³ã§ãå¿ èŠã«å¿ããŠå®éã®ãœãŒã¹ã³ãŒããçæããŸãã


