OmiseのテストカードのGem作りました
Omiseのテストカードをウェブサイトから調べる手間を省く方法としてGem(omise_test_cards)を公開しました。
omise_test_cards のインストール
gem install omise_test_cards
Pryでちょっと動かしてみる
cards = OmiseTestCards.test_cards cards.successful_charge.code # => "successful_charge" cards.successful_charge.description # => "these credit card numbers can be used in test mode" cards.successful_charge.cards # => <Hashie::Array [#<Hashie::Mash brand="Visa" number="4242424242424242">, #<Hashie::Mash brand="Visa" number="4111111111111111">, #<Hashie::Mash brand="MasterCard" number="5555555555554444">, #<Hashie::Mash brand="MasterCard" number="5454545454545454">, #<Hashie::Mash brand="JCB" number="3530111333300000">, #<Hashie::Mash brand="JCB" number="3566111111111113">]> cards.successful_charge.cards.first.brand # => Visa cards.successful_charge.cards.first.number # => 4242424242424242
ちなみに、Omiseのテストカードは10種類のステータス別のカードがあります。
cards = OmiseTestCards.test_cards cards.successful_charge cards.invalid_security_code cards.fail_3ds_card_enrollment cards.fail_3ds_card_validation cards.insufficient_fund cards.stolen_or_lost_card cards.failed_processing cards.payment_rejected cards.failed_fraud_check cards.invalid_account_number
このうちの cards.successful_charge
に含まれるカードのいずれも、正常にテストでChargeができるカードになります。
それ以外のカードは、利用できないステータスなので、charge.paid?
でChargeに失敗して入れば、 charge.failure_code
を見て、エラー処理を入れてあげるといいでしょう!
Omise RubyライブラリはOmiseErrorをraiseするので、こんな感じでテストするといいですね。
require "omise" require "omise_test_cards" Omise.api_key = "SET_YOUR_TEST_SECRET_KEY" Omise.vault_key = "SET_YOUR_TEST_PUBLIC_KEY" # get sampla card sample_card = OmiseTestCards.test_cards.successful_charge.cards.first begin # create token token = Omise::Token.create(card: { name: "TARO OMISE", number: sample_card.number, expiration_month: 3, expiration_year: 2019, city: "Tokyo", postal_code: "1510051", security_code: 123 }) # Charge 100000 JPY charge = Omise::Charge.create({ amount: 100_000, currency: "jpy", card: token.id }) if charge.paid # handle success puts "thanks" else # handle failure raise charge.failure_code end rescue OmiseError => e # handle OmiseError raised by omise library raise e.message end