{"id":840,"date":"2022-03-25T19:15:00","date_gmt":"2022-03-25T10:15:00","guid":{"rendered":"https:\/\/www.sea2800.com\/?p=840"},"modified":"2022-03-25T19:18:43","modified_gmt":"2022-03-25T10:18:43","slug":"stripe-webhook%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e6%b1%ba%e6%b8%88%e3%81%97%e3%81%9f%e3%82%89%e3%83%a1%e3%83%bc%e3%83%ab%e9%80%81%e4%bf%a1%e3%82%92%e8%a1%8c%e3%81%86%e3%82%88%e3%81%86%e3%81%ab","status":"publish","type":"post","link":"https:\/\/www.sea2800.com\/?p=840","title":{"rendered":"Stripe Webhook\u3092\u4f7f\u3063\u3066\u6c7a\u6e08\u3057\u305f\u3089\u30e1\u30fc\u30eb\u9001\u4fe1\u3092\u884c\u3046\u3088\u3046\u306b\u3059\u308b\u3010Django\u3011"},"content":{"rendered":"\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<!-- test -->\n<ins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-7910153846163820\" data-ad-slot=\"9115942114\" data-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>\u524d\u56destripe\u3092\u5229\u7528\u3057\u3066Django\u3067\u306e\u6c7a\u6e08\u6a5f\u80fd\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3057\u305f\u3002\u3088\u304f\u5229\u7528\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u306b\u306f\u3044\u304f\u3089\u4f7f\u3063\u305f\u306a\u3069\u306e\u901a\u77e5\u304c\u79c1\u305f\u3061\u306e\u30b9\u30de\u30db\u306b\u5c4a\u304f\u306f\u305a\u3067\u3059\u3002\u305d\u3053\u3067\u4eca\u56de\u306fstripe webhook\u3092\u5229\u7528\u3057\u3066\u6c7a\u6e08\u3057\u305f\u5f8c\u306b\u30e1\u30fc\u30eb\u3067\u901a\u77e5\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>Django\u3067\u6c7a\u6e08\u81ea\u4f53\u3092\u884c\u3046\u65b9\u6cd5\u3092\u77e5\u308a\u305f\u3044\u4eba\u306f\u3053\u3061\u3089\u306e\u8a18\u4e8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-espresso-log wp-block-embed-espresso-log\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"tKITCdXKCb\"><a href=\"https:\/\/www.sea2800.com\/?p=765\">Django\u3067\u6c7a\u6e08\u3092\u884c\u3046\uff08Stripe\u6c7a\u6e08\uff09<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Django\u3067\u6c7a\u6e08\u3092\u884c\u3046\uff08Stripe\u6c7a\u6e08\uff09&#8221; &#8212; Espresso log\" src=\"https:\/\/www.sea2800.com\/?p=765&#038;embed=true#?secret=8CJ2N5dmZ3#?secret=tKITCdXKCb\" data-secret=\"tKITCdXKCb\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69fb33caa544c\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69fb33caa544c\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.sea2800.com\/?p=840\/#%E3%81%AA%E3%81%9CStripe_webhook%E3%82%92%E4%BD%BF%E3%81%86%E3%81%AE%E3%81%8B%EF%BC%9F\" >\u306a\u305cStripe webhook\u3092\u4f7f\u3046\u306e\u304b\uff1f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.sea2800.com\/?p=840\/#%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89%E6%94%BB%E6%92%83%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B%EF%BC%9F\" >\u30ea\u30ed\u30fc\u30c9\u653b\u6483\u3068\u306f\u4f55\u304b\uff1f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.sea2800.com\/?p=840\/#Email%E3%81%AE%E9%80%81%E4%BF%A1%E6%96%B9%E6%B3%95\" >Email\u306e\u9001\u4fe1\u65b9\u6cd5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.sea2800.com\/?p=840\/#StripeCli%E3%82%92%E4%BD%BF%E3%81%86\" >StripeCli\u3092\u4f7f\u3046<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.sea2800.com\/?p=840\/#StripeCli%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B\" >StripeCli\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.sea2800.com\/?p=840\/#Stripe%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%99%E3%82%8B\" >Stripe\u306b\u30ed\u30b0\u30a4\u30f3\u3059\u308b<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.sea2800.com\/?p=840\/#Viewspy%E3%81%ABWebhook%E3%81%AE%E5%87%A6%E7%90%86%E3%82%92%E6%9B%B8%E3%81%8F\" >Views.py\u306bWebhook\u306e\u51e6\u7406\u3092\u66f8\u304f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.sea2800.com\/?p=840\/#urlspy%E3%82%92%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%80\" >urls.py\u3092\u66f8\u304d\u8fbc\u3080<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.sea2800.com\/?p=840\/#%E5%8F%82%E8%80%83%E3%81%AB%E3%81%97%E3%81%9F%E3%82%B5%E3%82%A4%E3%83%88\" >\u53c2\u8003\u306b\u3057\u305f\u30b5\u30a4\u30c8<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.sea2800.com\/?p=840\/#%E5%AE%A3%E4%BC%9D\" >\u5ba3\u4f1d<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%81%AA%E3%81%9CStripe_webhook%E3%82%92%E4%BD%BF%E3%81%86%E3%81%AE%E3%81%8B%EF%BC%9F\"><\/span>\u306a\u305cStripe webhook\u3092\u4f7f\u3046\u306e\u304b\uff1f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Stripe\u306e\u51e6\u7406\u306bclass Success_view\u304c\u3042\u308b\u306a\u3089\u3001\u305d\u3053\u306b\u51e6\u7406\u3092\u66f8\u3051\u3070\u3001\u308f\u3056\u308f\u3056webhook\u3092\u5229\u7528\u3059\u308b\u5fc5\u8981\u306a\u304f\u306a\u3044\uff1f\u3068\u601d\u3046\u65b9\u3082\u3044\u308b\u3067\u3057\u3087\u3046\u3002Success View\u306b\u66f8\u304d\u8fbc\u3080\u306e\u306f<strong>\u30ea\u30ed\u30fc\u30c9\u653b\u6483<\/strong>\u3092\u53d7\u3051\u3066\u3057\u307e\u3063\u305f\u308a\u3001\u4f55\u3089\u304b\u306e\u539f\u56e0\u3067SuccessView\u306b\u98db\u3070\u306a\u304b\u3063\u305f\u5834\u5408\u3001\u5f53\u7136\u3067\u3059\u304c\u304a\u91d1\u3092\u6255\u3063\u305f\u3060\u3051\u3067\u4f55\u3082\u8fd4\u3063\u3066\u3053\u306a\u3044\u3060\u3051\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89%E6%94%BB%E6%92%83%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B%EF%BC%9F\"><\/span>\u30ea\u30ed\u30fc\u30c9\u653b\u6483\u3068\u306f\u4f55\u304b\uff1f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u30ea\u30ed\u30fc\u30c9\u653b\u6483\uff08\u5225\u540dF5\u653b\u6483\uff09\u3068\u306f\u4f55\u304b\u3001\u3068\u3044\u3063\u3066\u3082\u540d\u524d\u3067\u60f3\u50cf\u3059\u308b\u306e\u3068\u304a\u308a\u30ea\u30ed\u30fc\u30c9\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3053\u3068\u3067\u30b5\u30fc\u30d0\u30fc\u306b\u5727\u3092\u304b\u3051\u3066\u843d\u3068\u3059\u653b\u6483\u3067\u3059\u304c\u3001SuccessView\u306b\u30e1\u30fc\u30eb\u9001\u4fe1\u3092\u884c\u3046\u51e6\u7406\u3092\u884c\u3046\u3068\uff081\u56de\u306e\u6c7a\u6e08\u00d7\u30ea\u30ed\u30fc\u30c9\u3057\u305f\u56de\u6570\u5206\u30e1\u30fc\u30eb\u9001\u4fe1\uff09\u304c\u9001\u3089\u308c\u3066\u3057\u307e\u3057\u307e\u3059\u3002\u305d\u3046\u3044\u3046\u3053\u3068\u3092\u907f\u3051\u308b\u305f\u3081\u306bstripe\u304c\u7528\u610f\u3057\u305f\u624b\u6bb5\u3068\u3057\u3066stripe Webhook\u3068\u3044\u3046\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u4e0d\u6b63\u306a\u3053\u3068\u3092\u3057\u3066\u306a\u3044\u304b\u306e\u691c\u67fb\u3092\u884c\u3063\u305f\u4e0a\u3067\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Email%E3%81%AE%E9%80%81%E4%BF%A1%E6%96%B9%E6%B3%95\"><\/span>Email\u306e\u9001\u4fe1\u65b9\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u30e1\u30fc\u30eb\u9001\u4fe1\u306b\u306f\u3055\u307e\u3056\u307e\u306a\u3084\u308a\u65b9\u304c\u3042\u308a\u307e\u3059\u304c\u4eca\u56de\u306f\u3001Email Message\u3092\u5229\u7528\u3057\u307e\u3059\u3002\u307e\u305f\u30e1\u30fc\u30eb\u306e\u9001\u4fe1\u65b9\u6cd5\u3092\u307e\u3068\u3081\u305f\u8a18\u4e8b\u306f\u5225\u9014\u306b\u7528\u610f\u3057\u307e\u3059\u3002\u4eca\u56de\u306fwebhook\u3092\u4f7f\u3063\u3066\u6c7a\u6e08\u5f8c\u306b\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3059\u308b\u65b9\u6cd5\u3092\u30e1\u30a4\u30f3\u3067\u884c\u3046\u306e\u3067\u3001\u7d30\u304b\u3044\u8a2d\u5b9a\u65b9\u6cd5\u306f\u7701\u7565\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4e0b\u8a18\u306e\u30b3\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066Email\u3092\u9001\u308b\u6e96\u5099\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from django.core.mail import EmailMessage<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"StripeCli%E3%82%92%E4%BD%BF%E3%81%86\"><\/span>StripeCli\u3092\u4f7f\u3046<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"StripeCli%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B\"><\/span>StripeCli\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>stripe webhook \u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u307e\u305aPC\u306e\u65b9\u306bStripeCli\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002brew\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u3067\u304d\u308b\u306e\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>brew install stripe\/stripe-cli\/stripe<\/code><\/pre>\n\n\n\n<p>\u3061\u306a\u307f\u306bpip\u3067\u3082stripe\u306f\u3042\u308a\u307e\u3059\u304c\u3001stripe no command\u3068\u51fa\u308b\u306e\u3067brew \u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u307b\u3046\u304c\u3044\u3044\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Stripe%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%99%E3%82%8B\"><\/span>Stripe\u306b\u30ed\u30b0\u30a4\u30f3\u3059\u308b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u65e2\u306bstripe\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u7121\u8996\u3067\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u304c\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u30b3\u30de\u30f3\u30c9\u3067\u30ed\u30b0\u30a4\u30f3\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stripe login<\/code><\/pre>\n\n\n\n<p>\u30ed\u30b0\u30a4\u30f3\u304c\u5b8c\u4e86\u3057\u305f\u3089\u30ed\u30fc\u30ab\u30eb\u7528\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3059\u308b\u3060\u3051\u3067\u5b8c\u4e86\u3057\u307e\u3059\u3002\/\/<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stripe listen --forward-to http:\/\/127.0.0.1:8000\/webhook\/<\/code><\/pre>\n\n\n\n<p>http:\/\/127.0.0.1:8000\/webhook\/\u306b\u3066Webhook\u3068\u306e\u3064\u306a\u304c\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u30b3\u30de\u30f3\u30c9\u5165\u529b\u3057\u305f\u5f8c\u306b\u30e9\u30a4\u30bb\u30f3\u30b9\u30ad\u30fc\u307f\u305f\u3044\u306a\u306e\u304c\u767a\u884c\u3055\u308c\u308b\u306e\u3067\u5fd8\u308c\u305a\u306b\u30e1\u30e2\u3092\u3057\u3068\u3044\u3066\u304f\u3060\u3055\u3044\u3002\u6b21\u306bsettings.py\u3092\u958b\u304d\u3001\u30e9\u30a4\u30bb\u30f3\u30b9\u30ad\u30fc\u3092\u8a2d\u5b9a\u3057\u3066\u304a\u304d\u307e\u3059\u3002\u3061\u306a\u307f\u306bdjango sslserver\u3092\u4f7f\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001 \u51e6\u7406\u3092\u66f8\u304d\u8fbc\u3093\u3067\u3082\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u307e\u305b\u3093\u3002\u30e6\u30fc\u30b6\u30fc\u6a5f\u80fd\u304c\u3042\u308b\u5834\u5408\u306f\u4e00\u5ea6\u30ed\u30b0\u30a2\u30a6\u30c8\u3092\u884c\u3063\u305f\u4e0a\u3067\u9589\u3058\u3066runserver\u3092\u8d77\u52d5\u3055\u305b\u3066\u304f\u3060\u3055\u3044\u3002\uff08\u305d\u3046\u3057\u306a\u3044\u3068\u30ed\u30b0\u30a4\u30f3\u3057\u305f\u6642\u306bCSRF TOKEN \u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DJSTRIPE_WEBHOOK_SECRET = \"whsec_xxx\"<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Viewspy%E3%81%ABWebhook%E3%81%AE%E5%87%A6%E7%90%86%E3%82%92%E6%9B%B8%E3%81%8F\"><\/span>Views.py\u306bWebhook\u306e\u51e6\u7406\u3092\u66f8\u304f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6b21\u306bViews.py\u306bwebhook\u306b\u3069\u3046\u3057\u3066\u6b32\u3057\u3044\u306e\u304b\u3092\u66f8\u304d\u8fbc\u3093\u3067\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from django.views.decorators.csrf import csrf_exempt #CSRFTOKEN\u3000\u3092\u7121\u52b9\u5316\n\n....\nstripe.api_key = settings.STRIPE_SECRET_KEY\n# You can find your endpoint's secret in your webhook settings\nendpoint_secret =settings.DJSTRIPE_WEBHOOK_SECRET\n....\n@csrf_exempt\ndef my_webhook_view(request):\n   payload = request.body\n   event = None\n   try:\n       event = stripe.Event.construct_from(\n      json.loads(payload), stripe.api_key)\n   except ValueError as e:\n        # Invalid payload\n        return HttpResponse(status=400)\n   except stripe.error.SignatureVerificationError as e:\n        # Invalid signature\n        return HttpResponse(status=400)\n\n    # Handle the checkout.session.completed event\n   if event&#91;'type'] == 'checkout.session.completed':\n        session = event&#91;'data']&#91;'object']\n        seiion_id = session&#91;'id']\n        lineitem = stripe.checkout.Session.list_line_items(seiion_id,limit=5,)\n        session_op =lineitem&#91;'data']&#91;0]\n        game_title =session_op&#91;'description']\n        user_data = session&#91;'customer_email']\n        # Fulfill the purchase...\n        subject = \"\u8cfc\u5165\u306e\u304a\u77e5\u3089\u305b\"\n        message = \"Thank you bought for \"+str(video_title)\n        from_email = 'MyEmail address'\n        recipient_list =user_data # \u5b9b\u5148\n        email = EmailMessage(subject, message, from_email, recipient_list,)\n        email.send()\n\n    # Passed signature verification\n   return HttpResponse(status=200)\n<\/code><\/pre>\n\n\n\n<p> \u5168\u4f53\u306e\u30b3\u30fc\u30c9\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u6253\u3061\u8fbc\u3081\u3070\u5b8c\u4e86\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def my_webhook_view(request):\n   payload = request.body\n   event = None\n   try:\n       event = stripe.Event.construct_from(\n      json.loads(payload), stripe.api_key)\n   except ValueError as e:\n        # Invalid payload\n        return HttpResponse(status=400)\n   except stripe.error.SignatureVerificationError as e:\n        # Invalid signature\n        return HttpResponse(status=400)\n<\/code><\/pre>\n\n\n\n<p>django\u306f\u4ed5\u69d8\u4e0a\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u306a\u3069\u306e\u6a5f\u5bc6\u6027\u306e\u9ad8\u3044\u3082\u306e\u306b\u306fcsrf_token\u304c\u4f7f\u308f\u308c\u3066\u306a\u3044\u3082\u306e\u306f\u5371\u967a\u3068\u5224\u65ad\u3057\u3066\u5f3e\u304f\u6027\u8cea\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u3089\u306b\u4f8b\u5916\u3092\u4e0e\u3048\u308b\u305f\u3081\u30b3\u30fc\u30c9\u304c@<strong>csrf_exempt<\/strong>\u3067\u3059\u3002\u3053\u308c\u3088\u308a\u4e0b\u306fcsrf_token\u304c\u5fc5\u8981\u3067\u3082\u5b88\u308a\u307e\u305b\u3093\u3088\u3068\u66f8\u304d\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3042\u3068\u306f\u516c\u5f0f\u306b\u6cbf\u3063\u3066\u6253\u3061\u8fbc\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if event&#91;'type'] == 'checkout.session.completed':\n        session = event&#91;'data']&#91;'object']\n        session_id = session&#91;'id']\n        lineitem = stripe.checkout.Session.list_line_items(session_id,limit=5,)\n        session_op =lineitem&#91;'data']&#91;0]\n        game_title =session_op&#91;'description']\n        user_data = session&#91;'customer_email']\n        # Fulfill the purchase...\n        subject = \"\u8cfc\u5165\u306e\u304a\u77e5\u3089\u305b\"\n        message = \"Thank you bought for \"+str(game_title)\n        from_email = 'MyEmail address'\n        recipient_list =user_data # \u5b9b\u5148\n     <\/code><\/pre>\n\n\n\n<p>\u5546\u54c1\u306e\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b\u306b\u306f<strong>stripe.checkout.Session.list_line_items<\/strong>\uff08\u30bb\u30c3\u30b7\u30e7\u30f3ID,\uff09\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u5546\u54c1\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u3092\u884c\u3044\u307e\u3059\u3002\u305f\u3060\u3057\u53d6\u5f97\u3059\u308b\u306b\u306f\u30bb\u30c3\u30b7\u30e7\u30f3ID\u304c\u5fc5\u8981\u306b\u306a\u308b\u306e\u3067\u3001\u8f9e\u66f8\u306e\u4e2d\u306b\u3042\u308bID\u3092\u53d6\u308a\u51fa\u3057\u3001<strong>stripe.checkout.Session.list_line_items<\/strong>\u306b\u5f53\u3066\u306f\u3081\u307e\u3059\u3002stripe.checkout.Session.list_line_items\u306e\u4e2d\u8eab\u306f\u8f9e\u66f8\u3068\u30ea\u30b9\u30c8\u304c\u8907\u96d1\u306b\u7d61\u307f\u5408\u3063\u3066\u3044\u308b\u306e\u3067\u53d6\u308a\u51fa\u3057\u305f\u3044\u60c5\u5831\u3092\u30b5\u30eb\u30d9\u30fc\u30b8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p><strong>stripe.checkout.Session.list_line_items<\/strong>\u306e\u30c7\u30fc\u30bf\u305d\u306e\u307e\u307e\u3092\u5f15\u3063\u5f35\u3063\u3066\u304f\u308b\u3068\u3053\u3093\u306a\u611f\u3058\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"473\" height=\"1024\" src=\"https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0948-473x1024.png\" alt=\"\" class=\"wp-image-843\" srcset=\"https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0948-473x1024.png 473w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0948-139x300.png 139w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0948-768x1663.png 768w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0948-709x1536.png 709w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0948-946x2048.png 946w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0948-920x1992.png 920w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0948-230x498.png 230w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0948-350x758.png 350w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0948-480x1039.png 480w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0948.png 1125w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/figure>\n\n\n\n<p>\u8f9e\u66f8\u306e\u4e2d\u306b\u3042\u308b\u30ea\u30b9\u30c8\u3092\u9078\u629e\u3057\u3001\u30ea\u30b9\u30c8\u306e\u4e2d\u306b\u3042\u308b\u8f9e\u66f8\u306e\u30c7\u30fc\u30bf\u3092\u30d4\u30c3\u30af\u30a2\u30c3\u30d7\u3059\u308b\u3068\u3053\u3046\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"473\" height=\"1024\" src=\"https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0949-473x1024.png\" alt=\"\" class=\"wp-image-844\" srcset=\"https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0949-473x1024.png 473w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0949-139x300.png 139w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0949-768x1663.png 768w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0949-709x1536.png 709w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0949-946x2048.png 946w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0949-920x1992.png 920w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0949-230x498.png 230w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0949-350x758.png 350w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0949-480x1039.png 480w, https:\/\/www.sea2800.com\/wp-content\/uploads\/2022\/03\/IMG_0949.png 1125w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"urlspy%E3%82%92%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%80\"><\/span>urls.py\u3092\u66f8\u304d\u8fbc\u3080<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u3053\u308c\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u3092\u884c\u3046\u3053\u3068\u304c\u5b8c\u4e86\u3067\u304d\u307e\u3057\u305f\u304c\u3001\u9001\u308a\u5148\u3067\u3042\u308burl\u304c\u306a\u3044\u3068webhook\u5074\u304c404\u30b3\u30fc\u30c9\u300c\u306d\u3047\u3088\uff01\u305d\u3093\u306a\u3082\u3093\u300d\u3068\u8a00\u3063\u3066\u304f\u308b\u306e\u3067\u3001urls.py\u306b\u66f8\u304d\u8fbc\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  path('webhook\/', views.my_webhook_view, name='stripe-webhook'),<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3067\u8cfc\u5165\u6642\u306b\u30e1\u30fc\u30eb\u9001\u4fe1\u3092\u884c\u3046\u51e6\u7406\u306f\u5b8c\u4e86\u3067\u3059\uff01\uff01<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%8F%82%E8%80%83%E3%81%AB%E3%81%97%E3%81%9F%E3%82%B5%E3%82%A4%E3%83%88\"><\/span>\u53c2\u8003\u306b\u3057\u305f\u30b5\u30a4\u30c8<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><a href=\"https:\/\/stripe.com\/docs\/api\/checkout\/sessions\/line_items\">https:\/\/stripe.com\/docs\/api\/checkout\/sessions\/line_items<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/stripe.com\/docs\/payments\/checkout\/fulfill-orders\">https:\/\/stripe.com\/docs\/payments\/checkout\/fulfill-orders<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%AE%A3%E4%BC%9D\"><\/span>\u5ba3\u4f1d<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u6280\u8853\u3092\u30d5\u30eb\u52d5\u54e1\u3057\u305f\u30b2\u30fc\u30e0\u30d7\u30ec\u30a4\u52d5\u753b\u6295\u7a3f\u30b5\u30a4\u30c8Forbinde\u3092\u958b\u767a\u516c\u958b\u3057\u3066\u3044\u307e\u3059\u3002\u8996\u8074\u8005\u304c\u30b2\u30fc\u30e0\u5b9f\u6cc1\u8005\u3084\u30b2\u30fc\u30e0\u958b\u767a\u8005\u306e\u30b2\u30fc\u30e0PV\u3092\u8996\u8074\u8005\u304c\u304a\u91d1\u3092\u6255\u3063\u3066\u5ba3\u4f1d\u3059\u308b\u3068\u6295\u7a3f\u8005\u306e\u53ce\u76ca\u3060\u3051\u3067\u306f\u306a\u304f\u3001\u305d\u306e\u30b2\u30fc\u30e0\u306e\u958b\u767a\u8005\u306b\u3082\u53ce\u76ca\u304c\u884c\u304f\u30b5\u30a4\u30c8\u3092\u76ee\u6307\u3057\u3066\u6d3b\u52d5\u3057\u3066\u3044\u307e\u3059\u3002\u3054\u8208\u5473\u3092\u6301\u3061\u307e\u3057\u305f\u3089\u662f\u975e\u52d5\u753b\u3092\u6295\u7a3f\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p><a href=\"https:\/\/www.forbinde.net\">https:\/\/www.forbinde.net<\/a><\/p>\n\n\n\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<!-- test -->\n<ins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-7910153846163820\" data-ad-slot=\"9115942114\" data-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56destripe\u3092\u5229\u7528\u3057\u3066Django\u3067\u306e\u6c7a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,8],"tags":[],"class_list":["post-840","post","type-post","status-publish","format-standard","hentry","category-django","category-python"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.sea2800.com\/index.php?rest_route=\/wp\/v2\/posts\/840","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sea2800.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sea2800.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sea2800.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sea2800.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=840"}],"version-history":[{"count":3,"href":"https:\/\/www.sea2800.com\/index.php?rest_route=\/wp\/v2\/posts\/840\/revisions"}],"predecessor-version":[{"id":846,"href":"https:\/\/www.sea2800.com\/index.php?rest_route=\/wp\/v2\/posts\/840\/revisions\/846"}],"wp:attachment":[{"href":"https:\/\/www.sea2800.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sea2800.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sea2800.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}