Developer/接続方式/API型/ワンタイムトークンシステム

ワンタイムトークンシステム

オンライン決済 ASP のワンタイムトークンは、エンドユーザーが入力したクレジットカード情報を、ワンタイムトークン(別の文字列)に変換したうえで決済を行うことです。加盟店は、当社が提供するワンタイムトークンの JavaScript を加盟店サイトに組み込むことで、クレジットカード情報を保持せずに決済できます。

利用イメージ

利用可能な決済手段

クレジットカード決済

ワンタイムトークン取得から決済要求(ワンタイムトークン利用)API の流れは、以下のとおりです。ワンタイムトークン取得後の決済の流れの詳細については、API 型システム仕様書(基本仕様)を参照ください。

ワンタイムトークン システムのインターフェースは以下のとおりです。なお、フォーマットは API型と同様のXMLフォーマットを使用します。詳しくは、API 型システム仕様書(基本仕様)を参照ください。

ファイルcom_sbps_system_token.js
関数名com_sbps_system.generateToken
接続先サービス開始時ご案内
オブジェクト名/関数名 項目名 説明 備考
tokenRequestトークンリクエストワンタイムトークン生成で必要となるプロパティを指定したオブジェクト加盟店サイトで取得したカード情報を設定
callbackコールバックワンタイムトークン取得後にコールバックする関数

ワンタイムトークンリクエスト

≪型について≫9:数値型(1Byte の 0~9)、X:半角文字列、M:マルチバイト文字列(BASE64 エンコード必須)

SEQ タグエレメント名 項目名 桁数 必須 タイプ 設定内容 備考
1merchantIdマーチャント ID59固定加盟店を識別するID当社で指定
2serviceIdサービス ID39固定加盟店のサービスを識別する ID当社で指定
3ccNumberクレジットカード番号169可変0~9999999999999999(ハイフンはなし)
4ccExpiration有効期限69固定YYYYMM
5securityCodeセキュリティコード49固定[0-9]の 3 又は4 桁使用する場合には、加盟店での入力チェックをお願いします。
オブジェクト名/関数名 項目名 説明 備考
responseレスポンス結果ワンタイムトークン情報結果オブジェクト当社で生成したワンタイムトークン情報を返却

レスポンス結果(正常時)

≪型について≫9:数値型(1Byte の 0~9)、X:半角文字列、M:マルチバイト文字列(BASE64 エンコード必須)

SEQ タグエレメント名 項目名 桁数 必須 タイプ 設定内容 備考
1result結果ステータス2X固定OK:要求処理 OK
2tokenResponseトークンレスポンス可変ワンタイムトークン情報結果オブジェクト
3tokenトークンX可変
4tokenKeyトークンキーX可変
5maskedCcNumberクレジットカード番号16X可変
6ccExpirationクレジットカード有効期限6固定送信されたクレジットカード有効期限
7cardBrandCodeカード会社ブランドコード1X固定クレジットカード会社のブランドコード
J:JCB ブランド
V:Visa ブランド
M:Master ブランド
A:AMEX ブランド
D:Diners ブランド
X:その他

レスポンス結果(異常時)

≪型について≫9:数値型(1Byte の 0~9)、X:半角文字列、M:マルチバイト文字列(BASE64 エンコード必須)

SEQ タグエレメント名 項目名 桁数 必須 タイプ 設定内容 備考
1result結果ステータス2X固定NG:要求処理 NG
2errorCodeエラーコード5X固定エラーコード一覧参照

返却されるエラーコード体系は、以下のとおりです。

1-2 桁目 :種別を表します。※半角英数字 2 桁固定長
3-5 桁目 :項目を表します。※半角英数字 3 桁固定長

種別コード

コード 種別 説明
リクエスト情報に関するエラー
03必須エラー必須項目に値が指定されていない
04属性エラー許容文字属性不正
05桁数エラー許容桁数(バイト数)範囲外
07定義値エラー定義値外の値が指定されている
サーバーで発生するエラー
99システムエラー内部処理エラーが発生しました

項目コード

コード 種別 説明
クレジットカード情報ワンタイムトークン生成
001マーチャント ID
002サービス ID
003クレジットカード番号
004クレジットカード有効期限
005セキュリティコード
999(該当項目無し)

ワンタイムトークン取得時のイメージは、以下のとおりです。

HTML&JavaScript
                     <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0.1//EN" "http://www.w3.org/TR/html4/strict.dtd"> 	 
<html lang="ja"> 
<head> 
    <script type="text/javascript" src="http://example.co.jp/token/js/com_sbps_system_token.js"></script> 
    <script type="text/javascript"> 	    上記URLはサンプルとなります。 
    <!-- 	                            サービス開始時に別途ご案内いたします     
    function doSubmit(){ 
        // トークン生成ロジック呼び出し 
       com_sbps_system.generateToken({
            merchantId : document.getElementById('merchant_id').value,
            serviceId : document.getElementById('service_id').value,
            ccNumber : document.getElementById('cc_number').value,
            ccExpiration : document.getElementById('cc_expiration').value,
            securityCode : document.getElementById('security_code').value 
        }, afterGenerateToken); 
    } 
 
    var afterGenerateToken = function(response) {
        if (response.result == "OK") {
            document.getElementById('token').value = response.tokenResponse.token;             
            document.getElementById('tokenKey').value = response.tokenResponse.tokenKey; 
            document.getElementById('cardBrandCode').value = response.tokenResponse.cardBrandCode; 
            // マスクされた番号で上書き 
            document.getElementById('cc_number').value = response.tokenResponse.maskedCcNumber; 
            // カード情報のクリア 
            document.getElementById('cc_expiration').value = '';             
            document.getElementById('security_code').value = ''; 
 
            if(window.confirm('トークン取得しました。決済を実施します。')){ 
                document.getElementById('frm').submit(); 
            } else { 
                alert("キャンセルしました。"); 
            } 
        } else { 
            alert('トークン取得に失敗しました。'); 
        } 
    } 
    // --> 
    </script> 
</head> 
 
<body> 
    <h1>トークン生成サンプル</h1> 
    <form name="frm" id="frm" method="POST" action="Confirm.jsp"> 
 
    <dl> 
        <dt>マーチャントID</dt> 
        <dd><input type="text" id="merchant_id" name="merchant_id" maxlength="5" value="12345"></dd> 
 
        <dt>サービスID</dt> 
        <dd><input type="text" id="service_id" name="service_id" maxlength="3" value="001"></dd> 
 
        <dt>クレジットカード番号</dt> 
        <dd><input type="text" id="cc_number" name="cc_number" maxlength="16" value="4111111111111111"></dd> 
 
        <dt>クレジットカード有効期限</dt> 
        <dd><input type="text" id="cc_expiration" name="cc_expiration" maxlength="6" value="202212"></dd> 
 
        <dt>セキュリティコード</dt> 
        <dd><input type="text" id="security_code" name="security_code" maxlength="4" value="1234"></dd> 
    </dl> 
 
    <dl> 
        <dt>トークン</dt> 
        <dd><input type="text" id="token" name="token" value="" disabled></dd>  
        <dt>トークンキー</dt> 
        <dd><input type="text" id="tokenKey" name="tokenKey" value="" disabled></dd>  
        <dt>カード会社ブランドコード</dt> 
        <dd><input type="text" id="cardBrandCode" name="cardBrandCode" value="test" disabled></dd> 
    </dl> 
        <table> 
            <tr><td> 
            <input type="button" name="btnSend" id="btnSend" value="送信" onClick="doSubmit()">             <input type="reset" name="btnReset" id="btnReset" value="リセット"> 
            </td></tr> 
        </table> 
    </form> 
</body> 
</html>
                

ワンタイムトークンの有効期間
ワンタイムトークン発行から一定時間経過すると利用不可となるため、決済要求時直前にワンタイムトークン取得することを推奨します。使用不可となった場合は、改めて取得ください。

ブラウザ設定について
JavaScript の動作するブラウザを前提としています。JavaScript の動作しない環境については動作保証しません。

利用可能な暗号化プロトコルについて
当社が準拠する PCI DSS の定めにより「SSL 3.0」「TLS 1.0」は利用できません。
また、「TLS 1.1」に関しても暗号化方式としての脆弱性に指摘があり、将来的に使用を禁止される可能性が高いため、加盟店においては「TLS 1.2」を利用ください。

このページは役に立ちましたか?