Submit Search
Upload
Payjp
•
1 like
•
3,270 views
Y
yoshichiba
Follow
HOW TO INSTALL PAYJP
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 22
Download now
Download to read offline
Recommended
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
dcubeio
PayPalとセキュリティの関係について
PayPalとセキュリティの関係について
Junichi Okamura
20170324 html5j web_paltform_study
20170324 html5j web_paltform_study
Junichi Okamura
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
Junya Suzuki
PPUG Kyoto #1
PPUG Kyoto #1
Junichi Okamura
20180215 devsumi-base
20180215 devsumi-base
真一 藤川
PayPalアカウントを使った便利で安心なプラットフォーム運用
PayPalアカウントを使った便利で安心なプラットフォーム運用
Junichi Okamura
G's Academy メンター資料 / 20180216
G's Academy メンター資料 / 20180216
真一 藤川
Recommended
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
dcubeio
PayPalとセキュリティの関係について
PayPalとセキュリティの関係について
Junichi Okamura
20170324 html5j web_paltform_study
20170324 html5j web_paltform_study
Junichi Okamura
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
CloudNativeな決済サービスの開発と2年間の歩み #sf_A4
Junya Suzuki
PPUG Kyoto #1
PPUG Kyoto #1
Junichi Okamura
20180215 devsumi-base
20180215 devsumi-base
真一 藤川
PayPalアカウントを使った便利で安心なプラットフォーム運用
PayPalアカウントを使った便利で安心なプラットフォーム運用
Junichi Okamura
G's Academy メンター資料 / 20180216
G's Academy メンター資料 / 20180216
真一 藤川
アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月
アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月
VirtualTech Japan Inc.
テラ足場 ご提案資料
テラ足場 ご提案資料
ssuser6183c8
マネーフォワード クラウド経費サービス資料
マネーフォワード クラウド経費サービス資料
Money Forward, Inc.
新しい実装方法 Braintree SDKについて
新しい実装方法 Braintree SDKについて
Junichi Okamura
Tablet 20121129 KnowledgeCOMMONS vol.18
Tablet 20121129 KnowledgeCOMMONS vol.18
Visso株式会社
Biz card名刺取込みマニュアル
Biz card名刺取込みマニュアル
e-sales-support
20180228 sendai it_workshop
20180228 sendai it_workshop
Junichi Okamura
Watson.assistant chat bot-20200117
Watson.assistant chat bot-20200117
Yasushi Osonoi
オープン API と Authlete のソリューション
オープン API と Authlete のソリューション
Tatsuo Kudo
20180829 ppug fukuoka
20180829 ppug fukuoka
Junichi Okamura
20190226 jp stripes_nagoya_vol3_update
20190226 jp stripes_nagoya_vol3_update
Hideki Ojima
名刺デジタル化サービスマニュアル 11月改訂版
名刺デジタル化サービスマニュアル 11月改訂版
e-sales-support
210303 jp stripes connect deep-dive
210303 jp stripes connect deep-dive
Noz Sasaoka
20170518 oracle code_stripe_公開用
20170518 oracle code_stripe_公開用
Hideki Ojima
『スマートフォンでの認証/課金について』デジタルガレージ宮城氏
『スマートフォンでの認証/課金について』デジタルガレージ宮城氏
Developers Summit
20180224 ppug osaka_#3
20180224 ppug osaka_#3
Junichi Okamura
【EMCカンファレンス2019】メンバーズ|UX・デジタル大国"中国"の今を知り、活かすために~中国現地のアプリ調査から~
【EMCカンファレンス2019】メンバーズ|UX・デジタル大国"中国"の今を知り、活かすために~中国現地のアプリ調査から~
Members_corp
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #cndt2019 #osdt2019 #keynote
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #cndt2019 #osdt2019 #keynote
Junya Suzuki
IIJmio meeting 19 IIJ フルMVNO徹底解説
IIJmio meeting 19 IIJ フルMVNO徹底解説
techlog (Internet Initiative Japan Inc.)
20190312 node gakuen
20190312 node gakuen
Junichi Okamura
More Related Content
Similar to Payjp
アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月
アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月
VirtualTech Japan Inc.
テラ足場 ご提案資料
テラ足場 ご提案資料
ssuser6183c8
マネーフォワード クラウド経費サービス資料
マネーフォワード クラウド経費サービス資料
Money Forward, Inc.
新しい実装方法 Braintree SDKについて
新しい実装方法 Braintree SDKについて
Junichi Okamura
Tablet 20121129 KnowledgeCOMMONS vol.18
Tablet 20121129 KnowledgeCOMMONS vol.18
Visso株式会社
Biz card名刺取込みマニュアル
Biz card名刺取込みマニュアル
e-sales-support
20180228 sendai it_workshop
20180228 sendai it_workshop
Junichi Okamura
Watson.assistant chat bot-20200117
Watson.assistant chat bot-20200117
Yasushi Osonoi
オープン API と Authlete のソリューション
オープン API と Authlete のソリューション
Tatsuo Kudo
20180829 ppug fukuoka
20180829 ppug fukuoka
Junichi Okamura
20190226 jp stripes_nagoya_vol3_update
20190226 jp stripes_nagoya_vol3_update
Hideki Ojima
名刺デジタル化サービスマニュアル 11月改訂版
名刺デジタル化サービスマニュアル 11月改訂版
e-sales-support
210303 jp stripes connect deep-dive
210303 jp stripes connect deep-dive
Noz Sasaoka
20170518 oracle code_stripe_公開用
20170518 oracle code_stripe_公開用
Hideki Ojima
『スマートフォンでの認証/課金について』デジタルガレージ宮城氏
『スマートフォンでの認証/課金について』デジタルガレージ宮城氏
Developers Summit
20180224 ppug osaka_#3
20180224 ppug osaka_#3
Junichi Okamura
【EMCカンファレンス2019】メンバーズ|UX・デジタル大国"中国"の今を知り、活かすために~中国現地のアプリ調査から~
【EMCカンファレンス2019】メンバーズ|UX・デジタル大国"中国"の今を知り、活かすために~中国現地のアプリ調査から~
Members_corp
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #cndt2019 #osdt2019 #keynote
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #cndt2019 #osdt2019 #keynote
Junya Suzuki
IIJmio meeting 19 IIJ フルMVNO徹底解説
IIJmio meeting 19 IIJ フルMVNO徹底解説
techlog (Internet Initiative Japan Inc.)
20190312 node gakuen
20190312 node gakuen
Junichi Okamura
Similar to Payjp
(20)
アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月
アプリケーション性能管理(APM)ツールの新世代 「AppDynamics」のご紹介 – OpenStack最新情報セミナー 2015年7月
テラ足場 ご提案資料
テラ足場 ご提案資料
マネーフォワード クラウド経費サービス資料
マネーフォワード クラウド経費サービス資料
新しい実装方法 Braintree SDKについて
新しい実装方法 Braintree SDKについて
Tablet 20121129 KnowledgeCOMMONS vol.18
Tablet 20121129 KnowledgeCOMMONS vol.18
Biz card名刺取込みマニュアル
Biz card名刺取込みマニュアル
20180228 sendai it_workshop
20180228 sendai it_workshop
Watson.assistant chat bot-20200117
Watson.assistant chat bot-20200117
オープン API と Authlete のソリューション
オープン API と Authlete のソリューション
20180829 ppug fukuoka
20180829 ppug fukuoka
20190226 jp stripes_nagoya_vol3_update
20190226 jp stripes_nagoya_vol3_update
名刺デジタル化サービスマニュアル 11月改訂版
名刺デジタル化サービスマニュアル 11月改訂版
210303 jp stripes connect deep-dive
210303 jp stripes connect deep-dive
20170518 oracle code_stripe_公開用
20170518 oracle code_stripe_公開用
『スマートフォンでの認証/課金について』デジタルガレージ宮城氏
『スマートフォンでの認証/課金について』デジタルガレージ宮城氏
20180224 ppug osaka_#3
20180224 ppug osaka_#3
【EMCカンファレンス2019】メンバーズ|UX・デジタル大国"中国"の今を知り、活かすために~中国現地のアプリ調査から~
【EMCカンファレンス2019】メンバーズ|UX・デジタル大国"中国"の今を知り、活かすために~中国現地のアプリ調査から~
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #cndt2019 #osdt2019 #keynote
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #cndt2019 #osdt2019 #keynote
IIJmio meeting 19 IIJ フルMVNO徹底解説
IIJmio meeting 19 IIJ フルMVNO徹底解説
20190312 node gakuen
20190312 node gakuen
Payjp
1.
∼ 概要とその実装方法 ∼
2.
アジェンダ ・PAY.JPとは ・PAY.JPの特徴 ・PAY.JPの仕組み ・PAY.JPの実装方法(チェックアウト版、カスタマイズ版) ・最後に
3.
PAY.JPとは ネットショップを誰でも簡単に作れるサービス 「BASE」が運営している決済サービスのこと。 事業者がクレジットカード情報を扱わなくてもいいように 簡単に支払い機能を実装することができる。 手数料は取引額の2.59%と業界内では屈指の安さ。
4.
PAY.JPの特徴 ・様々な言語に対応している(現在は9つの言語に対応) → Python, Ruby,
PHP, Java etc.. ・事業者が機密情報を保持することなく決済可能 → クレジット情報をトークン化している ・カスタマイズが自由自在 → 簡単に実装できるチェックアウト版もある
5.
トークン化って???
6.
トークン化とは、 ユーザーが入力したクレジットカード情報 (カード番号や有効期限など)を乱数化すること。 例), tok_da7d374d1da833862285e74b0408 ↓ カード情報が特定されないため、高いセキュリティを誇る。 PAY.JPでは、このトークンを用いて情報のやりとりをする。
7.
PAY.JPの仕組み フォーム(new.html.haml) ①カード情報送信 JS(card.js) コントローラ(cards_controller.rb) JavaScript Controller ②カード情報送信 ③トークンを生成・送信 (response.id) ④トークンを送信 ⑤トークンを送信 ⑥顧客IDを生成・送信 (customer)
8.
顧客IDって???
9.
顧客IDとは、 生成されたトークンと支払った人(顧客)を結びつけたもの。 ↓ 1度生成されたトークンは再使用できないため、 あらかじめ購入者と結びつけておく必要がある。 なぜその必要があるのか? 一度使用したトークンは再び使用することはできませんが、 顧客にカードを登録すれば、 顧客IDを支払い手段として用いることで、何度でも同じカードで支払い処理ができるようになります。 → トークンと顧客IDの生成は同時に行う必要がある!
10.
PAY.JPの実装方法 共通設定 ①PAY.JPに登録 ②PAY.JPのダッシュボードからAPIにアクセス
11.
PAY.JPの実装方法 チェックアウト版の場合 PAY.JP側がフォームを用意してくれているため、 フォームに関する記述は1行で済みます。 チェックアウトは<script>タグを1行で、 デザインされた決済フォーム、 カード情報のバリデーション、カード情報のトークン化を行うフォームを生成するライブラリです。 →
12.
フォーム(new.html.haml) ①カード情報送信 JS(card.js) コントローラ(cards_controller.rb) JavaScript Controller ②カード情報送信 ③トークンを生成・送信 (payjp-token) ④トークンを送信 ⑤トークンを送信 ⑥顧客IDを生成・送信 (customer) =
form_tag url: <urlを記述> do :plain <script type="text/javascript" src="https://checkout.pay.jp" class="payjp-button" data-key="公開 "></script>
13.
フォーム(new.html.haml) ①カード情報送信 JS(card.js) コントローラ(cards_controller.rb) JavaScript Controller ②カード情報送信 ③トークンを生成・送信 (response.id) ④トークンを送信 ⑤トークンを送信 ⑥顧客IDを生成・送信 (customer) 次のスライドへ
14.
def create Payjp.api_key =
Rails.application.credentials[:payjp][:secret_key] customer = Payjp::Customer.create( card: params[:payjp-token], metadata: {user_id: current_user.id} ) @card = Card.new( card_id: customer.default_card, customer_id: customer.id, user_id: current_user.id ) @card.save end 自身のデータベースに保存するための記述 トークンをPAY.JP側に送り、顧客IDを取得
15.
PAY.JPの実装方法 カスタマイズ版の場合 ①gem payjp'を記述 ②applicattion.html.hamlのheadタグに、以下の記述を追記
16.
フォーム(new.html.haml) ①カード情報送信 JS(card.js) コントローラ(cards_controller.rb) JavaScript Controller ②カード情報送信 ③トークンを生成・送信 (response.id) ④トークンを送信 ⑤トークンを送信 ⑥顧客IDを生成・送信 (customer) フォームを自身で作成(例は次のスライド)
17.
%form#charge-form{action: "/cards", method:
"POST"} %span.charge-errors %h4 支払い %label カード番号 %input.number{maxlength: "16", name: "number", placeholder: "カード番号", type: "text",id: "payment_card_no", value: 4242424242424242}/ %label CVC %input.cvc{maxlength: "3", name: "cvc", placeholder: "CVC", type: "text",id: "payment_card_security_code", value: 123}/ %label 有効期限 %input.exp_month{maxlength: "2", name: "exp_month", placeholder: "月", type: "text",id: "payment_card_expire_mm", value: 12}/ %input.exp_year{maxlength: "4", name: "exp_year", placeholder: "年", type: "text",id: "payment_card_expire_yy", value: 2022}/ フォーム例 *単なるフォーム単体の例なので、以降との関連性はありません。
18.
フォーム(new.html.haml) ①カード情報送信 JS(card.js) コントローラ(cards_controller.rb) JavaScript Controller ②カード情報送信 ③トークンを生成・送信 (response.id) ④トークンを送信 ⑤トークンを送信 ⑥顧客IDを生成・送信 (customer) カード情報をPAY.JP側に送信(実装は次のスライド)
19.
$(function() { if (!$('#regist_card')[0])
return false; Payjp.setPublicKey("公開 を入れます"); $("#regist_card").on("click", function(e) { e.preventDefault(); let now = new Date(); var card = { number: $("#card_number_form").val(), exp_month: $("#exp_month_form").val(), exp_year: $("#exp_year_form").val(), cvc: $("#cvc_form").val() }; Payjp.createToken(card, function(status, response) { if (status === 200) { $("#card_number_form").removeAttr("name"); $("#exp_month_form").removeAttr("name"); $("#exp_year_form").removeAttr("name"); $("#cvc_form").removeAttr("name"); var token = response.id; $("#card_token").append(`<input type="hidden" name="card_token" value=${token}>`) $("#card_form").get(0).submit(); } else { alert("カード情報が正しくありません。"); $("#regist_card").prop('disabled', false); } }); }); }); PAY.JP側に送るクレジット情報 response.idが トークンとして送られてくる トークンをコントローラーに送信
20.
フォーム(new.html.haml) ①カード情報送信 JS(card.js) コントローラ(cards_controller.rb) JavaScript Controller ②カード情報送信 ③トークンを生成・送信 (response.id) ④トークンを送信 ⑤トークンを送信 ⑥顧客IDを生成・送信 (customer) トークンを送信し、顧客IDを取得(実装は次のスライド)
21.
def create Payjp.api_key =
Rails.application.credentials[:payjp][:secret_key] customer = Payjp::Customer.create( card: params[:card_token], metadata: {user_id: current_user.id}, ) @card = Card.new( card_id: customer.default_card, customer_id: customer.id, user_id: current_user.id ) @card.save end 自身のデータベースに保存するための記述 トークンをPAY.JP側に送り、顧客IDを取得
22.
最後に リファレンスに全てが書いてあります。 (実装方法、よく起こるエラー内容 etc...)
Download now