Posted at

OmiseのテストカードのGem作りました

More than 1 year has passed since last update.

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
sampel_card = OmiseTestCards.test_cards.successful_charge.cards.first

begin
# create token
token = Omise::Token.create(card: {
name: "TARO OMISE",
number: sampel_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


リンク