PAY.JP의 API를 이용한 크레디트 결제 기능을 구현(도입편)
즉, 애플리케이션의 서버측에서 신용카드 정보를 보관하지 않도록 해야 합니다(※).
※ 경제산업성. 개정 할부 판매법에 대해서 (참조 2020/9/18)
↓크레디트 결제의 흐름입니다.
토큰
보안을 담보하기 위해서 사용되는, 한 번만 사용 가능한 패스워드입니다. 토큰은 신용카드 정보를 암호화한 것입니다. 동일한 카드 정보로 여러 번 결제하더라도 매번 다른 토큰이 발급됩니다.
1. 클라이언트측에서 PAY.JP의 API가 제공하는 안전한 처리를 이용하여 신용카드 정보를 토큰화합니다.
2. 해당 토큰을 서버측으로 전송하고 신용카드 결제가 이루어집니다.
※이 토큰은 한 번만 유효한 것이므로, 같은 토큰으로 다른 결제를 실시할 수 없습니다. 그러므로, 만일 누설해도 문제 없습니다. 또한 PAY.JP 시스템 이외에는 토큰에서 신용카드 정보를 해독할 수 없습니다! !
Gem 도입
Gemfile
gem 'payjp'
설명 후 bundle install을 실행하고 도입.
① 뷰 파일에 신용카드 정보 입력란 추가
index.html.erb
<%= form_with model: @order, id: 'charge-form', class: 'card-form',local: true do |f| %>
<%= render 'layouts/error_messages', model: @order %>
<div class='form-wrap'>
<%= f.label :price, "金額" %>
<%= f.text_field :price, class:"price", placeholder:"例)2000" %>
</div>
<div class='form-wrap'>
<%= f.label :number, "カード番号" %>
<%= f.text_field :number, class:"number", placeholder:"カード番号(半角英数字)", maxlength:"16" %>
</div>
<div class='form-wrap'>
<%= f.label :cvc ,"CVC" %>
<%= f.text_field :cvc, class:"cvc", placeholder:"カード背面4桁もしくは3桁の番号", maxlength:"4" %>
</div>
<div class='form-wrap'>
<p>有効期限</p>
<div class='input-expiration-date-wrap'>
<%= f.text_field :exp_month, class:"exp_month", placeholder:"例)3" %>
<p>月</p>
<%= f.text_field :exp_year, class:"exp_year", placeholder:"例)24" %>
<p>年</p>
</div>
</div>
<%= f.submit "購入" ,class:"button" %>
<% end %>
②JavaScript의 처리를 무효로 하는 기능을 제거한다
수동으로 JavaScript를 작성하여 양식 제출 처리 등을 구현하는 경우이 turbolinks가 처리를 무효화 할 수 있습니다.
다음 두 파일을 편집하여 turbolinks를 사용하지 마십시오.
application.html.erb
<%# 省略 %>
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_pack_tag 'application' %>
<%# 省略 %>
app/javascript/packs/application.js
// 省略
require("@rails/ujs").start()
// require("turbolinks").start() // コメントアウトする
require("@rails/activestorage").start()
require("channels")
// 省略
③payjp.js 로드
브라우저에서 애플리케이션을 열면 payjp.js가 로드됩니다.
app/views/layouts/application.html.erb
<%# 省略 %>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<script type="text/javascript" src="https://js.pay.jp/v1/"></script>
<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_pack_tag 'application' %>
<%# 省略 %>
④card.js를 작성
app/javascript/card.js 만들기
application.js에 card.js를 로드하기 위한 설명을 해보자. 다음과 같이 편집
app/javascript/packs/application.js
// 省略
require("@rails/ujs").start()
// require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("../card")
// 省略
이상 도입편비망록
Reference
이 문제에 관하여(PAY.JP의 API를 이용한 크레디트 결제 기능을 구현(도입편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mr0216/items/59d69a130328e161955f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)