GMO|コンビニ|決済実行


概要

GMOの決済実行するAPIです。

コンビニの指定、メールアドレスの指定、支払期限の指定をして

受付番号・確認番号・決済完了メール・支払期限」を設定した決済情報を発行します。

名前がわずらわしいので注意。実行ではなく、発行の意図で捉えて問題ありません。


資料

コンビニ決済公式資料59P


エンドポイント

メソッド URI Headers
POST {GmoApiUrl}/ExecTranCvs Default

リクエストパラメーター

パラメーター名 必須 項目名 特記
version CHAR 3 バージョン パラメータバージョン
(予約項目のため、省略してください。)
accessID CHAR 32 取引ID 【取引登録】で発行された値を設定します。
accessPass CHAR 32 取引パスワード 【取引登録】で発行された値を設定します。
orderID CHAR 27 オーダーID 【取引登録】で指定した値を設定します。
convenience CHAR 5 支払先コンビニコード Enum参照
customerName CHAR 40 氏名 お客様の氏名 セブンイレブンを指定した場合は、半角記号は使用できません。
customerKana CHAR 40 フリガナ お客様のフリガナ
telNo CHAR 13 電話番号 お客様の電話番号
paymentTermDay CHAR 2 支払期限日数 省略時は、ショップ情報に設定された支払期限日数で処理されます。 セブンイレブンを指定した場合注意
mailAddress CHAR 256 結果通知先メールアドレス お客様の結果通知先メールアドレスを設定してください。
registerDisp1 CHAR 32 POSレジ表示欄1 ショップ名称を設定してください。[技能実習生管理システムKIZUNA]
receiptsDisp1 CHAR 60 レシート表示欄1 レシートに表示されます。 [お支払い誠に有難うございます。]
receiptsDisp11 CHAR 42 お問い合わせ先 Loppi・Famiポートを使用した際にバウチャー受領書に表示されます。[コンパス株式会社]
receiptsDisp12 CHAR 12 お問い合わせ先電話番号 Loppi・Famiポートを使用した際にバウチャー受領書に表示されます。[03-5809-1497]
receiptsDisp13 CHAR 11 お問い合わせ先受付時間 Loppi・Famiポートを使用した際にバウチャー受領書に表示されます。[11:00-17:00]

※ GMOAPIから必要であろうパラメーターのみ記載しています。

{
    "accessID"            : "8867bfeec7b7fc35f78320d01c9a6c10",
    "accessPass"          : "c07822acefba90d95417ae37beb198de",
    "orderID"             : "TEST-20190628-133057",
    "convenience"         : "12345",
    "customerName"        : "テスト太郎",
    "customerKana"        : "テストタロウ",
    "telNo"               : "090-0000-0000",
    "paymentTermDay"      : "0",
    "mailAddress"         : "test@example.com",
    "registerDisp1"       : "技能実習生管理システムKIZUNA",
    "receiptsDisp1"       : "お支払い誠に有難うございます。",
    "receiptsDisp11"      : "コンパス株式会社",
    "receiptsDisp12"      : "03-5809-1497",
    "receiptsDisp13"      : "11:00-17:00",
}

レスポンス

正常時

ステータスコード:200

パラメーター名 項目名 特記
orderID CHAR 27 オーダーID 【決済実行】呼出時に指定した値を返却します。
convenience CHAR 5 支払先コンビニコード 【決済実行】呼び出し時に指定した値、または弊社側で変換された値を返却します。
confNo CHAR 20 確認番号 お客様が支払い時に使用する番号を返却します。
receiptNo CHAR 32 受付番号 お客様が支払い時に使用する番号を返却します。
paymentTerm CHAR 14 支払期限日時 お客様の払込期限を返却します。yyyyMMddHHmmss書式
tranDate CHAR 14 決済日付 決済依頼を実施した日時を返却します。yyyyMMddHHmmss書式
receiptUrl CHAR 256 払込票URL セブンイレブンの場合のみ返却されます。
checkString CHAR 32 MD5ハッシュ OrderID~TranDate+ショップパスワードのハッシュ値(※1)を返却します。
clientField1 CHAR 100 加盟店自由項目1 入力パラメータの加盟店自由項目返却フラグの値が”1"(返却する)の場合のみ返却します。
clientField2 CHAR 100 加盟店自由項目2
clientField3 CHAR 100 加盟店自由項目3
{
    "orderID"         : "TEST-20190628-115812",
    "convenience"     : "12345",
    "confNo"          : "12345678",
    "receiptNo"       : "1234567890123",
    "paymentTerm"     : "20211205",
    "tranDate"        : "",
    "receiptUrl"      : "",
    "checkString"     : "6bff1f1547394b9fc37407dfc0d49c31",
}
失敗時

ステータスコード:不明

パラメーター名 項目名 特記
ErrCode CHAR 3 エラーコード エラー発生時のみ
複数ある場合は"|"で接続された文字列
ErrInfo CHAR 9 エラー詳細コード エラー発生時のみ
複数ある場合は"|"で接続された文字列

・エラー時(複数エラーがある場合は下記のような形式にて出力されます。ErrCodeのn番目とErrInfoのn番目は対となります)

[
  {
    "errCode":"E01",
    "errInfo":"E01010001"
  },
  {
    "errCode":"E01",
    "errInfo":"E01020001"
  },
]

{warning} 成功か失敗かはステータスコードで判別できる


サンプルソース

// リクエストコネクションの設定
$curl=curl_init();
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $curl, CURLOPT_URL, 'https://p01.mul-pay.jp/payment/ExecTranCvs.idPass' );
$param = [
    'AccessID'        => 'YourAccessID',
    'AccessPass'      => 'YourAccessPass',
    'OrderID'         => 'SampleOrderid',
    'Convenience'     => 'SampleConvenience',
    'CustomerName'    => 'SampleCustomerName',
    'CustomerKana'    => 'SampleCustomerKana',
    'TelNo'           => '03xxxxxxxx',
    'PaymentTermDay'  => 'SamplePaymentTermDay',
    'MailAddress'     => 'SampleMailAddress',
    'ShopMailAddress' => 'SampleShopMailAddress',
    'ReserveNo'       => 'SampleReserveNo',
    'MemberNo'        => 'SampleMemberNo',
    'RegisterDisp1'   => 'SampleRegisterDisp1',
    'RegisterDisp2'   => 'SampleRegisterDisp2',
    'RegisterDisp3'   => 'SampleRegisterDisp3',
    'RegisterDisp4'   => 'SampleRegisterDisp4',
    'RegisterDisp5'   => 'SampleRegisterDisp5',
    'RegisterDisp6'   => 'SampleRegisterDisp6',
    'RegisterDisp7'   => 'SampleRegisterDisp7',
    'RegisterDisp8'   => 'SampleRegisterDisp8',
    'ReceiptsDisp1'   => 'SampleReceiptsDisp1',
    'ReceiptsDisp2'   => 'SampleReceiptsDisp2',
    'ReceiptsDisp3'   => 'SampleReceiptsDisp3',
    'ReceiptsDisp4'   => 'SampleReceiptsDisp4',
    'ReceiptsDisp5'   => 'SampleReceiptsDisp5',
    'ReceiptsDisp6'   => 'SampleReceiptsDisp6',
    'ReceiptsDisp7'   => 'SampleReceiptsDisp7',
    'ReceiptsDisp8'   => 'SampleReceiptsDisp8',
    'ReceiptsDisp9'   => 'SampleReceiptsDisp9',
    'ReceiptsDisp10'  => 'SampleReceiptsDisp10',
    'ReceiptsDisp11'  => 'SampleReceiptsDisp11',
    'ReceiptsDisp12'  => 'SampleReceiptsDisp12',
    'ReceiptsDisp13'  => 'SampleReceiptsDisp13',
    'ClientField1'    => 'SampleClientField1',
    'ClientField2'    => 'SampleClientField2',
    'ClientField3'    => 'SampleClientField3',
    'ClientFieldFlag' => '0'
];
// リクエストボディの生成
curl_setopt( $curl, CURLOPT_POSTFIELDS, http_build_query( $param ) );

// リクエスト送信
$response = curl_exec( $curl );
$curlinfo = curl_getinfo( $curl );
curl_close( $curl );

// レスポンスチェック
if( $curlinfo[ 'http_code' ] != 200 ){
    // エラー

    return false;
}

// レスポンスのエラーチェック
$dataMap = explode('&', $response);
$data = array();
foreach ($dataMap as $value) {
    $splitArray = explode('=', $value, 2);
    if (2 == count($splitArray)) {
        $data[$splitArray[0]] = $splitArray[1];
    }
}
if( array_key_exists( 'ErrCode', $data ) ){
    // エラー

    return false;
}

// 正常

return true;