都度課金

注文情報を送信

加盟店様からイプシロンへ決済情報を送信するためには、 オーダー情報送信先 CGI(https://beta.epsilon.jp/cgi-bin/order/receive_order3.cgi)に必要な注文情報のデータをパラメータとして付与する必要があります。

パラメータ(注文情報の生成)

data = { 	
   "version" => "2",	
   "contract_code" => contract_code,	
   "user_id" => user_id,           	
   "user_name" => user_name,  	
   "user_mail_add" => user_mail_add,	
   "item_code" => item_code,       	
   "item_name" => @item_name,	
   "order_number" => order_number, 	
   "st_code" => st_code[st],	
   "mission_code" => mission_code, 	
   "item_price" => @item_price,     	
   "process_code" => process_code, 	
   "memo1" => memo1,               	
   "memo2" => memo2,	
   "xml" => "1",	
   "character_code" => "UTF8"	
}

オーダー情報送信先 CGIへPOST

# EPSILONに接続して送信
result = http.start do
    http.request( post_data )
end

応答内容の解析

if result.code == "200" then
    ##xml = REXML::Document.new(result.body)
    xml = REXML::Document.new(( result.body.gsub("x-sjis-cp932","Shift_JIS"))) # 文字コードをSJISとして読み込む(CP932はSJISの拡張なので基本はOK)
    xml.elements.each("Epsilon_result/result") do |element|
        element.attributes.each do |name, value|
            response[name] = CGI.unescape(value)
        end
    end
else
    # イプシロンに対して接続に失敗
    err_msg =  "データの送信に失敗しました %s:%s

"%[result.code,result.message] order_form(err_msg, item, user_id, user_name, user_mail_add) exit 1 end # result = 1 の場合、送信に成功 if response["result"] == "1" then # recdirectがある場合 if response.key?("redirect") then print cgi.header({"status" => "REDIRECT", "Location" => response["redirect"]}) exit elsif response.key?("trans_code") then print cgi.header({"status" => "REDIRECT", "Location" => confirm_url+("?trans_code=%d"%[response["trans_code"]] )}) exit else # リダイレクトの指定なし、trans_codeがない場合は会員情報変更等 result_page( response['result'] ); exit end else # データ送信結果が失敗だった場合、オーダー入力画面に戻し、エラーメッセージを表示します。 err_msg = "%s:%s"%[response["err_code"],response["err_detail"]] order_form(err_msg, item, user_id, user_name, user_mail_add) exit 1 end

パラメータ(注文情報の生成)

$request->addPostParameter('version', '2' );
$request->addPostParameter('contract_code', $contract_code);
$request->addPostParameter('user_id', $user_id);
$request->addPostParameter('user_name', mb_convert_encoding($user_name, "UTF-8", "auto"));
$request->addPostParameter('user_mail_add', $user_mail_add);
$request->addPostParameter('item_code', $item_code);
$request->addPostParameter('item_name', mb_convert_encoding($item_name, "UTF-8", "auto"));
$request->addPostParameter('order_number', $order_number);
$request->addPostParameter('st_code', $st_code[$st]);
$request->addPostParameter('mission_code', $mission_code);
$request->addPostParameter('item_price', $item_price);
$request->addPostParameter('process_code', $process_code);
$request->addPostParameter('memo1', $memo1);
$request->addPostParameter('memo2', $memo2);
$request->addPostParameter('xml', '1');
$request->addPostParameter('character_code', 'UTF8' );

オーダー情報送信先 CGIへPOST

// HTTPリクエスト実行
$response = $request->send();

応答内容の解析

  if (!PEAR::isError($response)) {
   $res_code = $response->getStatus();
   $res_content = $response->getBody();

        //xml unserializer
        $temp_xml_res = str_replace("x-sjis-cp932", "UTF-8", $res_content);
        $unserializer =& new XML_Unserializer();
        $unserializer->setOption('parseAttributes', TRUE);
        $unseriliz_st = $unserializer->unserialize($temp_xml_res);
        if ($unseriliz_st === true) {
            //xmlを解析
            $res_array = $unserializer->getUnserializedData();
            $is_xml_error = false;
            $xml_redirect_url = "";
            $xml_error_cd = "";
            $xml_error_msg = "";
            $xml_memo1_msg = "";
            $xml_memo2_msg = "";
            $result = "";
            $trans_code = "";
            foreach($res_array['result'] as $uns_k => $uns_v){
                list($result_atr_key, $result_atr_val) = each($uns_v);

                switch ($result_atr_key) {
                  case 'redirect':
                    $xml_redirect_url = rawurldecode($result_atr_val);
                    break;
                  case 'err_code':
                    $is_xml_error = true;
                    $xml_error_cd = $result_atr_val;
                    break;
                  case 'err_detail':
                    $xml_error_msg = mb_convert_encoding(urldecode($result_atr_val), "UTF-8" ,"auto");
                    break;
                  case 'memo1':
                    $xml_memo1_msg = mb_convert_encoding(urldecode($result_atr_val), "UTF-8" ,"auto");
                    break;
                  case 'memo2':
                    $xml_memo2_msg = mb_convert_encoding(urldecode($result_atr_val), "UTF-8" ,"auto");
                    break;
                  case 'result':
                    $result = mb_convert_encoding(urldecode($result_atr_val), "UTF-8" ,"auto");
                    break;
                  case 'trans_code':
                    $trans_code = mb_convert_encoding(urldecode($result_atr_val), "UTF-8" ,"auto");
                    break;
                  default:
                    break;
                }
            }

        }else{
            //xml parser error
            $err_msg = "xml parser error

"; order_form(); exit(1); } }else{ //http error $err_msg = "データの送信に失敗しました

"; $err_msg .= "
res_statusCd=" . $request->getResponseCode(); $err_msg .= "
res_status=" . $request->getResponseHeader('Status'); $err_msg .= "
ErrorMessage" . $response->getMessage(); order_form(); exit(1); } if($is_xml_error){ // データ送信結果が失敗だった場合、オーダー入力画面に戻し、エラーメッセージを表示します。 $err_msg = "エラー : " . $xml_error_cd . $xml_error_msg; order_form(); exit(1); }else{ if( !empty( $xml_redirect_url ) ){ // データ送信に成功した場合、リダイレクト先URLへリダイレクトさせてください。 header("Location: " . $xml_redirect_url); exit(0); }elseif( !empty($trans_code ) ){ header("Location: ".$confirm_url."?trans_code=".$trans_code); exit(0); }else{ result_page( $result ); exit(0); } } }

パラメータ(注文情報の生成)

SettlementSendInfo si = this.getSettlmentSendInfo();		
List param = new ArrayList();		
Integer processCode = si.getProcessCode();		
~		
switch (processCode){		
	case 1: case 2: // 初回/登録済み課金	
		param.add( new BasicNameValuePair("version", si.getVersion().toString()));
		param.add( new BasicNameValuePair("contract_code", this.getConfig().getContract_code() ));
		param.add( new BasicNameValuePair("user_id", si.getUserId()));
		param.add( new BasicNameValuePair("user_name", si.getUserName()));
		param.add( new BasicNameValuePair("user_mail_add", si.getUserMailAdd()));
		param.add( new BasicNameValuePair("item_code", si.getItemCode()));
		param.add( new BasicNameValuePair("item_name", si.getItemName()));
		param.add( new BasicNameValuePair("order_number", si.getOrderNumber()));
		param.add( new BasicNameValuePair("st_code",  si.getStCode()));
		param.add( new BasicNameValuePair("mission_code",si.getMissionCode().toString()));
		param.add( new BasicNameValuePair("item_price", si.getItemPrice().toString()));
		param.add( new BasicNameValuePair("process_code", si.getProcessCode().toString()));
		param.add( new BasicNameValuePair("memo1", si.getMemo1()));
		param.add( new BasicNameValuePair("memo2", si.getMemo2()));
		param.add( new BasicNameValuePair("character_code", si.getCharacterCode()));
		param.add( new BasicNameValuePair("xml", si.getXml().toString()));

オーダー情報送信先 CGIへPOST

// 決済情報送信
// 送信用の設定を作成
RequestConfig rc = RequestConfig.custom().setConnectTimeout(2000)
										 .setSocketTimeout(2000)										
										 .setMaxRedirects(0)										
										 .build();
// Header定義
List<Header> header = new ArrayList<Header>();
header.add( new BasicHeader("Accept-Charset","UTF-8" ))	;
header.add( new BasicHeader("User-Agent","EPSILON SAMPLE PROGRAM JAVA" ));

HttpClient client = HttpClientBuilder.create()
								.setDefaultRequestConfig(rc)
								.setDefaultHeaders(header)
								.build();

List<NameValuePair> param = this.makeSendParam();
HttpPost post = new HttpPost();
HttpResponse res = null;

try {
	post.setEntity(new UrlEncodedFormEntity(param,"UTF-8"));
	post.setURI(new URI(this.getConfig().getOrder_url()));
	res = client.execute(post);
}catch(Exception e){
	e.printStackTrace();
	return null;
}

応答内容の解析

SettlementResultInfo settleResultInfo = new SettlementResultInfo();
if( res.getStatusLine().getStatusCode() == HttpStatus.SC_OK ){
    // BODYを取得してXMLパーサー呼び出し
    try{
        String xml = EntityUtils.toString(res.getEntity());
        //x-sjis-cp932だとエンコーダの未対応でエラーとなる
        xml = xml.replace("x-sjis-cp932", "Shift_JIS");
        //System.out.println(xml);
        InputStream body = new java.io.ByteArrayInputStream(xml.getBytes());
        Document xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(body);
        
        NodeList resultList = xmlDoc.getElementsByTagName("result");
        for( int i = 0; i < resultList.getLength(); i++) {
            Node node = resultList.item(i);
            NamedNodeMap namedNodeMap = node.getAttributes();
            for( int j =0; j < namedNodeMap.getLength(); j++ ){
                Node attr = namedNodeMap.item(j);
                switch (attr.getNodeName()) {
                case "result":
                    settleResultInfo.setResult(attr.getNodeValue());
                    break;
                case "err_code":
                    settleResultInfo.setErrCode(attr.getNodeValue());
                    break;
                case "err_detail":
                    settleResultInfo.setErrDetail(new String(URLDecoder.decode(attr.getNodeValue(),"UTF-8").getBytes("UTF-8"),"UTF-8" ));
                    break;
                case "memo1":
                    settleResultInfo.setMemo1( new String(URLDecoder.decode(attr.getNodeValue(),"UTF-8").getBytes("UTF-8"),"UTF-8" ));
                    break;
                case "memo2":
                    settleResultInfo.setMemo2( new String(URLDecoder.decode(attr.getNodeValue(),"UTF-8").getBytes("UTF-8"),"UTF-8" ));
                    break;
                case "redirect":
                    settleResultInfo.setRedirect(new String(URLDecoder.decode(attr.getNodeValue(),"UTF-8").getBytes("UTF-8"),"UTF-8" ));
                    break;
                case "trans_code":
                    settleResultInfo.setTransCode(attr.getNodeValue());
                    break;
                }
            }
        }
    }catch ( Exception e){
    e.printStackTrace();
    return null;
}
}else{
    // 応答が200以外の場合は不明
    return null;
}

パラメータ(注文情報の生成)

my %data = ();		
        %data = (		
            version       => "2",               # バージョン		
            contract_code => $contract_code,    # 契約コード		
            user_id       => $user_id,          # ユーザーID		
            user_name     => $user_name,        # ユーザー名		
            user_mail_add =>		
                $user_mail_add,    # ユーザーメールアドレス		
            item_code    => $item_code,              # 商品コード		
            item_name    => $item_name,              # 商品名		
            order_number => $order_number,           # 注文番号		
            st_code      => $select_st_code{$st},    # 決済区分		
            mission_code => $mission_code,           # 課金区分		
            item_price   => $item_price,             # 価格		
            process_code => $process_code,           # 処理区分		
            memo1        => $memo1,                  # 追加情報1		
            memo2        => $memo2,                  # 追加情報2		
            character_code => "UTF8",                  # 文字コード		
            xml => '1'    # 応答形式 (0:html 1:XML)		
        );

オーダー情報送信先 CGIへPOST

my $ua = LWP::UserAgent->new;
$ua->timeout(20);
$ua->ssl_opts( verify_hostname => 0 );
my $rq = POST $order_url, [%data];
my $res = $ua->request($rq);

応答内容の解析

if ( $res->is_success ) {		
		
    # 応答内容(XML)の解析		
    my $xml    = $res->content;		
    my $parser = new XML::DOM::Parser;		
    my $doc    = $parser->parse($xml);		
    my $nodes  = $doc->getElementsByTagName("Epsilon_result")->item(0)		
        ->getElementsByTagName("result");		
    my $n = $nodes->getLength;		
		
    for ( my $i = 0; $i < $n; $i++ ) {		
        my $node = $nodes->item($i);		
        traverse($node);		
    }		
		
    sub traverse {		
        my ($node) = @_;		
        if ( $node->getNodeType == ELEMENT_NODE ) {		
            foreach my $child ( $node->getChildNodes() ) {		
                traverse($child);		
            }		
            foreach my $at ( $node->getAttributes ) {		
		
                # 値の取得		
                my $value = $at->item(0)->getNodeValue;		
		
             # URLデコード(値はURLエンコードされています)		
                $value =~ s/\+/ /g;		
                $value =~ s/%([a-fA-F0-9]{2})/ chr(hex($1))/ge;		
		
                #          $value = Encode::decode('shiftjis',$value);		
                # 変数名と値を連想配列に格納		
                $response{ $at->item(0)->getNodeName } = $value;		
            }		
        }		
    }		
}		
else {		
    $err_msg		
        = sprintf "データの送信に失敗しました %s

", $res->status_line; order_form(); exit 1; } if ( !$response{'result'} ) { # データ送信結果が失敗だった場合、オーダー入力画面に戻し、エラーメッセージを表示します。 $err_msg = sprintf "%s:%s", $response{'err_code'}, $response{'err_detail'}; order_form(); exit 1; }

項目「処理区分」の設定について

通常決済をご利用いただく際には、処理区分(パラメータ:process_code)は 1(初回課金)を設定していただきます。
カード決済のみ2(登録済み課金)を設定することができ、パラメータとして設定いただいたユーザの情報がイプシロンに登録されていた場合に、ユーザに紐づく保存されているカード情報から決済を実施することができます。

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

送信パラメータ一覧
項目名 パラメータ名 種別 属性 説明
1 CGIバージョン version 半角数字 1 CGIバージョンです。 1固定
2 契約コード contract_code 半角英数字 
8byte(固定)
99999999(固定) イプシロンが加盟店様ごとに採番 申込時に弊社の申込完了画面及びメールにて通知
3 ユーザーID user_id 半角英数字
.-+/@ 64byte以下
Epsilon0001 クレジットカード決済の登録済み課金及び定期課金を利用の場合、購入者様特定のため、購入者様単位でユニークなものを設定。 上記機能をご利用しない場合は自由に設定可能
4 ユーザー氏名 user_name EUC or S -JIS 64byte イプシロン 太郎 購入者様の名前
5 メールアドレス user_mail_add 半角英数字
.-_@ 128byte以下
test@epsilon.jp 購入者様のメールアドレス オンラインコンビニ決済申し込みの際、 このメールアドレスに受付番号を送信
6 商品コード item_code 半角英数字
.-+/  64byte以下
EP-0001 商品のコード
「0(数字のゼロ)」のみで構成される文字列の指定は不可。
7 商品名 item_name EUC or S -JIS 64byte りんご 商品名 複数の商品を一度に記載する場合は制限文字数 (半角64文字、全角32文字)以内とする
スマートフォンキャリア決済(au)に限り以下文字列使用不可
ローマ数字, ~, 【, 】, -
8 オーダー番号 order_number 半角英数字 32byte 0312345 注文単位でユニークに設定 同じオーダー番号で注文を実行するとエラー
9 決済区分 st_code nnnnn-nnnn-nnnnn-nnnnn-nnnnn-nnnnn-nnnnn (n:0or1) 10100-0000-00000-
00000-00000-00000-
00000
前述の決済区分を参照
10 課金区分 mission_code 1~10 1 1回課金の場合は「1」を指定。課金区分の詳細はこちら
11 価格 item_price 1~9999999 4725 クレジットカード決済(1回課金):9,999,999以下を設定
コンビニ決済:299,999以下を設定
PayPay銀行決済:9,999,999以下を設定
楽天銀行決済:9,999,999以下を設定
住信SBIネット銀行決済:9,999,999以下を設定
ウェブマネー決済:199,999以下を設定
BitCash:199,999以下を設定
電子マネーちょコム:99,999以下を設定
ペイジー:9,999,999以下を設定
PayPal決済:499,999以下を設定
Yahoo! ウォレット:499,999以下を設定
スマートフォンキャリア決済:30,000以下を設定
GMO後払い決済:49,999以下を設定
クレジットカード決済(多通貨):通貨コード毎に異なる。
別表参照
JCBオンラインプリペイドサービス:50,000以下を設定
12 処理区分 process_code 1~9 1 1:初回課金 2:登録済み課金
13 予備1 memo1 - EUC or S -JIS 128byte これはテストです 自由に設定
14 予備2 memo2 - EUC or S -JIS 128byte これはテストです 自由に設定
15 応答形式 xml - 0~1 1 応答の形式 1:XML形式 を選択
16 文字コード character_code 半角英字- UTF8 本CGIパラメータ送付時の文字コード 指定可能な文字コードはUTF8
17 言語コード lang_id - 半角英字- ja 指定することで決済画面の表示言語を指定できます。 ja:日本語 en:英語
18 通貨コード currency_id 半角英字 JPY 日本円以外の決済が可能な決済手段の場合に、指定することで、指定された通貨にて決済が可能です。 指定しない場合はJPY(日本円)が指定されます。 利用可能な通貨コードに関しては後述

応答結果が正常に受け取れた場合は、受け取ったパラメータに対応した各決済画面へリダイレクトさせる必要があります。
以下パラメータがXML形式で返却されます。

受信パラメータ一覧
項目名 パラメータ名 種別 属性 説明
1 実行結果 result 半角数字 処理結果を記載 1:成功 0:失敗
決済方法選択画面出力の場合は1:成功が設定される
2 リダイレクト先 redirect URLエンコード済み 設定されたリダイレクト先にリダイレクトする設定
表示画面は選択された決済方法によって変化する
異常終了の場合の受信パラメータ一覧
項目名 パラメータ名 種別 属性 説明
1 実行結果 result 半角数字 処理結果を記載 0:失敗
2 エラーコード err_code URLエンコード済み 対応するのエラーコード 別紙「エラーコード一覧」を参照
3 エラー内容 err_detail URLエンコード済み(S-JIS) 対応するエラーメッセージ
購入者様に通知するため画面上に表示を推奨
4 予備1 memo1 URLエンコード済み(S-JIS) 設定した「memo1」と同様
5 予備2 memo2 URLエンコード済み(S-JIS) 設定した「memo2」と同様

パラメータの設定、オーダー情報確認 CGIへのPOST

post_data = Net::HTTP::Post.new( getsales_url.request_uri )
post_data.set_form_data(
    "trans_code" => trans_code,
    "contract_code" => user_id
)
http = Net::HTTP.new(getsales_url.host,getsales_url.port)

http.use_ssl = true # SSLを有効にします

http.verify_mode = OpenSSL::SSL::VERIFY_NONE # ローカル試験用で消す

http.open_timeout = 20 # セッション接続までのタイムアウト時間
http.read_timeout = 20 # 応答を待つまでのタイムアウト時間
# EPSILONに接続して送信
result = http.start do
    http.request( post_data )
end

応答内容の解析

if !result.code == 200 then
  # インターフェイスCGIの実行に失敗した場合
  err_msg = "HTTPリクエストの送信に失敗しました。%s:%s"%[res.code,res.message]
  print_html(err_msg,nil,nil,nil,nil);
  exit;
end

# 結果を読み込み
xml = REXML::Document.new(( result.body.gsub("x-sjis-cp932","Shift_JIS"))) # 文字コードをSJISとして読み込む(CP932はSJISの拡張なので基本はOK)

#p result.body
response = Hash.new
xml.elements.each("Epsilon_result/result") do |element|
    element.attributes.each do |name, value|
        response[name] = CGI.unescape(value)
    end
end
result_html = nil

パラメータの設定、オーダー情報確認 CGIへのPOST

$request = new HTTP_Request2($getsales_url, HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'ssl_verify_peer' => false,
#  'ssl_verify_peer' => true,
  'ssl_cafile' => '/etc/ssl/certs/ca-bundle.crt', //ルートCA証明書ファイルを指定
));
$request->setHeader("Content-Type","application/x-www-form-urlencoded");
$request->setBody("trans_code=" . $trans_code);

$request->setAuth($user_id, $passwd,HTTP_Request2::AUTH_BASIC);
$response = $request->send();

応答内容の解析

if (PEAR::isError($response)) {		
  // インターフェイスCGIの実行に失敗した場合		
  	$err_msg = "データの送信に失敗しました

"; $err_msg .= "
res_statusCd=" . $response->getStatus(); $err_msg .= "
res_status=" . $response ->getHeader('Status'); echo $err_msg; exit; } // CGIの実行に成功した場合、応答内容(XML)を解析します // 応答内容(XML)の解析 $res_code = $response ->getStatus(); $res_content = $response ->getBody(); #fputs(STDERR, $res_content ); //xml unserializer $temp_xml_res = $res_content;#str_replace("x-sjis-cp932", "Shift-JIS", $res_content); $unserializer =& new XML_Unserializer(); $unserializer->setOption('parseAttributes', TRUE); $unseriliz_st = $unserializer->unserialize($temp_xml_res); if ($unseriliz_st === true) { //xmlを解析 $res_array = $unserializer->getUnserializedData(); //error check if($res_array['result']['result'] == "0"){ echo "処理に失敗しました

"; exit(1); } $res_param_array = array(); //pram setting foreach($res_array['result'] as $uns_k => $uns_v){ list($result_atr_key, $result_atr_val) = each($uns_v); $res_param_array[$result_atr_key] = mb_convert_encoding(urldecode($result_atr_val), "UTF-8" ,"auto"); } $debug_printj .= "
xml_memo2_msg=" . $xml_memo2_msg; }else{ //xml parser error echo "xml parser error

"; exit(1); }

パラメータの設定、オーダー情報確認 CGIへのPOST

// 決済結果を取得する
EpsilonGetSales epsilonGetSales = new EpsilonGetSales(config);
GetSalesResultInfo salesReulstInfo = epsilonGetSales.execute(transCode);

応答内容の解析

if( salesReulstInfo == null ){	
	request.setAttribute("err_msg", "決済結果取得接続処理でエラーが発生しました");
}else{	
	request.setAttribute("resultInfo", salesReulstInfo);
}

パラメータの設定、オーダー情報確認 CGIへのPOST

my $ua = LWP::UserAgent->new;
$ua->ssl_opts( verify_hostname => 0 );
my $req = HTTP::Request->new(POST => $getsales_url);
$req->content_type('application/x-www-form-urlencoded');
$req->content("trans_code=$trans_code&contract_code=$user_id");
my $res = $ua->request($req);

応答内容の解析

if (! $res->is_success){	
  # インターフェイスCGIの実行に失敗した場合	
  $err_msg = sprintf "HTTPリクエストの送信に失敗しました。%s:%s",$res->code,$res->message;	
  print_html($err_msg);	
  exit;	
}	
# CGIの実行に成功した場合、応答内容(XML)を解析します	
my $xml = $res->content;	
my $parser = new XML::DOM::Parser;	
my $doc = $parser->parse($xml);	
my $nodes = $doc->getElementsByTagName ("Epsilon_result")->item(0)->getElementsByTagName("result");	
my $n = $nodes->getLength;	
for (my $i = 0; $i < $n; $i++){	
  my $node = $nodes->item ($i);	
  traverse($node);	
}	
sub traverse {	
  my($node)= @_;	
  if ($node->getNodeType == ELEMENT_NODE) {	
    foreach my $child ($node->getChildNodes()) {	
      traverse($child);	
    }	
    foreach my $at ($node->getAttributes){	
      # 値の取得	
      my $value = $at->item(0)->getNodeValue;	
      # URLデコード (値はURLエンコードされています。)	
      $value =~ s/\+/ /g;	
      $value =~ s/%([a-fA-F0-9]{2})/ chr(hex($1))/ge;	
   #$value = Encode::decode('shiftjis',$value);	
      # 変数名と値を連想配列に格納	
      $response{$at->item(0)->getNodeName} = $value	
    }	
	
  }

注文情報の確認

取引での決済(コンビニ決済の場合は注文受付)完了後、取引の詳細な情報を確認するための処理です。
以下のパラメータを付与し、オーダー情報確認 CGI(https://beta.epsilon.jp/cgi-bin/order/getsales2.cgi)に接続することで、取引のデータをXML形式にて返却します。

送信パラメータ一覧
項目名 パラメータ名 属性 説明
1 契約コード contract_code 半角数字 8桁 12345600 弊社から提供しております契約番号となります。
複数の契約番号を利用されている加盟店様につきましては詳細な情報を取得したい取引の契約番号を設定
2 トランザクションコード trans_code 半角数字 99999999 詳細な情報を取得したい取引のトランザクションコードを設定
決済もしくは注文受付時にイプシロンで採番し送信した値を設定のこと
受信パラメータ一覧
項目名 パラメータ名 種別 属性 説明
1 トランザクションコード trans_code 半角数字 イプシロンで発行する取引単位のID、全てユニークの番号
2 オーダー番号 order_number URLエンコード済み 設定した「order_number」と同様
3 支払い状態 state 半角数字 支払いの状態が表示
1:支払い済み 、0:決済未完了
コンビニ決済の場合入金処理が行われた時に支払い済みとなるため、オンライン取引の際には0が設定される
4 ユーザーID user_id URLエンコード済み 設定した「user_id」と同様
5 ユーザー氏名 user_name URLエンコード済み(S-JIS) 設定した「user_name」と同様
6 処理区分 process_code 半角数字 設定した「process_code」と同様 コンビニ決済の場合「1」が設定
7 価格 item_price 半角数字 設定した「item_price」と同様
8 予備1 memo1 URLエンコード済み(S-JIS) 設定した「memo1」と同様
9 予備2 memo2 URLエンコード済み(S-JIS) 設定した「memo2」と同様
10 課金区分 mission_code 半角数字 設定した「mission_code」と同様
コンビニ決済の場合「1」が設定
11 メールアドレス user_mail_add URLエンコード済み 設定した「user_mail_add」と同様
12 決済区分 st_code URLエンコード済み 設定した「st_code」と同様
コンビニ決済でブランド指定の場合 「00100-0000-00000-00000-00000-00000-00000」が設定
13 契約コード contract_code 半角数字 設定した「contract_code」と同様
14 商品名 item_name URLエンコード済み(S-JIS) 設定した「item_name」と同様
15 決済方法 payment_code 半角数字 実際に選択された決済方法を設定
3:コンビニ決済 *当応答ではコンビニ決済のみ返ってきます。
16 商品コード item_code URLエンコード済み 設定した「item_code」と同様
17 コンビニ種別 conveni_code 半角数字 決済に利用したコンビニのブランドおよびペイジー 11:セブンイレブン、21ファミリーマート、 31:ローソン、32:セイコーマート、88:ペイジー
18 受付番号 receipt_no 半角数字 コンビニ各社の受付番号 セブンイレブン:13桁 ファミリーマート:12桁 ローソン、セイコーマート:7桁
19 企業コード kigyou_code 半角数字(5桁) コンビニ決済:ファミリーマート を選択時のみ設定
20 払込票URL haraikomi_url URLエンコード済み
デコード後
英数字と「:」「/」「.」「~」「?」「=」「&」の記号
コンビニ決済:セブンイレブン選択時のみ設定
21 入金済みフラグ paid 半角数字(1桁) 支払いの状態が表示。
1:支払い済み 、0:決済未完了
コンビニ決済の場合入金処理が行われた時に支払い済みとなるため、オンライン取引の際には0が設定される
22 受付日時 receipt_date URLエンコード済み
デコード後
YYYY-MM-DD hh:mm:ss
イプシロンでコンビニ決済を受け付けた日時が設定
23 コンビニ支払期限 conveni_limit URLエンコード済み
デコード後
YYYY-MM-DD
当日 + 0~10日のコンビニ会社への入金期限の設定。
未設定の場合はイプシロン管理画面の設定が採用されます。
イプシロン管理画面の設定より「conveni_limit」の指定が優先されます。
24 コンビニ入金日時 conveni_time × URLエンコード済み
デコード後
YYYY-MM-DD hh:mm:ss
購入者様がコンビニへ入金した日時 オンライン取引の際には未入金ですので空文字が設定

カード決済の取消・金額変更について

カード決済の取消・金額変更はイプシロンの管理画面または専用のCGIにて処理が可能です。
CGIの詳細は、管理画面よりダウンロードいただける「イプシロン決済システム仕様書」にてご確認いただけます。

▼仕様書のダウンロードはこちら
管理画面【サポート】⇒【各種資料ダウンロード】