おーしまブログ

プログラミングやってます

<Ruby on Rails>PAY.JPの秘密鍵の使い方

こんにちは、おーしまです。

TECH:CHAMPの最終課題も大詰めで、商品購入に差し掛かり、クレジットカードでユーザーに商品を購入してもらうところまでやって参りました。
今回はPAY.JPの秘密鍵について解説します。


まず、PAY.JPの説明を簡単にします。
PAY.JPとは、クレジットカードの決済代行サービスの1つで、外部APIです。クレジットカードを用いて、ネットで売買を行おうとしたとき、クレジットカードの情報を絶対に外部に漏らしてはいけないのですが、そのセキュリティを担保してくれるのが、クレジット決済代行サービスです。絶対に情報を漏らさないようにするのは、色々大変なので、代行サービスを使うのが一般的らしいです。


カニズムはとしては、直接クレジットカード会社と情報のやり取りをするのではなく、まず代行サービスにクレジットカードの情報を暗号化してもらい、その暗号化した情報を代行サービスに渡して、代行サービスがクレジットカード会社とやり取りをしてくれるといったものです。

f:id:tomo_bb_aki0118115:20201021002851p:plain


そして、秘密鍵とは、サーバーサイドから暗号化した情報を代行サービスへ情報を渡す際に、一緒に渡す鍵のことです。
秘密鍵がなければ、代行サービスに情報を渡しても、クレジット決済を行なってくれません。



コードです。

Payjp.api_key = ENV["PAYJP_SECRET_KEY"]
Payjp::Charge.create(
amount: price,
card: buyer_params[:token],
currency: 'jpy'
)

クレジット決済代行サービスに渡すものは、

  • 秘密鍵
  • 取引する金額
  • クレジットカード情報
  • 通過の種類

の4つです。

秘密鍵
Payjp.api_key = ENV["PAYJP_SECRET_KEY"]

PAYJPのGemを導入して、Payjpクラスのapi_keyに秘密鍵を代入しています。秘密鍵環境変数をを用いて、中身がわからないようにしなくてはいけないので、上記のようになっています。

取引する金額、クレジットカード情報、通過の種類
Payjp::Charge.create(
amount: price,
card: token,
currency: 'jpy'
)

Payjp::Chage.createに取引する金額、クレジットカード情報、通過の種類の3つの情報を入れます。
amount  に取引する金額、
card   にクレジットカード情報のトーク
currency に通貨の種類(jpyは"円")
を入れています。


トークとは、セキュリティを担保するために用いられるパスワードで、一度しか解除する事はできません。つまり、一度トークンからクレジットカードの情報を出して、決済をすると、もう情報は取り出せなくなるので、誰かにトークンの情報を奪われても大丈夫というものです。

カード情報をトークン化するには、先に一度、代行サービスとやり取りをしなければいけませんが、そのやり方はまた今度にします。



今回はここまでです。
それではまた^^

ここはどこ おれはだれ それに近いものがあんだよ 始めようとした奴らも迷い始めてる 怖がらせないでよ そりゃ甘くはないけど まだまだ 夢見ていい世界なんでしょ {UVERwould「ハイ!問題作」}