送受信パラメータの仕様

トークン決済はカード情報を入力する画面が加盟店様側の画面となるため、加盟店様のシステムにてカード情報非保持、非通貨に対応するためのシステム設計上の難易度も高くなってまいります。 トークン決済の利用を希望される場合はシステム構築の観点も含め、十分に検討をお願いいたします。

1.トークン取得

(1)Javascript格納先

トークン取得のためのJavascriptのリンクは以下になります。
【本番環境】 https://secure.epsilon.jp/js/token.js
【テスト環境】 https://beta.epsilon.jp/js/token.js

(2)トークン発行処理の導入手順

以下はクレジットカードAPIへ接続する前に加盟店様にて実施いただく内容になります。 コード例について、弊社では一切の責任を負いません。
実装に当たっては、加盟店様にて十分な検証を行なっていただくよう、お願いいたします。

購入画面の全体イメージ

<!DOCTYPE html>
<html><head>
<meta charset="UTF-8">
<!--本番環境をご利用の場合は本番環境のURLを設定してください-->
<script src= 'https://beta.epsilon.jp/cgi-bin/order/js/token.js'></script>
<title>加盟店様購入画面</title>
<script>
<!--トークン結果取得-->
function execTrade ( response ) {
if( response.resultCode != 000 ){
window.alert( ‘購入処理中にエラーが発生しました’ )
}else{
//カード情報は念のため値を除去
document.getElementById(‘cardno’).value=””; 
document.getElementById(‘expire_year’).value=””
document.getElementById(‘expire_month’).value=””
document.getElementById(‘securitycode’).value=””
//予め購入フォームに用意したtokenフィールドに、値を設定
document.getElementById(‘token’).value = response.tokenObject.token;
//スクリプトからフォームをsubmit
document.getEmentsById(‘purchaseForm’).submit() 
}
}

<!--トークン発行-->
function postForm( calltype ) {
var cardObj = {};
cardObj.cardno = document.getElementById('cardno').value;
cardObj.expire = document.getElementById('expire_year').value + document.getElementById('expire_month').value;
cardObj.securitycode = document.getElementById('securitycode').value;
cardObj.holdername = document.getElementById('holdername').value;
EpsilonToken.init(document.getElementById("contract_code").value);
if( calltype == 'string')
{
EpsilonToken.getToken( cardObj , "execTrade" );
}else{
EpsilonToken.getToken( cardObj , execTrade );
}
}
</script>
</head>
<body>
<form id='getTokenForm'>
<p>     カード番号:<input type='text' value='' name='cardno' id='cardno' />
</p>
<p>     カード有効期限:<input type='text' value='' name='expire_year' id='expire_year' />/     <input type='text' value='' name='expire_month' id='expire_month' />
</p>
<p>     セキュリティコード:<input type='text' value='' name='securitycode' id='securitycode' />
</p>
<p>     名義人:<input type='text' value='' name='holdername' id='holdername' />
</p>
<p>
<!--結果をオブジェクトで受け取る場合-->
<input type='button' value='購入する(object)' onclick="postForm('object')" />
<!--結果を一覧で受け取る場合-->
<input type='button' value='購入する(string)' onclick="postForm('string')" />
</p>
</form>
<form id='purchaseForm' action='(加盟店様URL)' method='post'>
<p>
<input type='hidden' value='' name='kameitenn_chumon_bango'  />
<!-- 加盟店での注文番号等、決済を特定できる情報 -->
<input type='hidden' value='' name='token'  />
<!-- 取得したトークンを設定するプレースホルダ -->
</p>
</form>
<p>
</body>
</html>

課金区分の指定

// 課金区分 (1:一回のみ 21~32:定期課金)
// 定期課金について契約がない場合は利用できません。また、定期課金を設定した場合決済区分はクレジットカード決済のみとなります。
$mission_code = $_REQUEST['mission_code'];		

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

$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、応答内容の解析は、都度課金と同様。

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

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、応答内容の解析は、都度課金と同様。

課金区分の指定

# 課金区分 (1:一回のみ 21~32:定期課金)	
# 定期課金について契約がない場合は利用できません。また、定期課金を設定した場合決済区分はクレジットカード決済のみとなります。
my $mission_code = $q->param("mission_code") || 1;

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

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、応答内容の解析は、都度課金と同様。

(3)トークン発行時送信パラメータ
No. 項目名 パラメータ名 属性 必須 説明
契約コード contract_code 半角英数字
8byte(固定)
12345600 イプシロンが加盟店様ごとに採番 します。
申込時にイプシロンの申込完了画面及びメールにて通知します。
イプシロンオブジェクト cardObj オブジェクト cardObj 以下のプロパティ(cardno、expire、securitycode、holdername)を持つJavascriptオブジェクト形式です。
カード番号 cardno 半角数字
10桁~16桁以内
4111111111111110 イプシロンオブジェクト内のプロパティです。
トークン生成対象のカード番号を設定してください。
有効期限 expire 半角数字
6桁
202012 イプシロンオブジェクト内のプロパティです。
トークン生成対象のカード有効期限を設定してください。
セキュリティコード securitycode 半角数字
3-4桁
123   イプシロンオブジェクト内のプロパティです。
トークン生成対象のカードセキュリティコードを設定してください。
カード名義人 holdername 半角文字 EPSILON TAROU   イプシロンオブジェクト内のプロパティです。
トークン生成対象のカード名義人を設定してください。
(4)トークン発行結果受信パラメータ 
No. 項目名 パラメータ名 属性 必須 説明
トークン生成結果 resultCode 半角数値
3桁
12345600 エラーコードについては別表を参照してください。
トークンオブジェクト tokenObject オブジェクト cardObj 以下のプロパティ(cardno、expire、securitycode、holdername)を持つJavascriptオブジェクト形式です。
カード番号 cardno 半角数字
10桁~16桁以内
4111111111111110 イプシロンオブジェクト内のプロパティです。
トークン生成対象のカード番号を設定してください。
有効期限 expire 半角数字
6桁
202012 イプシロンオブジェクト内のプロパティです。
トークン生成対象のカード有効期限を設定してください。
セキュリティコード securitycode 半角数字
3-4桁
123   イプシロンオブジェクト内のプロパティです。
トークン生成対象のカードセキュリティコードを設定してください。
カード名義人 holdername 半角文字 EPSILON TAROU   イプシロンオブジェクト内のプロパティです。
トークン生成対象のカード名義人を設定してください。