後払い決済(決済~ステータス変更)

注文情報を送信

後払い用パラメータの設定

# 後払い用パラメータ
consignee_postal = param["consignee_postal"][0] || ""
consignee_name = param["consignee_name"][0] || ""
consignee_pref = param["consignee_pref"][0] || ""
consignee_address = param["consignee_address"][0] || ""
consignee_tel = param["consignee_tel"][0] || ""
orderer_postal = param["orderer_postal"][0] || ""
orderer_name = param["orderer_name"][0] || ""
orderer_pref = param["orderer_pref"][0] || ""
orderer_address = param["orderer_address"][0] || ""
orderer_tel = param["orderer_tel"][0] || ""
atobarai_para = consignee_postal.length + consignee_name.length + consignee_address.length + consignee_tel.length + orderer_postal.length + orderer_name.length + orderer_address.length + orderer_tel.length

data["delivery_code"] = 99
data["consignee_postal"] = consignee_postal
data["consignee_name"] = consignee_name
data["consignee_address"] = "%s%s"%[@pref_list[consignee_pref], consignee_address]
data["consignee_tel"] = consignee_tel
data["orderer_postal"] = orderer_postal
data["orderer_name"] = orderer_name
data["orderer_address"] ="%s%s"%[@pref_list[orderer_pref], orderer_address]
data["orderer_tel"] = orderer_tel

※オーダー情報送信先 CGIへPOST、応答内容の解析は、都度課金と同様。

後払い用パラメータの設定

$consignee_pref    = $_REQUEST['consignee_pref'];
$consignee_postal  = $_REQUEST['consignee_postal'];
$consignee_name    = $_REQUEST['consignee_name'];
$consignee_address = $_REQUEST['consignee_address'];
$consignee_tel     = $_REQUEST['consignee_tel'];
$orderer_pref      = $_REQUEST['orderer_pref'];
$orderer_postal    = $_REQUEST['orderer_postal'];
$orderer_name      = $_REQUEST['orderer_name'];
$orderer_address   = $_REQUEST['orderer_address'];
$orderer_tel       = $_REQUEST['orderer_tel'];

$request->addPostParameter('delivery_code',99);
$request->addPostParameter('consignee_postal',$consignee_postal);
$request->addPostParameter('consignee_name', $consignee_name);
$request->addPostParameter('consignee_address',sprintf( "%s%s", $pref_list[$consignee_pref], $consignee_address));
$request->addPostParameter('consignee_tel', $consignee_tel);
$request->addPostParameter('orderer_postal', $orderer_postal);
$request->addPostParameter('orderer_name',  $orderer_name );
$request->addPostParameter('orderer_address', sprintf( "%s%s", $pref_list[$orderer_pref], $orderer_address));
$request->addPostParameter('orderer_tel', $orderer_tel);

※オーダー情報送信先 CGIへPOST、応答内容の解析は、都度課金と同様。

後払い用パラメータの設定

// 後払い用パラメータの先頭項目に値が有る場合は後払い用パラメータも設定
param.add( new BasicNameValuePair("delivery_code",si.getDeliveryCode()));
param.add( new BasicNameValuePair("consignee_postal",si.getConsigneePostal()));
param.add( new BasicNameValuePair("consignee_name",si.getConsigneeName()));
param.add( new BasicNameValuePair("consignee_address",si.getConsigneeAddress()));
param.add( new BasicNameValuePair("consignee_tel",si.getConsigneeTel()));
param.add( new BasicNameValuePair("orderer_postal",si.getOrdererPostal()));
param.add( new BasicNameValuePair("orderer_name",si.getOrdererName()));
param.add( new BasicNameValuePair("orderer_address",si.getOrdererAddress()));
param.add( new BasicNameValuePair("orderer_tel",si.getOrdererTel()));

※オーダー情報送信先 CGIへPOST、応答内容の解析は、都度課金と同様。

後払い用パラメータの設定

# 後払い指定決済
my $consignee_pref    = $q->param("consignee_pref");
my $consignee_postal  = $q->param("consignee_postal");
my $consignee_name    = $q->param("consignee_name");
my $consignee_address = $q->param("consignee_address");
my $consignee_tel     = $q->param("consignee_tel");
my $orderer_pref      = $q->param("orderer_pref");
my $orderer_postal    = $q->param("orderer_postal");
my $orderer_name      = $q->param("orderer_name");
my $orderer_address   = $q->param("orderer_address");
my $orderer_tel       = $q->param("orderer_tel");

# 後払い決済用パラメータが入力されている場合は送信パラメータに含めておく
# その場合delivery_codeは99固定
$data{delivery_code} = 99;
$data{consignee_postal} = $consignee_postal;
$data{consignee_name} = $consignee_name;
$data{consignee_address} = sprintf( "%s%s", PREF_LIST()->{$consignee_pref}, $consignee_address);
$data{consignee_tel} = $consignee_tel;
$data{orderer_postal} = $orderer_postal;
$data{orderer_name} = $orderer_name;
$data{orderer_address} = sprintf( "%s%s", PREF_LIST()->{$orderer_pref}, $orderer_address);
$data{orderer_tel} = $orderer_tel;

※オーダー情報送信先 CGIへPOST、応答内容の解析は、都度課金と同様。

後払い決済利用時、都度決済にて送信しているパラメータに加え、
以下のパラメータを追加することで、購入者様による入力の手間を省くことが可能です。

<種別説明>
◎:必須項目 イプシロンが提供している値を設定してください。
○ :必須項目 表中の説明に従い設定してください。
● :必須項目 注文単位でユニークな値を設定してください。
△:一部必須 コンビ二種別の場合必須項目となります。
- :任意項目 未設定の場合は説明に記載されている値が設定されます。

確認画面は必ず表示されます。

追加送信パラメータ一覧
項目名 パラメータ名 種別 属性 説明
1 配送区分 delivery_code 半角数字 2桁以下 99 99:後払い決済利用
2 送り先郵便番号
(荷受人)
consignee_postal 半角数字 7桁 1234567 配送区分を指定した場合は必須。
送り先の郵便番号を設定
3 送り先名 consignee_name EUC or S-JIS 64byte  イプシロンタロウ 配送区分を指定した場合は必須。
送り先の名称 送り先の名前
※後払い利用時は全半角21文字以下 入力画面にて、ユーザーにて修正が必要な場合があります。
4 送り先住所 consignee_address 全半角文字 48文字以下 東京都渋谷区1-1-1 配送区分を指定した場合は必須。
送り先の住所
5 送り先電話番号 consignee_tel 半角数字 12桁以下 0312345678 配送区分を指定した場合は必須。
送り先の電話番号 市外局番から入力のこと
6 注文主郵便番号
(購入者)
orderer_postal 半角数字 7桁 1234567 配送区分を指定した場合は必須。
注文主の郵便番号を設定
7 注文主名 orderer_name EUC or S-JIS 64byte イプシロンタロウ 配送区分を指定した場合は必須。
注文主の名称 注文主の名前
※後払い利用時は全半角21文字以下 入力画面にて、ユーザーにて修正が必要な場合があります。
8 注文主住所 orderer_address 全半角文字 48文字以下 東京都渋谷区1-1-1 配送区分を指定した場合は必須。 注文主の住所
9 注文主電話番号 orderer_tel 半角数字 12桁以下 0312345678 配送区分を指定した場合は必須。
送り先の電話番号 市外局番から入力のこと

GMO 後払い決済ステータス変更通知

後払い決済につきましては、他の決済方法と相違して一連の取引で決済は完結いたしません。
決済申し込み時に審査中の場合、後日審査結果が決済業者より通知されます。
また、出荷報告頂いた後、支払い対象となる決済の確定が決済業者より通知されます。
したがいまして、後払い決済の決済状況変更となった場合に、情報をイプシロン⇒加盟店様へ通知いたします。
イプシロン管理画面のシステム情報>後払い決済ステータス変更通知送信先に登録いただくことで、通知されます。

POSTされてきた情報を取得

# CGIのパラメータを取得
cgi = CGI.new(:accept_charset => 'Shift_JIS')
param = cgi.params

#送信パラメータ一覧を取得
param.each do | key,val |
    response.push("%s=%s"%[key,val[0]])
end

応答結果を返却

# 成功応答
print "Content-type:text/plain\n\n";
print "1\n";              # 成功応答
#print "0 999 DB_ERROR\n";# 失敗応答

POSTされてきた情報を取得

$request = array();
foreach( $_REQUEST as $k => $v ){
    array_push( $request, sprintf("%s = %s", $k, $v ));
}

$fio = fopen( $output_file,"a" );
fwrite( $fio,sprintf("%s %s\n", date("Ymd H:i:s"), join(",",$request ) ) );
fclose($fio);

応答結果を返却

# 成功パターン
echo "1\n";

# 失敗パターン
# echo "0 999 DB_ERROR\n";

POSTされてきた情報を取得

// 応答はtext/plain
response.setContentType("text/plain");

Config config = (Config)request.getAttribute("ep_config");
// パラメータを取得
StringBuffer paramBuf = new StringBuffer();
// 受信時刻を設定
paramBuf.append(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss ").format(Calendar.getInstance().getTime()));
//paramBuf.append(" ");
for( String name: Collections.list(request.getParameterNames())) {
    paramBuf.append(String.format("%s=%s,", name,new String(URLDecoder.decode(request.getParameter(name),"UTF-8").getBytes("UTF-8"),"UTF-8" )));
}
// 末尾のカンマを削除
paramBuf.deleteCharAt(paramBuf.length() - 1);
// 改行を追加
paramBuf.append("\n");
// ファイルオープン
try{
    // ファイルに受信内容を保存
    java.io.File notify_text = new java.io.File(config.getDeferred_file());
    notify_text.createNewFile();
    FileWriter fw = new FileWriter(notify_text,true);
    fw.write(paramBuf.toString());
    fw.close();
}catch(Exception e){
    // 見せる場所がない
    e.printStackTrace();
}

応答結果を返却

// 応答を返す 0:異常 1:正常
response.getWriter().write(config.getNotify_responce());

POSTされてきた情報を取得

# CGIのパラメータを取得
my $cgi = new CGI;
# 送信パラメータ一覧を取得
for ( $cgi->param ){
    push( @response, sprintf("%s=%s", $_, uri_unescape($cgi->param($_)) ) );
}

応答結果を返却

# 応答
print "Content-type:text/plain\n\n";
print "1\n";              # 成功時
#print "0 999 DB_ERROR\n"; # 失敗時
変更通知を受信
項目名 パラメータ名 属性 説明
1 トランザクションコード trans_code 半角数字 該当取引の「trans_code」、イプシロンでユニークに採番
2 オーダー番号 order_number 半角英数字 該当取引の「order_number」と同様
3 ステータス state 半角数字

該当取引のステータス
0:未課金
1:課金済み
4:審査中
5:仮売上
6:出荷登録中
9:キャンセル
11:審査NG

4 決済方法 payment_code 半角数字 実際に選択された決済方法を設定
18:GMO後払い決済

ステータスの変更通知について加盟店様で正常受信をイプシロンサーバに送信していただく必要がございま す。
弊社で加盟店様の正常結果を受信しない場合、24 時間通知のリトライを実施いたします。
したがいまして、通知を正常に受信された場合、以下の方法で弊社に正常結果を応答してください。

結果コード
項目名 属性 説明
1 結果コード 半角数字 1:正常に変更通知を受信した場合 0:正常に変更通知を受信出来なかった場合