Class: ActiveMerchant::Billing::GmoPgGateway

Inherits:
Gateway
  • Object
show all
Defined in:
lib/active_merchant/billing/gateways/gmo_pg.rb,
lib/active_merchant/billing/gateways/gmo_pg_error_messages.rb

Constant Summary collapse

STANDARD_ERROR_CODE_MAPPING =
{
  'E01' => STANDARD_ERROR_CODE[:invalid_number],
  'E11' => STANDARD_ERROR_CODE[:card_declined],
  'E61' => STANDARD_ERROR_CODE[:invalid_cvc],
  'E91' => STANDARD_ERROR_CODE[:processing_error]
}.freeze
MEMBER_NOT_FOUND_ERROR =

GMO-PGエラーコード

'E01390002'
GMO_PG_OFFICIAL_ERROR_MESSAGES =

GMO-PGオフィシャルエラーコードとお客様向けメッセージの対応表 簡略コード(E01, G02等)と詳細コード(E01010001, 42G020000等)の両方を含む

{
  '42C010000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C030000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C120000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C130000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C140000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C150000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C330000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C500000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C510000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C530000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C540000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C550000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C560000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C570000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C580000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C600000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C700000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C710000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C720000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C730000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C740000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C750000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C760000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C770000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42C780000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  '42G020000' => 'カード残高が不足しているために、決済を完了する事ができませんでした。',
  '42G030000' => 'カード限度額を超えているために、決済を完了する事ができませんでした。',
  '42G040000' => 'カード残高が不足しているために、決済を完了する事ができませんでした。',
  '42G050000' => 'カード限度額を超えているために、決済を完了する事ができませんでした。',
  '42G060000' => 'デビットカードで口座の残高が不足しています。',
  '42G070000' => 'カード限度額を超えているために、決済を完了する事ができませんでした。',
  '42G120000' => 'このカードでは取引をする事ができません。',
  '42G220000' => 'このカードでは取引をする事ができません。',
  '42G300000' => 'このカードでは取引をする事ができません。',
  '42G420000' => '暗証番号が誤っていた為に、決済を完了する事ができませんでした。',
  '42G430000' => '暗証番号が誤っていた為に、決済を完了する事ができませんでした。',
  '42G440000' => 'セキュリティーコードが誤っていた為に、決済を完了する事ができませんでした。',
  '42G450000' => 'セキュリティーコードが入力されていない為に、決済を完了する事ができませんでした。',
  '42G540000' => 'このカードでは取引をする事ができません。',
  '42G550000' => 'カード限度額を超えているために、決済を完了する事ができませんでした。',
  '42G560000' => 'このカードでは取引をする事ができません。',
  '42G600000' => 'このカードでは取引をする事ができません。',
  '42G610000' => 'このカードでは取引をする事ができません。',
  '42G650000' => 'カード番号もしくは有効期限に誤りがあります。カード情報をもう一度ご確認ください。',
  '42G670000' => '商品コードに誤りがあるために、決済を完了する事ができませんでした。',
  '42G680000' => '金額に誤りがあるために、決済を完了する事ができませんでした。',
  '42G690000' => '税送料に誤りがあるために、決済を完了する事ができませんでした。',
  '42G700000' => 'ボーナス回数に誤りがあるために、決済を完了する事ができませんでした。',
  '42G710000' => 'ボーナス月に誤りがあるために、決済を完了する事ができませんでした。',
  '42G720000' => 'ボーナス額に誤りがあるために、決済を完了する事ができませんでした。',
  '42G730000' => '支払開始月に誤りがあるために、決済を完了する事ができませんでした。',
  '42G740000' => '分割回数に誤りがあるために、決済を完了する事ができませんでした。',
  '42G750000' => '分割金額に誤りがあるために、決済を完了する事ができませんでした。',
  '42G760000' => '初回金額に誤りがあるために、決済を完了する事ができませんでした。',
  '42G770000' => '業務区分に誤りがあるために、決済を完了する事ができませんでした。',
  '42G780000' => '支払区分に誤りがあるために、決済を完了する事ができませんでした。',
  '42G790000' => '照会区分に誤りがあるために、決済を完了する事ができませんでした。',
  '42G800000' => '取消区分に誤りがあるために、決済を完了する事ができませんでした。',
  '42G810000' => '取消取扱区分に誤りがあるために、決済を完了する事ができませんでした。',
  '42G830000' => '有効期限に誤りがあるために、決済を完了する事ができませんでした。',
  '42G840000' => 'このカードでは取引をする事ができません。',
  '42G850000' => '利用口座が使用できなかったために、決済を完了する事ができませんでした。',
  '42G910000' => 'システム障害のために、決済を完了する事ができませんでした。',
  '42G920000' => 'このカードでは取引をする事ができません。',
  '42G950000' => 'このカードでは取引をする事ができません。',
  '42G960000' => 'このカードでは取引をする事ができません。',
  '42G970000' => 'このカードでは取引をする事ができません。',
  '42G980000' => 'このカードでは取引をする事ができません。',
  '42G990000' => 'このカードでは取引をする事ができません。',
  'C01' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C03' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C12' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C13' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C14' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C15' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C33' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C50' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C51' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C53' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C54' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C55' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C56' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C57' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C58' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C60' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C70' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C71' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C72' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C73' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C74' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C75' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C76' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C77' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'C78' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'E01' => 'ショップIDが指定されていません。',
  'E01010001' => 'ショップIDが指定されていません。',
  'E01010008' => 'ショップIDに半角英数字以外の文字が含まれているか、13文字を超えています。',
  'E01010010' => 'ショップIDが一致しません。',
  'E01020001' => 'ショップパスワードが指定されていません。',
  'E01020008' => 'ショップパスワードに半角英数字以外の文字が含まれているか、10文字を超えています。',
  'E01030002' => '指定されたIDとパスワードのショップが存在しません。',
  'E01030061' => '強制返品はご利用できません。',
  'E01040001' => 'オーダーIDが指定されていません。',
  'E01040003' => 'オーダーIDが最大文字数を超えています。',
  'E01040010' => 'すでにオーダーIDが存在しています。',
  'E01040013' => 'オーダーIDに半角英数字と"-"以外の文字が含まれています。',
  'E01050001' => '処理区分が指定されていません。',
  'E01050002' => '指定された処理区分は定義されていません。',
  'E01050004' => '指定した処理区分の処理は実行できません。',
  'E01060001' => '利用金額が指定されていません。',
  'E01060005' => '利用金額が最大桁数を超えています。',
  'E01060006' => '利用金額に数字以外の文字が含まれています。',
  'E01060010' => '取引の利用金額と指定した利用金額が一致していません。',
  'E01060011' => '利用金額が有効な範囲を超えています。',
  'E01060021' => '取引の利用金額と指定した利用金額が一致していません。',
  'E01070005' => '税送料が最大桁数を超えています。',
  'E01070006' => '税送料に数字以外の文字が含まれています。',
  'E01080007' => '3Dセキュア使用フラグに0,1,2以外の値が指定されています。',
  'E01080010' => '3Dセキュア使用フラグ(TdFlag)の指定が、3Dセキュアの契約と一致していません。
※3DS1.0契約なしで3DS1.0利用
 3DS1.0契約で3DS2.0利用など。',
  'E01080101' => '3DS必須店舗または、3DS必須タイプにて3DS必須の指定にも関わらず3Dセキュア使用フラグがOFFになっています。',
  'E01090001' => '取引IDが指定されていません。',
  'E01090008' => '取引IDの書式が正しくありません。',
  'E01100001' => '取引パスワードが指定されていません。',
  'E01100008' => '取引パスワードの書式が正しくありません。',
  'E01110002' => '指定されたIDとパスワードの取引が存在しません。',
  'E01110010' => '指定された取引は決済が完了していません。',
  'E01130012' => 'カード会社略称が最大バイト数を超えています。',
  'E01160001' => 'ボーナス分割回数が指定されていません。',
  'E01160007' => 'ボーナス分割回数に数字以外の文字が含まれています。',
  'E01160010' => 'ボーナス分割回数に"2"以外を指定しています。',
  'E01170001' => 'カード番号が指定されていません。',
  'E01170003' => 'カード番号が最大文字数を超えています。',
  'E01170006' => 'カード番号に数字以外の文字が含まれています。',
  'E01170011' => 'カード番号が10桁~16桁の範囲ではありません。',
  'E01180001' => '有効期限が指定されていません。',
  'E01180003' => '有効期限が4桁ではありません。',
  'E01180006' => '有効期限に数字以外の文字が含まれています。',
  'E01180008' => '有効期限の書式が正しくありません。',
  'E01180011' => '有効期限の書式が正しくありません。',
  'E01190001' => 'サイトIDが指定されていません。',
  'E01190008' => 'サイトIDの書式が正しくありません。',
  'E01200001' => 'サイトパスワードが指定されていません。',
  'E01200007' => 'サイトIDが正しくありません。',
  'E01200008' => 'サイトパスワードの書式が正しくありません。',
  'E01210002' => '指定されたIDとパスワードのサイトが存在しません。',
  'E01220001' => '会員IDが指定されていません。',
  'E01220005' => '会員IDが最大桁数を超えています。',
  'E01220008' => '会員IDの書式が正しくありません。',
  'E01220010' => '会員IDとカード番号が一致しています。',
  'E01220012' => '会員IDの長さが正しくありません。',
  'E01230001' => 'カード登録連番が指定されていません。',
  'E01230006' => 'カード登録連番に数字以外の文字が含まれています。',
  'E01230009' => 'カード登録連番が最大登録可能数を超えています。',
  'E01240002' => '指定されたカードが存在しません。',
  'E01240012' => '指定された会員IDがファイル内で重複しています(※洗替時)',
  'E01250008' => 'カードパスワードの書式が正しくありません。',
  'E01250010' => 'カードパスワードが一致しません。',
  'E01260001' => '支払方法が指定されていません。',
  'E01260002' => '指定された支払方法が存在しません。',
  'E01260010' => '指定されたカード番号または支払方法が正しくありません。',
  'E01270001' => '支払回数が指定されていません。',
  'E01270005' => '支払回数が最大桁数を超えています。',
  'E01270006' => '支払回数の数字以外の文字が含まれています。',
  'E01270010' => '指定された支払回数はご利用できません。',
  'E01290001' => 'HTTP_ACCEPTが指定されていません。',
  'E01300001' => 'HTTP_USER_AGENTが指定されていません。',
  'E01310001' => '使用端末に"0","1"以外の値が指定されています。',
  'E01320012' => '加盟店自由項目1の値が最大バイト数を超えています。',
  'E01320013' => '加盟店自由項目1の値に利用できない文字が含まれています。',
  'E01330012' => '加盟店自由項目2の値が最大バイト数を超えています。',
  'E01330013' => '加盟店自由項目2の値に利用できない文字が含まれています。',
  'E01340012' => '加盟店自由項目3の値が最大バイト数を超えています。',
  'E01340013' => '加盟店自由項目3の値に利用できない文字が含まれています。',
  'E01350001' => 'MDが指定されていません。',
  'E01350008' => 'MDの書式が正しくありません。',
  'E01370008' => '3Dセキュア表示店舗名の書式が正しくありません。',
  'E01370012' => '3Dセキュア表示店舗名の値が最大バイト数を超えています。',
  'E01390002' => '指定されたサイトIDと会員IDの会員が存在しません。',
  'E01390010' => '指定されたサイトIDと会員IDの会員がすでに存在しています。',
  'E01400007' => '加盟店自由項目返却フラグに"0","1"以外の値が指定されています。',
  'E01410010' => '該当取引は操作禁止状態です。',
  'E01420010' => '仮売上有効期間を超えています。',
  'E01430010' => '会員名とカード番号が一致しています。',
  'E01430012' => '会員名の値が最大バイト数を超えています。',
  'E01440008' => '洗替・継続課金フラグの書式が正しくありません。',
  'E01450008' => '商品コードの書式が正しくありません。',
  'E01460008' => 'セキュリティコードの書式が正しくありません。',
  'E01470008' => 'カード登録連番モードの書式が正しくありません。',
  'E01480008' => '名義人の書式が正しくありません。',
  'E01480011' => '名義人の最大文字数を超えています。',
  'E01490005' => '利用金額・税送料の合計値が有効な範囲を超えています。',
  'E01500001' => 'ショップ情報文字列が設定されていません。',
  'E01500005' => 'ショップ情報文字列の文字数が間違っています。',
  'E01500012' => 'ショップ情報文字列が他の項目と矛盾しています。',
  'E01510001' => '購買情報文字列が設定されていません。',
  'E01510005' => '購買情報文字列の文字数が間違っています。',
  'E01510010' => '利用日の書式が正しくありません。',
  'E01510011' => '利用日の値が指定可能範囲外です。',
  'E01510012' => '購買情報文字列が他の項目と矛盾しています。',
  'E01520002' => 'お客様利用端末情報に無効な値が設定されています。',
  'E01530001' => '決済結果戻り先URLが設定されていません。',
  'E01530005' => '決済結果戻り先URLが最大文字数を超えています。',
  'E01540005' => '決済キャンセル時URLが最大文字数を超えています。',
  'E01550001' => '日時情報文字列が設定されていません。',
  'E01550005' => '日時情報文字列の文字数が間違っています。',
  'E01550006' => '日時情報文字列に無効な文字が含まれます。',
  'E01590005' => '商品コードが最大桁数を超えています。',
  'E01590006' => '商品コードに無効な文字が含まれます。',
  'E01600001' => '会員情報チェック文字列が設定されていません。',
  'E01600005' => '会員情報チェック文字列が最大文字数を超えています。',
  'E01600012' => '会員情報チェック文字列が他の項目と矛盾しています。',
  'E01610005' => 'リトライ回数が0~99の範囲外です。',
  'E01610006' => 'リトライ回数に数字以外が設定されています。',
  'E01620005' => 'セッションタイムアウト値が0~9999の範囲外です。',
  'E01620006' => 'セッションタイムアウト値に数字以外が設定されています。',
  'E01630010' => '取引後カード登録時、取引の会員IDとパラメータの会員IDが一致しません。',
  'E01640010' => '取引後カード登録時、取引のサイトIDとパラメータのサイトIDが一致しません。',
  'E01650012' => '指定されたショップは、指定されたサイトに属していません。',
  'E01660013' => '言語パラメータにサポートされない値が設定されています。',
  'E01670013' => '出力エンコーディングにサポートされない値が設定されています。',
  'E01700001' => '項目数が誤っています。',
  'E01710001' => '取引区分(継続課金)が設定されていません。',
  'E01710002' => '指定された取引区分が存在しません。',
  'E01730001' => 'ボーナス金額が指定されていません。',
  'E01730005' => 'ボーナス金額が最大桁数を超えています。',
  'E01730006' => '商品コードが"0000990"ではありません。',
  'E01730007' => 'ボーナス金額に数字以外の文字が含まれています。',
  'E01740001' => '端末処理通番が指定されていません。',
  'E01740005' => '端末処理通番が最大桁数を超えています。',
  'E01740007' => '端末処理通番に数字以外の文字が含まれています。',
  'E01750001' => '利用日が指定されていません。',
  'E01750008' => '利用日の書式が正しくありません。',
  'E01770002' => '区分が不正です。',
  'E01780002' => '有効性チェック有無が不正です。',
  'E01790007' => 'チェック実施日が不正です。',
  'E01790011' => 'チェック実施日が最大桁数を超えています。',
  'E01800001' => '暗証番号が未入力です。',
  'E01800008' => '暗証番号の書式が正しくありません。',
  'E01800010' => '暗証番号は利用できません。',
  'E01800050' => '暗証番号が不正です。(0000は使用できません)',
  'E01810001' => '磁気ストライプ区分が不正です。',
  'E01810008' => '磁気ストライプ区分が不正です。',
  'E01820001' => '磁気ストライプ情報が不正です。',
  'E01820003' => '磁気ストライプ情報が不正です。',
  'E01820008' => '磁気ストライプ情報が不正です。',
  'E01840010' => '必要な入力パラメータが指定されていません。',
  'E01850008' => '更新区分の書式が正しくありません。',
  'E01860008' => 'カード番号マスクフラグの書式が正しくありません。',
  'E01870008' => 'トークンタイプの書式が正しくありません。',
  'E01880001' => '登録済み会員IDが指定されていません。',
  'E01880002' => '指定されたサイトIDと登録済み会員IDの会員が存在しません。',
  'E01880008' => '登録済み会員IDの書式が正しくありません。',
  'E01890001' => '登録済みカード登録連番が指定されていません。',
  'E01890002' => '指定された登録済みカードが存在しません。',
  'E01890006' => '登録済みカード登録連番に数字以外の文字が含まれています。',
  'E01890009' => 'カード登録連番が最大登録可能数を超えています。',
  'E01910008' => 'サイト設定のマスクレベル利用有無に"0","1"以外の値が指定されています。',
  'E01920008' => '検索タイプの書式が正しくありません。',
  'E01950008' => '3DS2.0未対応時取り扱いの書式が正しくありません。',
  'E01960008' => '会員最終更新日の書式が正しくありません。',
  'E01970008' => '会員作成日の書式が正しくありません。',
  'E01980008' => '会員パスワード変更日の書式が正しくありません。',
  'E01990005' => '過去6ヶ月間の購入回数が最大桁数を超えています。',
  'E01990006' => '過去6ヶ月間の購入回数に数字以外の文字が含まれています。',
  'E01999998' => '項目1「フォーマットバージョン」に"001"が指定されていません。',
  'E01A00008' => 'カード登録日の書式が正しくありません。',
  'E01A10005' => '過去24時間のカード追加の試行回数が最大桁数を超えています。',
  'E01A10006' => '過去24時間のカード追加の試行回数に数字以外の文字が含まれています。',
  'E01A20008' => '配送先住所の初回使用日の書式が正しくありません。',
  'E01A30008' => 'カード会員名と配送先名の一致/不一致の書式が正しくありません。',
  'E01A40008' => 'カード会員の不審行為情報の書式が正しくありません。',
  'E01A50005' => '過去24時間の取引回数が最大桁数を超えています。',
  'E01A50006' => '過去24時間の取引回数に数字以外の文字が含まれています。',
  'E01A60005' => '前年の取引回数が最大桁数を超えています。',
  'E01A60006' => '前年の取引回数に数字以外の文字が含まれています。',
  'E01A70012' => 'ログイン証跡が最大バイト数を超えています。',
  'E01A80008' => 'ログイン方法の書式が正しくありません。',
  'E01A90008' => 'ログイン日時の書式が正しくありません。',
  'E01B00008' => '請求先住所と配送先住所の一致/不一致の書式が正しくありません。',
  'E01B10005' => '請求先住所の都市が最大桁数を超えています。',
  'E01B20002' => '請求先住所の国番号が存在しません。',
  'E01B20005' => '請求先住所の国番号が3桁ではありません。',
  'E01B30005' => '請求先住所の区域部分の1行目が最大桁数を超えています。',
  'E01B40005' => '請求先住所の区域部分の2行目が最大桁数を超えています。',
  'E01B50005' => '請求先住所の区域部分の3行目が最大桁数を超えています。',
  'E01B60005' => '請求先住所の郵便番号が最大桁数を超えています。',
  'E01B70005' => '請求先住所の州または都道府県番号が最大桁数を超えています。',
  'E01B70008' => '請求先住所の州または都道府県番号の書式が正しくありません。',
  'E01B70010' => '請求先住所の州または都道府県番号を指定する場合は請求先住所の国番号を省略できません。',
  'E01B80005' => 'カード会員のメールアドレスが最大桁数を超えています。',
  'E01B80008' => 'カード会員のメールアドレスの書式が正しくありません。',
  'E01B90005' => '自宅電話の国コードが最大桁数を超えています。',
  'E01C00005' => '自宅電話番号が最大桁数を超えています。',
  'E01C00006' => '自宅電話番号に数字以外の文字が含まれています。',
  'E01C10005' => '携帯電話の国コードが最大桁数を超えています。',
  'E01C20005' => '携帯電話番号が最大桁数を超えています。',
  'E01C20006' => '携帯電話番号に数字以外の文字が含まれています。',
  'E01C30005' => '職場電話の国コードが最大桁数を超えています。',
  'E01C40005' => '職場電話番号が最大桁数を超えています。',
  'E01C40006' => '職場電話番号に数字以外の文字が含まれています。',
  'E01C50005' => '配送先住所の都市が最大桁数を超えています。',
  'E01C60002' => '配送先住所の国番号が存在しません。',
  'E01C60005' => '配送先住所の国番号が3桁ではありません。',
  'E01C70005' => '配送先住所の区域部分の1行目が最大桁数を超えています。',
  'E01C80005' => '配送先住所の区域部分の2行目が最大桁数を超えています。',
  'E01C90005' => '配送先住所の区域部分の3行目が最大桁数を超えています。',
  'E01D00005' => '配送先住所の郵便番号が最大桁数を超えています。',
  'E01D10005' => '配送先住所の州または都道府県番号の書式が正しくありません。',
  'E01D10008' => '配送先住所の州または都道府県番号が最大桁数を超えています。',
  'E01D10010' => '配送先住所の州または都道府県番号を指定する場合は配送先住所の国番号を省略できません。',
  'E01D20005' => '納品先電子メールアドレスが最大桁数を超えています。',
  'E01D20008' => '納品先電子メールアドレスの書式が正しくありません。',
  'E01D30008' => '商品納品時間枠の書式が正しくありません。',
  'E01D40005' => 'プリペイドカードまたはギフトカードの総購入金額が最大桁数を超えています。',
  'E01D40006' => 'プリペイドカードまたはギフトカードの総購入金額に数字以外の文字が含まれています。',
  'E01D50005' => '購入されたプリペイドカードまたはギフトカード の総数が最大桁数を超えています。',
  'E01D50006' => '購入されたプリペイドカードまたはギフトカード の総数に数字以外の文字が含まれています。',
  'E01D60005' => '購入されたプリペイドカードまたはギフトカードの通貨コードが3桁ではありません。',
  'E01D70008' => '商品の発売予定日の書式が正しくありません。',
  'E01D80008' => '商品の販売時期情報の書式が正しくありません。',
  'E01D90008' => '商品の注文情報の書式が正しくありません。',
  'E01E00008' => '取引の出荷方法の書式が正しくありません。',
  'E01E10008' => '継続課金の期限の書式が正しくありません。',
  'E01E20005' => '継続課金の課金最小間隔日数が最大桁数を超えています。',
  'E01E20006' => '継続課金の課金最小間隔日数に数字以外の文字が含まれています。',
  'E01E30001' => '加盟店戻りURLが指定されていません。',
  'E01E30005' => '加盟店戻りURLが最大桁数を超えています。',
  'E01E30008' => '加盟店戻りURLの書式が正しくありません。',
  'E01E50001' => '認証状態が指定されていません。',
  'E01E50004' => '認証状態が不正のため実行できません。',
  'E01E50008' => '認証状態の書式が正しくありません。',
  'E01E70001' => '自宅電話番号の指定が正しくありません。自宅電話の国コード/自宅電話番号のいずれかの省略はできません。',
  'E01E80001' => '携帯電話番号の指定が正しくありません。携帯電話の国コード/携帯電話番号のいずれかの省略はできません。',
  'E01E90001' => '職場電話番号の指定が正しくありません。職場電話の国コード/職場電話番号のいずれかの省略はできません。',
  'E01EA0007' => 'コールバック方法に1,2以外の値が指定されています。',
  'E01EA0010' => 'コールバック方法に1,2以外の値が指定されています。',
  'E01EB0001' => '3DS2.0認証パラメータが指定されていません。',
  'E01EB0005' => '3DS2.0認証パラメータが最大桁数を超えています。',
  'E01EB0010' => '3DS2.0認証パラメータが不正です。',
  'E01EC0002' => '指定された3DS SDK インタフェースは定義されていません。',
  'E01EE0001' => 'アプリIDが指定されていません。',
  'E01EE0008' => 'アプリIDの書式が正しくありません。',
  'E01EF0001' => '3DS2.0暗号化データが指定されていません。',
  'E01EF0005' => '3DS2.0暗号化データが最大桁数を超えています。',
  'E01EG0001' => '3DS2.0 JWSが指定されていません。',
  'E01EG0008' => '3DS2.0 JWSの書式が正しくありません。',
  'E01EV0001' => '最大タイムアウトが指定されていません。',
  'E01EV0006' => '最大タイムアウトに数字以外の文字が含まれています。',
  'E01EV0008' => '最大タイムアウトの書式が正しくありません。',
  'E01EW0001' => 'リファレンス番号が指定されていません。',
  'E01EW0005' => 'リファレンス番号が最大桁数を超えています。',
  'E01EX0001' => 'SDK取引IDが指定されていません。',
  'E01EX0008' => 'SDK取引IDの書式が正しくありません。',
  'E01EY0007' => 'モバイルアプリモードの指定が正しくありません。',
  'E01EZ0008' => '3DS必須タイプの書式が正しくありません。',
  'E11' => 'この取引はすでに決済が終了しています。',
  'E11010001' => 'この取引はすでに決済が終了しています。',
  'E11010002' => 'この取引は決済が終了していませんので、変更する事ができません。',
  'E11010003' => 'この取引は指定処理区分処理を行う事ができません。',
  'E11010004' => '指定された取引のコールバック方法またはモバイルアプリモードが不正です。',
  'E11010010' => '180日超えの取引のため、処理を行う事ができません。',
  'E11010099' => 'このカードはご利用になれません。',
  'E11010100' => 'このカードはご利用になれません。',
  'E11010999' => '特になし',
  'E11310001' => 'この取引はリンク決済を実行できません。',
  'E11310002' => 'この取引はリンク決済を実行できません。',
  'E11310003' => 'この取引はリンク決済を実行できません。',
  'E11310004' => 'この取引はリンク決済を実行できません。',
  'E11310005' => 'すでにカードを登録している会員は、取引後カード登録を実行できません。',
  'E21' => 'このカードでは取引をする事ができません。3Dセキュア認証に対応したカードをお使いください。',
  'E21010201' => 'このカードでは取引をする事ができません。3Dセキュア認証に対応したカードをお使いください。',
  'E21010202' => 'このカードでは取引をする事ができません。3Dセキュア認証に対応したカードをお使いください。',
  'E21030001' => '3Dセキュア認証に失敗しました。もう一度、購入画面からやり直してください。',
  'E21030007' => '3Dセキュア認証に失敗しました。もう一度、購入画面からやり直してください。',
  'E21030201' => 'このカードでは取引をする事ができません。3Dセキュア認証に対応したカードをお使いください。',
  'E21030202' => '3Dセキュア認証に失敗しました。認証失敗の理由については、カード会社へご確認ください。',
  'E21040001' => '3DS1.0はサポートを終了しましたが、サポート終了後の取り扱いが設定されていないため、取引を中止しました。',
  'E21040002' => '3DS1.0はサポートを終了したためご利用になれません。',
  'E41' => 'カード番号に誤りがあります。再度確認して入力してください。',
  'E41170099' => 'カード番号に誤りがあります。再度確認して入力してください。',
  'E61' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'E61010001' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'E61010002' => 'ご利用できないカードをご利用になったもしくはカード番号が誤っております。',
  'E61010003' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'E61020001' => '指定の決済方法は利用停止になっています。',
  'E61030001' => 'ご契約内容エラー/現在のご契約では、ご利用になれません。',
  'E61040001' => '現在のご契約では、カード番号を指定した決済処理は許可されていません。',
  'E82' => '実行中にエラーが発生しました。処理は開始されませんでした。',
  'E82010001' => '実行中にエラーが発生しました。処理は開始されませんでした。',
  'E90' => '現在処理を行っているのでもうしばらくお待ちください。',
  'E90010001' => '現在処理を行っているのでもうしばらくお待ちください。',
  'E91' => 'システムの内部エラーです。発生時刻や呼び出しパラメータをご確認のうえ、お問い合わせください。',
  'E91019999' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'E91020001' => '通信タイムアウトが発生しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'E91029998' => '決済処理に失敗しました。
      該当のお取引について、店舗までお問い合わせください。',
  'E91029999' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'E91060001' => 'システムの内部エラーです。発生時刻や呼び出しパラメータをご確認のうえ、お問い合わせください。',
  'E91099996' => 'システムの内部エラーです。発生時刻や呼び出しパラメータをご確認のうえ、お問い合わせください。',
  'E91099997' => 'リクエストされたAPIは存在しません。URLをお確かめください。',
  'E91099999' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。',
  'E92' => '只今、大変込み合っていますので、しばらく時間をあけて再度決済を行ってください。',
  'E92000001' => '只今、大変込み合っていますので、しばらく時間をあけて再度決済を行ってください。',
  'E92000002' => '只今、大変込み合っていますので、しばらく時間をあけて再度決済を行ってください。',
  'EX1' => '決済処理に失敗しました。もう一度カード番号を入力してください。',
  'EX1000301' => '決済処理に失敗しました。もう一度カード番号を入力してください。',
  'EX1000302' => '決済処理に失敗しました。もう一度カード番号を入力してください。',
  'EX1000303' => '決済処理に失敗しました。もう一度カード番号を入力してください。',
  'EX1000304' => '決済処理に失敗しました。もう一度カード番号を入力してください。',
  'G02' => 'カード残高が不足しているために、決済を完了する事ができませんでした。',
  'G03' => 'カード限度額を超えているために、決済を完了する事ができませんでした。',
  'G04' => 'カード残高が不足しているために、決済を完了する事ができませんでした。',
  'G05' => 'カード限度額を超えているために、決済を完了する事ができませんでした。',
  'G06' => 'デビットカードで口座の残高が不足しています。',
  'G07' => 'カード限度額を超えているために、決済を完了する事ができませんでした。',
  'G12' => 'このカードでは取引をする事ができません。',
  'G22' => 'このカードでは取引をする事ができません。',
  'G30' => 'このカードでは取引をする事ができません。',
  'G42' => '暗証番号が誤っていた為に、決済を完了する事ができませんでした。',
  'G43' => '暗証番号が誤っていた為に、決済を完了する事ができませんでした。',
  'G44' => 'セキュリティーコードが誤っていた為に、決済を完了する事ができませんでした。',
  'G45' => 'セキュリティーコードが入力されていない為に、決済を完了する事ができませんでした。',
  'G54' => 'このカードでは取引をする事ができません。',
  'G55' => 'カード限度額を超えているために、決済を完了する事ができませんでした。',
  'G56' => 'このカードでは取引をする事ができません。',
  'G60' => 'このカードでは取引をする事ができません。',
  'G61' => 'このカードでは取引をする事ができません。',
  'G65' => 'カード番号もしくは有効期限に誤りがあります。カード情報をもう一度ご確認ください。',
  'G67' => '商品コードに誤りがあるために、決済を完了する事ができませんでした。',
  'G68' => '金額に誤りがあるために、決済を完了する事ができませんでした。',
  'G69' => '税送料に誤りがあるために、決済を完了する事ができませんでした。',
  'G70' => 'ボーナス回数に誤りがあるために、決済を完了する事ができませんでした。',
  'G71' => 'ボーナス月に誤りがあるために、決済を完了する事ができませんでした。',
  'G72' => 'ボーナス額に誤りがあるために、決済を完了する事ができませんでした。',
  'G73' => '支払開始月に誤りがあるために、決済を完了する事ができませんでした。',
  'G74' => '分割回数に誤りがあるために、決済を完了する事ができませんでした。',
  'G75' => '分割金額に誤りがあるために、決済を完了する事ができませんでした。',
  'G76' => '初回金額に誤りがあるために、決済を完了する事ができませんでした。',
  'G77' => '業務区分に誤りがあるために、決済を完了する事ができませんでした。',
  'G78' => '支払区分に誤りがあるために、決済を完了する事ができませんでした。',
  'G79' => '照会区分に誤りがあるために、決済を完了する事ができませんでした。',
  'G80' => '取消区分に誤りがあるために、決済を完了する事ができませんでした。',
  'G81' => '取消取扱区分に誤りがあるために、決済を完了する事ができませんでした。',
  'G83' => '有効期限に誤りがあるために、決済を完了する事ができませんでした。',
  'G84' => 'このカードでは取引をする事ができません。',
  'G85' => '利用口座が使用できなかったために、決済を完了する事ができませんでした。',
  'G91' => 'システム障害のために、決済を完了する事ができませんでした。',
  'G92' => 'このカードでは取引をする事ができません。',
  'G95' => 'このカードでは取引をする事ができません。',
  'G96' => 'このカードでは取引をする事ができません。',
  'G97' => 'このカードでは取引をする事ができません。',
  'G98' => 'このカードでは取引をする事ができません。',
  'G99' => 'このカードでは取引をする事ができません。',
  'M01' => '指定されたオーダーIDの取引はすでに決済を依頼しています。',
  'M01004014' => '指定されたオーダーIDの取引はすでに決済を依頼しています。',
  'M01039013' => '加盟店自由項目1に不正な文字が含まれています。',
  'M01040013' => '加盟店自由項目2に不正な文字が含まれています。',
  'M01041013' => '加盟店自由項目3に不正な文字が含まれています。'
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ GmoPgGateway

GMO-PGゲートウェイを初期化します

Parameters:

  • options (Hash) (defaults to: {})

    認証情報を含むオプション

Options Hash (options):

  • :shop_id (String)

    ショップID(必須)

  • :shop_pass (String)

    ショップパスワード(必須)

  • :site_id (String)

    サイトID(必須)

  • :site_pass (String)

    サイトパスワード(必須)

  • :test (Boolean)

    テスト環境を使用する場合はtrue



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/active_merchant/billing/gateways/gmo_pg.rb', line 37

def initialize(options = {})
  requires!(options, :shop_id, :shop_pass, :site_id, :site_pass)
  super

  host = test? ? 'pt01.mul-pay.jp' : 'p01.mul-pay.jp'

  @site_client = GMO::Payment::SiteAPI.new(
    site_id: @options[:site_id],
    site_pass: @options[:site_pass],
    host: host
  )

  @shop_client = GMO::Payment::ShopAPI.new(
    shop_id: @options[:shop_id],
    shop_pass: @options[:shop_pass],
    host: host
  )
end

Instance Method Details

#authorize(money, payment_source, options = {}) ⇒ Response

オーソリ(仮売上)を実行します 後でcaptureメソッドで売上計上する必要があります

Examples:

登録済みカードでオーソリ

gateway.authorize(1000, "user_001|0", { order_id: "order_123" })

トークンでオーソリ

gateway.authorize(1000, "token_string", { order_id: "order_123" })

Parameters:

  • money (Integer)

    金額(円単位)

  • payment_source (String, CreditCard)

    トークン、"member_id|card_seq"形式の識別子、またはクレジットカードオブジェクト

  • options (Hash) (defaults to: {})

    オプション

Options Hash (options):

  • :order_id (String)

    注文ID(省略時は自動生成)

  • :tax (Integer)

    税額

  • :method (Integer)

    支払方法(デフォルト: 1=一括払い)

  • :pay_times (Integer)

    分割回数

  • :ret_url (String)

    3DS認証後の戻りURL

  • :callback_type (String)

    コールバックタイプ

  • :td_tenant_name (String)

    3DSテナント名

  • :tds2_type (String)

    3DS2.0未対応時取り扱い(デフォルト: '3'=通常オーソリ実施)

  • :td_required (String)

    決済時3DS必須タイプ(デフォルト: '0'=契約内容に従う、'1'=3DS認証必須、'2'=3DS認証必須ではない)

  • :tds2_email (String)

    メールアドレス(3DS2.0用)

  • :tds2_mobile_phone_cc (String)

    携帯電話国コード(3DS2.0用)

  • :tds2_mobile_phone_no (String)

    携帯電話番号(3DS2.0用)

  • :tds2_ship_addr_city (String)

    配送先都市(3DS2.0用)

  • :tds2_ship_addr_country (String)

    配送先国(3DS2.0用)

  • :tds2_ship_addr_line1 (String)

    配送先住所1(3DS2.0用)

  • :tds2_ship_addr_post_code (String)

    配送先郵便番号(3DS2.0用)

  • :tds2_bill_addr_city (String)

    請求先都市(3DS2.0用)

  • :tds2_bill_addr_country (String)

    請求先国(3DS2.0用)

  • :tds2_bill_addr_line1 (String)

    請求先住所1(3DS2.0用)

  • :tds2_bill_addr_post_code (String)

    請求先郵便番号(3DS2.0用)

  • :tds2_home_phone_cc (String)

    自宅電話国コード(3DS2.0用)

  • :tds2_home_phone_no (String)

    自宅電話番号(3DS2.0用)

  • :tds2_work_phone_cc (String)

    勤務先電話国コード(3DS2.0用)

  • :tds2_work_phone_no (String)

    勤務先電話番号(3DS2.0用)

  • :tds2_ship_addr_line2 (String)

    配送先住所2(3DS2.0用)

  • :tds2_ship_addr_line3 (String)

    配送先住所3(3DS2.0用)

  • :tds2_ship_addr_state (String)

    配送先州/都道府県(3DS2.0用)

  • :tds2_bill_addr_line2 (String)

    請求先住所2(3DS2.0用)

  • :tds2_bill_addr_line3 (String)

    請求先住所3(3DS2.0用)

  • :tds2_bill_addr_state (String)

    請求先州/都道府県(3DS2.0用)

  • :tds2_ch_acc_change (String)

    アカウント変更インジケータ(3DS2.0用)

  • :tds2_ch_acc_date (String)

    アカウント作成日(3DS2.0用)

  • :tds2_ch_acc_pw_change (String)

    パスワード変更インジケータ(3DS2.0用)

  • :tds2_nb_purchase_account (String)

    購入回数(3DS2.0用)

  • :tds2_payment_acc_age (String)

    決済アカウント年齢(3DS2.0用)

  • :tds2_provision_attempts_day (String)

    プロビジョニング試行回数(3DS2.0用)

  • :tds2_ship_address_usage (String)

    配送先住所の使用状況(3DS2.0用)

  • :tds2_ship_name_ind (String)

    配送先名インジケータ(3DS2.0用)

  • :tds2_suspicious_acc_activity (String)

    不審なアクティビティインジケータ(3DS2.0用)

  • :tds2_txn_activity_day (String)

    1日あたりの取引数(3DS2.0用)

  • :tds2_txn_activity_year (String)

    1年あたりの取引数(3DS2.0用)

  • :tds2_three_ds_req_auth_data (String)

    3DS要求者認証データ(3DS2.0用)

  • :tds2_three_ds_req_auth_method (String)

    3DS要求者認証方法(3DS2.0用)

  • :tds2_three_ds_req_auth_timestamp (String)

    3DS要求者認証タイムスタンプ(3DS2.0用)

  • :tds2_acs_challenge_mandated (String)

    ACSチャレンジ必須(3DS2.0用)

  • :tds2_three_ds_req_prior_ref (String)

    3DS要求者事前参照(3DS2.0用)

Returns:

  • (Response)

    レスポンスオブジェクト。authorizationに"access_id|access_pass|order_id"形式の識別子が含まれます



209
210
211
212
213
214
215
216
217
# File 'lib/active_merchant/billing/gateways/gmo_pg.rb', line 209

def authorize(money, payment_source, options = {})
  perform_transaction(
    money,
    payment_source,
    'AUTH',
    'オーソリに成功しました',
    options.merge(tds2_type: options[:tds2_type] || '3', td_required: options[:td_required] || '0')
  )
end

#capture(money, authorization, options = {}) ⇒ Response

オーソリ済みの取引を売上計上します

Examples:

売上計上

response = gateway.authorize(1000, "user_001|0", { order_id: "order_123" })
gateway.capture(1000, response.authorization)

Parameters:

  • money (Integer)

    金額(円単位)

  • authorization (String)

    authorizeメソッドで取得した認証情報("access_id|access_pass|order_id"形式)

  • options (Hash) (defaults to: {})

    オプション

Options Hash (options):

  • :tax (Integer)

    税額

Returns:

  • (Response)

    レスポンスオブジェクト



295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
# File 'lib/active_merchant/billing/gateways/gmo_pg.rb', line 295

def capture(money, authorization, options = {})
  access_id, access_pass, order_id = split_authorization(authorization)
  return error_response('無効な認証情報です') unless access_id && access_pass

  begin
    alter_params = {
      access_id: access_id,
      access_pass: access_pass,
      job_cd: 'SALES',
      amount: amount(money)
    }
    alter_params[:tax] = options[:tax].to_i if options[:tax]
    alter_params[:shipping] = options[:shipping].to_i if options[:shipping]

    result = @shop_client.alter_tran(alter_params)
    Response.new(true, '売上計上に成功しました', result, test: test?)
  rescue GMO::Payment::APIError => e
    error_response(parse_error_message(e))
  end
end

#purchase(money, payment_source, options = {}) ⇒ Response

即時売上を実行します authorizeとcaptureを同時に行います

Examples:

登録済みカードで即時売上

gateway.purchase(1000, "user_001|0", { order_id: "order_123" })

Parameters:

  • money (Integer)

    金額(円単位)

  • payment_source (String, CreditCard)

    トークン、"member_id|card_seq"形式の識別子、またはクレジットカードオブジェクト

  • options (Hash) (defaults to: {})

    オプション

Options Hash (options):

  • :order_id (String)

    注文ID(省略時は自動生成)

  • :tax (Integer)

    税額

  • :method (Integer)

    支払方法(デフォルト: 1=一括払い)

  • :pay_times (Integer)

    分割回数

  • :ret_url (String)

    3DS認証後の戻りURL

  • :callback_type (String)

    コールバックタイプ

  • :td_tenant_name (String)

    3DSテナント名

  • :tds2_type (String)

    3DS2.0未対応時取り扱い(デフォルト: '3'=通常オーソリ実施)

  • :tds2_email (String)

    メールアドレス(3DS2.0用)

  • :tds2_mobile_phone_cc (String)

    携帯電話国コード(3DS2.0用)

  • :tds2_mobile_phone_no (String)

    携帯電話番号(3DS2.0用)

  • :tds2_ship_addr_city (String)

    配送先都市(3DS2.0用)

  • :tds2_ship_addr_country (String)

    配送先国(3DS2.0用)

  • :tds2_ship_addr_line1 (String)

    配送先住所1(3DS2.0用)

  • :tds2_ship_addr_post_code (String)

    配送先郵便番号(3DS2.0用)

  • :tds2_bill_addr_city (String)

    請求先都市(3DS2.0用)

  • :tds2_bill_addr_country (String)

    請求先国(3DS2.0用)

  • :tds2_bill_addr_line1 (String)

    請求先住所1(3DS2.0用)

  • :tds2_bill_addr_post_code (String)

    請求先郵便番号(3DS2.0用)

  • :tds2_home_phone_cc (String)

    自宅電話国コード(3DS2.0用)

  • :tds2_home_phone_no (String)

    自宅電話番号(3DS2.0用)

  • :tds2_work_phone_cc (String)

    勤務先電話国コード(3DS2.0用)

  • :tds2_work_phone_no (String)

    勤務先電話番号(3DS2.0用)

  • :tds2_ship_addr_line2 (String)

    配送先住所2(3DS2.0用)

  • :tds2_ship_addr_line3 (String)

    配送先住所3(3DS2.0用)

  • :tds2_ship_addr_state (String)

    配送先州/都道府県(3DS2.0用)

  • :tds2_bill_addr_line2 (String)

    請求先住所2(3DS2.0用)

  • :tds2_bill_addr_line3 (String)

    請求先住所3(3DS2.0用)

  • :tds2_bill_addr_state (String)

    請求先州/都道府県(3DS2.0用)

  • :tds2_ch_acc_change (String)

    アカウント変更インジケータ(3DS2.0用)

  • :tds2_ch_acc_date (String)

    アカウント作成日(3DS2.0用)

  • :tds2_ch_acc_pw_change (String)

    パスワード変更インジケータ(3DS2.0用)

  • :tds2_nb_purchase_account (String)

    購入回数(3DS2.0用)

  • :tds2_payment_acc_age (String)

    決済アカウント年齢(3DS2.0用)

  • :tds2_provision_attempts_day (String)

    プロビジョニング試行回数(3DS2.0用)

  • :tds2_ship_address_usage (String)

    配送先住所の使用状況(3DS2.0用)

  • :tds2_ship_name_ind (String)

    配送先名インジケータ(3DS2.0用)

  • :tds2_suspicious_acc_activity (String)

    不審なアクティビティインジケータ(3DS2.0用)

  • :tds2_txn_activity_day (String)

    1日あたりの取引数(3DS2.0用)

  • :tds2_txn_activity_year (String)

    1年あたりの取引数(3DS2.0用)

  • :tds2_three_ds_req_auth_data (String)

    3DS要求者認証データ(3DS2.0用)

  • :tds2_three_ds_req_auth_method (String)

    3DS要求者認証方法(3DS2.0用)

  • :tds2_three_ds_req_auth_timestamp (String)

    3DS要求者認証タイムスタンプ(3DS2.0用)

  • :tds2_acs_challenge_mandated (String)

    ACSチャレンジ必須(3DS2.0用)

  • :tds2_three_ds_req_prior_ref (String)

    3DS要求者事前参照(3DS2.0用)

Returns:

  • (Response)

    レスポンスオブジェクト



274
275
276
277
278
279
280
281
282
# File 'lib/active_merchant/billing/gateways/gmo_pg.rb', line 274

def purchase(money, payment_source, options = {})
  perform_transaction(
    money,
    payment_source,
    'CAPTURE',
    '決済に成功しました',
    options.merge(tds2_type: options[:tds2_type] || '3')
  )
end

#search_trade(order_id, options = {}) ⇒ Response

取引情報を照会します

Examples:

取引照会

gateway.search_trade("order_123")

Parameters:

  • order_id (String)

    注文ID

  • options (Hash) (defaults to: {})

    オプション(現在未使用)

Returns:

  • (Response)

    レスポンスオブジェクト。取引の詳細情報が含まれます



398
399
400
401
402
403
404
405
# File 'lib/active_merchant/billing/gateways/gmo_pg.rb', line 398

def search_trade(order_id, options = {})
  begin
    result = @shop_client.search_trade(order_id: order_id)
    Response.new(true, '取引照会に成功しました', result, test: test?)
  rescue GMO::Payment::APIError => e
    error_response(parse_error_message(e))
  end
end

#secure_tran2(access_id, access_pass, options = {}) ⇒ Response

3DS2.0認証後の決済を完了します 3DS2.0認証チャレンジ完了後、この決済を実行して取引を確定させます

Examples:

3DS2.0認証後の決済完了

response = gateway.authorize(1000, "user_001|0", { order_id: "order_123", ret_url: "https://example.com/callback" })
access_id = response.params['AccessID']
access_pass = response.params['AccessPass']
gateway.secure_tran2(access_id, access_pass)

Parameters:

  • access_id (String)

    EntryTranで取得したアクセスID

  • access_pass (String)

    EntryTranで取得したアクセスパス

  • options (Hash) (defaults to: {})

    オプション(現在未使用)

Returns:

  • (Response)

    レスポンスオブジェクト。決済実行結果が含まれます authorizationには"access_id|access_pass|order_id"形式の識別子が含まれます



420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
# File 'lib/active_merchant/billing/gateways/gmo_pg.rb', line 420

def secure_tran2(access_id, access_pass, options = {})
  begin
    result = @shop_client.secure_tran_2(access_id: access_id, access_pass: access_pass)
    # レスポンスのOrderIDを使ってauthorizationを構築
    # これにより、後続のcapture/void/credit操作で使用できるようになります
    order_id = result['OrderID']
    authorization = "#{access_id}|#{access_pass}|#{order_id}"

    Response.new(true, '3DS2.0認証後の決済に成功しました', result,
                 authorization: authorization,
                 test: test?)
  rescue GMO::Payment::APIError => e
    error_response(parse_error_message(e))
  end
end

#store(payment, options = {}) ⇒ Response

クレジットカード情報を登録します 会員が存在しない場合は自動的に会員登録も行います

Examples:

トークンを使用したカード登録

gateway.store("token_string", { member_id: "user_001" })

クレジットカードオブジェクトを使用したカード登録

card = ActiveMerchant::Billing::CreditCard.new(
  number: "4111111111111111",
  month: 12,
  year: 2025,
  verification_value: "123",
  first_name: "Taro",
  last_name: "Yamada"
)
gateway.store(card, { member_id: "user_001" })

Parameters:

  • payment (String, CreditCard)

    トークンまたはクレジットカードオブジェクト

  • options (Hash) (defaults to: {})

    オプション

Options Hash (options):

  • :member_id (String)

    会員ID(省略時は自動生成)

  • :member_name (String)

    会員名(省略時はmember_idを使用)

  • :card_pass (String)

    カードパスワード

Returns:

  • (Response)

    レスポンスオブジェクト。authorizationに"member_id|card_seq"形式の識別子が含まれます



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/active_merchant/billing/gateways/gmo_pg.rb', line 79

def store(payment, options = {})
  member_id = options[:member_id] || generate_unique_member_id
  member_name = options[:member_name] || member_id

  begin
    @site_client.search_member(member_id: member_id)
  rescue GMO::Payment::APIError => e
    if e.error_info["ErrInfo"]&.include?(MEMBER_NOT_FOUND_ERROR)
      begin
        @site_client.save_member(member_id: member_id, member_name: member_name)
      rescue GMO::Payment::APIError => save_error
        return error_response(parse_error_message(save_error))
      end
    else
      return error_response(parse_error_message(e))
    end
  end

  card_params = {
    member_id: member_id,
    seq_mode: 1
  }

  if payment.is_a?(String)
    card_params[:token] = payment
  else
    card_params[:card_no] = payment.number
    card_params[:expire] = expdate(payment)
    card_params[:holder_name] = payment.name if payment.name.present?
    card_params[:security_code] = payment.verification_value if payment.verification_value.present?
  end

  card_params[:card_pass] = options[:card_pass] if options[:card_pass]

  begin
    result = @site_client.save_card(card_params)
    card_seq = result['CardSeq']
    authorization = "#{member_id}|#{card_seq}"

    Response.new(
      true,
      'カード登録に成功しました',
      result,
      authorization: authorization,
      test: test?
    )
  rescue GMO::Payment::APIError => e
    error_response(parse_error_message(e))
  end
end

#unstore(identification, options = {}) ⇒ Response

登録済みのクレジットカードを削除します

Examples:

カード削除

gateway.unstore("user_001|0")

Parameters:

  • identification (String)

    カード識別子("member_id|card_seq"形式)

  • options (Hash) (defaults to: {})

    オプション(現在未使用)

Returns:

  • (Response)

    レスポンスオブジェクト



138
139
140
141
142
143
144
145
146
147
148
# File 'lib/active_merchant/billing/gateways/gmo_pg.rb', line 138

def unstore(identification, options = {})
  member_id, card_seq = split_authorization(identification)
  return error_response('無効な識別子フォーマットです') unless member_id && card_seq

  begin
    @site_client.delete_card(member_id: member_id, card_seq: card_seq, seq_mode: 1)
    Response.new(true, 'カード削除に成功しました', {}, test: test?)
  rescue GMO::Payment::APIError => e
    error_response(parse_error_message(e))
  end
end

#update_amount(money, authorization, options = {}) ⇒ Response

Returns レスポンスオブジェクト.

Examples:

オーソリ済み取引の金額変更

response = gateway.authorize(100000, "user_001|0", { order_id: "order_123" })
gateway.update_amount(50000, response.authorization, { job_cd: 'AUTH' })

売上計上済み取引の金額変更

response = gateway.purchase(100000, "user_001|0", { order_id: "order_123" })
gateway.update_amount(50000, response.authorization, { job_cd: 'CAPTURE' })

Parameters:

  • money (Integer)

    新しい金額(セント単位)

  • authorization (String)

    authorizeまたはpurchaseメソッドで取得した認証情報

  • options (Hash) (defaults to: {})

    オプション

Options Hash (options):

  • :job_cd (String)

    処理区分('AUTH'または'CAPTURE'、デフォルト: 'CAPTURE')

  • :tax (Integer)

    税額(セント単位)

Returns:

  • (Response)

    レスポンスオブジェクト



361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
# File 'lib/active_merchant/billing/gateways/gmo_pg.rb', line 361

def update_amount(money, authorization, options = {})
  access_id, access_pass, _order_id = split_authorization(authorization)
  return error_response('無効な認証情報です') unless access_id && access_pass

  job_cd = options[:job_cd] || 'CAPTURE'

  begin
    change_params = {
      shop_id: @options[:shop_id],
      shop_pass: @options[:shop_pass],
      access_id: access_id,
      access_pass: access_pass,
      job_cd: job_cd,
      amount: amount(money)
    }
    change_params[:tax] = amount(options[:tax]) if options[:tax]

    # NOTE: gmo gem (v0.5.8) にchange_tranメソッドがない場合は
    # post_requestを直接呼び出してChangeTran.idPassエンドポイントにアクセス
    result = @shop_client.send(:post_request, 'ChangeTran.idPass', change_params)

    Response.new(true, '金額変更に成功しました', result,
                 authorization: result['TranID'],
                 test: test?)
  rescue GMO::Payment::APIError => e
    error_response(e.message)
  end
end

#void(authorization, options = {}) ⇒ Response

取引を取消します オーソリ済みまたは売上済みの取引を取り消すことができます

Examples:

取引取消

response = gateway.authorize(1000, "user_001|0", { order_id: "order_123" })
gateway.void(response.authorization)

Parameters:

  • authorization (String)

    authorizeまたはpurchaseメソッドで取得した認証情報

  • options (Hash) (defaults to: {})

    オプション(現在未使用)

Returns:

  • (Response)

    レスポンスオブジェクト



326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
# File 'lib/active_merchant/billing/gateways/gmo_pg.rb', line 326

def void(authorization, options = {})
  access_id, access_pass, _order_id = split_authorization(authorization)
  return error_response('無効な認証情報です') unless access_id && access_pass

  begin
    alter_params = {
      access_id: access_id,
      access_pass: access_pass,
      job_cd: 'CANCEL'
    }

    result = @shop_client.alter_tran(alter_params)
    Response.new(true, '取消に成功しました', result,
                 authorization: result['TranID'],
                 test: test?)
  rescue GMO::Payment::APIError => e
    error_response(parse_error_message(e))
  end
end