CyberSource SCMP API - ASP
開発者ガ イ ド
サイバー ソ ースについて
サイバー ソ ースの連絡先
http://www.cybersource.co.jp/
サ イ バー ソ ース株式会社の会社概要、 サービ ス の概要、FAQな ど を用意 し てお り ます。
[email protected] ま たは 03-3548-9873 営業グループ
サービ スや料金に関す る お問い合わせは こ ち ら ま で ど う ぞ。
http://www.cybersource.co.jp/supportcenter/
サ イ バー ソ ース サポー ト リ ン ク 一覧です。
ま たは03-3548-9874 (サポー ト 直通)
カ ス タ マーサポー ト
技術面に対す る お問い合わせは こ ち ら ま で ど う ぞ。
サ イ バー ソ ース株式会社
〒100-0004
東京都千代田区大手町2-1-1 tel: 03-3548-9873 (代表)
fax: 03-3548-9872
こ の文書について
お こ と わ り
• 当社の同意無 く 本ガ イ ド の全部ま たは一部の複写 ・ 複製 ・ 転載をす る こ と を固 く 禁 じ ます。
• 本ガ イ ド の内容は将来予告な し に更新 さ れ る こ と が ご ざ い ま すので、 ご留意下 さ い。
• 本ガ イ ド の記述内容については万全を期 し てお り ますが、 不備等、 お気づ き の点が ご ざい ま し た ら 、 お手数ですが上記の問い合わせ先ま で ご連絡下 さ い。
サイバー ソ ースについて
変更履歴
Copyright
Copyright (C) 2012 CyberSource K.K. All rights reserved.
(C)CyberSource Corporation. All rights reserved.CyberSource Corporation ( 以 下、
「CyberSource」 ) は、 本ガ イ ド お よ び本ガ イ ド で説明す る ソ フ ト ウ ェ ア を、 本ガ イ ド の 読者(以下、 「お客様」 ) と CyberSource 間の所定の契約書(以下、 「本契約書」 ) の下に 提供す る も の と し ます。 本ガ イ ド お よ び ソ フ ト ウ ェ アは、 本契約書の条項に従っ ての み使用す る こ と がで き ます。 本契約書で明示的に記述 さ れてい る 場合を除 き 、 本ガ イ ド に記載 さ れてい る 情報は、 予告な く 変更す る 場合があ る ため、CyberSource の一切の 保証を意味す る も のではあ り ません。CyberSource は、 本ガ イ ド に誤 り や不正確な記述 があ っ た場合に も 、 一切の責任を負い ま せん。 本ガ イ ド に付随す る 著作権のあ る ソ フ ト ウ ェ アは、 お客様が本契約書の条項を厳守す る 場合にのみ使用が許可 さ れ ます。 ソ フ ト ウ ェ ア を使用す る 前に、 必ず本契約書を慎重にお読み く だ さ い。 本契約書に よ り 許可 さ れてい る 場合を除 き 、 本ガ イ ド のいかな る 部分 も 、CyberSource の書面に よ る 事 前の許可な し に、 電子的、 機械的、 録音、 その他いかな る 手段に よ っ て も 、 検索シ ス テ ムへの保存、 ま たは伝送を行 う こ と はで き ません。
商標
CyberSource、the CyberSource logo、SmartCert、 お よ びPaylinX は、 米国CyberSource の 米国 お よ び そ の 他 の 国 に お け る 登録 商標 で す。The Power of Payment、CyberSource Payment Manager、CyberSource Risk Manager、CyberSource Decision Manager、 お よ び
CyberSource Connect は、 米国 CyberSource Corporation の商標ま たはサービ ス マー ク で
す。 その他の会社名ま たは製品名は、 それぞれの会社の商標ま たは登録商標です。
表 1: 変更履歴
変更月 内容
February 2012 • サイバー ソ ースの連絡先を更新
June 2008 • こ のガ イ ド の他に必要な他の文書を ア ッ プデー ト
• シ ス テム要件に 「32ビ ッ ト プ ロ セ ッ サのみ」 を追加 December 2006 • ICS2開発者ガ イ ド よ り 、 分冊 リ リ ース
商標
目次
サイバー ソ ースについて... ii
サ イ バー ソ ース の連絡先... ii
こ の文書について... ii
お こ と わ り... ii
変更履歴... iii
Copyright... iii
商標... iii
第 1 章
SDK for ASPの紹介... 1CyberSource ICSサービ ス... 1
こ のガ イ ド の他に必要な他の文書... 1
基本的なASPの例... 2
第 2 章
SDK for ASPのイ ン ス ト ール... 5シ ス テ ム要件... 5
SDKの イ ン ス ト ール... 5
SDKの内容... 6
証明書フ ァ イ ル と 秘密鍵フ ァ イ ルの生成... 6
鍵のパ ス指定... 7
COM コ ン ポーネ ン ト の登録... 8
SDK イ ン ス ト ールのテ ス ト... 8
本番環境への移行... 8
第 3 章
SDK for ASPの使用... 11ICSサービ ス の リ ク エ ス ト... 11
リ ク エ ス ト の構築お よ び送信... 11
ICSオブジ ェ ク ト の作成... 11
ICSオブジ ェ ク ト のプ ロ パテ ィ 設定... 12
リ ク エ ス ト へのサービ ス の追加... 12
リ ク エ ス ト フ ィ ール ド の追加... 12
オ フ ァ ーフ ィ ール ド の追加... 13
リ ク エ ス ト フ ィ ール ド 値の取得... 14
リ ク エ ス ト の送信... 14
リ プ ラ イ の受信 と 処理... 14
オブジ ェ ク ト 内の フ ィ ール ド の ク リ ア... 16
プ ロ キ シサポー ト... 16
複数のサービ ス の リ ク エ ス ト... 17
タ イ ム ア ウ ト と 自動再試行... 17
再試行を行わない ト ラ ンザ ク シ ョ ンの動作... 18
再試行を行 う ト ラ ンザ ク シ ョ ン の動作... 18
再試行 リ プ ラ イ フ ィ ール ド の評価... 18
再試行お よ び タ イ ム ア ウ ト のパ ラ メ ー タ 設定... 19
再試行の有効化... 19
retry_start値の設定... 19
timeout値の設定... 19
シ ス テ ム エ ラ ー と 再試行... 19
第 4 章
API for the ASP SDK ... 21ICSオブジ ェ ク ト... 21
AddToOffer ... 23
Clear ... 23
GetRequestValue ... 24
GetResponseValue ... 24
Send ... 24
SetValue ... 25
第 1 章
SDK for ASP の紹介
本章では、 CyberSourceR Software Development Kit (SDK) for ASP について説明 し ます。
本章は次のセ ク シ ョ ン で構成 さ れてい ます。
• CyberSource ICSサービ ス
• こ のガ イ ド の他に必要な他の文書
• 基本的なASPの例
CyberSource ICS サービ ス
SDK の 目的 は、Active Server Pages (ASP) を 使用 し て すべ て の CyberSource Internet
Commerce SuiteSM (ICS) サービ ス にア ク セ ス で き る よ う にす る こ と です。ICSサービ
ス では、SCMP (Simple Commerce Messaging Protocol) と い う 名前/値(name/value) ペア のAPI を使用 し ます。 本ガ イ ド では、 その名前/値のペア を使用す る ための ASPペー
ジ と VBScriptの実装方法について説明 し ます。
Note 本章で説明す る 手順は、VBScript と ASP について熟知 し てい る こ と を前提 と し てい ます。
CyberSource ICS サービ ス のユーザは、 次の こ と が可能な グ ラ フ ィ カル イ ン タ ーフ ェ イ
ス を提供す る ビ ジネ ス セ ン タ ーを利用で き ます。
• ト ラ ンザ ク シ ョ ンに関す る 詳細の表示
• レ ポー ト の表示 と ダ ウ ン ロ ー ド
• 顧客の決済 と 返金の処理
サ イ バー ソ ー ス にマーチ ャ ン ト ID を登録 し た後、 テ ス ト 環境用の ビ ジ ネ ス セ ン タ ー
(https://ebctest.cybersource.com) を使用で き ま す。 本番環境への移行後は、 本番環境用
(https://ebc.cybersource.com) も 使用で き ます。 いずれのWebサ イ ト に ロ グ イ ンす る 場合 も 、 貴社がサ イ バー ソ ース にマーチ ャ ン ト IDを登録 し た と き に設定 し たマーチ ャ ン ト ID と パ ス ワー ド を、 ユーザ名 と パ ス ワー ド と し て使用 し ます。
ビ ジネ ス セ ン タ ーに ロ グ イ ン し た後は、 ど のページで も [Help] ボ タ ン を ク リ ッ ク す る と オ ン ラ イ ンヘルプが表示 さ れ ます。
こ のガ イ ド の他に必要な他の文書
こ のセ ク シ ョ ン では、 サ イ バー ソ ース と の統合に必要な文書について説明 し ます。
• 『 ク レ ジ ッ ト カー ド 決済サービ ス導入ガ イ ド 』:CyberSource ICS ク レ ジ ッ ト カー ド 決 済サービ ス を使用す る ための API について説明 し てい ます。 こ のガ イ ド を読む と
き は必ず、 「シ ン プルAPI」 の章ではな く 、 「SCMP API」 の章を参照 し て く だ さ い。
• 利用予定のその他ICSサービ ス に関す る 実装ガ イ ド 。
基本的なASPの例
基本的な ASP の例
VBScriptを使用 し てICSサービ ス にア ク セ スす るASPページは、簡単に作成で き ます。
次の例は、 ク レ ジ ッ ト カー ド 与信の リ ク エ ス ト を送信 し て リ プ ラ イ を処理す る ために ASPページで必要 と さ れ る 基本的なVBScriptコ ー ド を示 し てい ます。 コ ー ド の記述方 法に関す る 詳細については、11 ページの「SDK for ASPの使用」を参照 し て く だ さ い。
例 ク レ ジ ッ ト カー ド 与信の リ ク エ ス ト
<%@ Language=VBScript %>
<% Response.Buffer = True %>
<%
// CyberSource ASPコ ンポーネ ン ト のイ ン ス タ ン ス を作成 し ます dim oICS
set oICS = Server.CreateObject("CyberSource.ICS.3")
// オブ ジ ェ ク ト のプ ロパテ ィ を設定 し ます oICS.ServerHost = "ics2test.ic3.com"
oICS.Merchant = "infodev"
oICS.Log = True
oICS.LogPath = "C:\TEMP\"
oICS.LogSize = 10
// リ ク エス ト フ ィ ール ド を設定 し ます
oICS.SetValue "ics_applications", "ics_auth"
oICS.SetValue "merchant_ref_number", "123"
oICS.SetValue "customer_firstname", "ス テ フ ァ ニー"
oICS.SetValue "customer_lastname", "南"
oICS.SetValue "customer_email", "[email protected]"
oICS.SetValue "customer_phone", "88-8555-1212"
oICS.SetValue "customer_cc_number", "4111111111111111"
oICS.SetValue "customer_cc_expmo", "12"
oICS.SetValue "customer_cc_expyr", "2006"
// こ のほかに も必要な フ ィ ール ド があれば追加 し ます // ( こ こ にあげ られている以外に も フ ィ ール ド はあ り ます)
// オ フ ァ ー フ ィ ール ド を設定 し ます
oICS.AddToOffer 0, "amount", "1.00"
oICS.AddToOffer 0, "quantity", "1"
// リ ク エス ト の送信 oICS.Send
SDK for ASPの紹介
// リ プ ラ イ コ ー ド と リ プ ラ イ フ ラ グの受信 と 処理
rcode = CInt(oICS.GetResponseValue("ics_rcode")) rflag = oICS.GetResponseValue("ics_rflag")
rmsg = oICS.GetResponseValue("ics_rmsg") if (rcode < 0) then
Response.Write "Error: " & rmsg
// ユーザにエ ラ ーが発生 し たので再試行する よ う 通知 し ます elseif (rcode = 0) then
Response.Write "Request declined<br>"
Response.Write "ics_rmsg=" & rmsg if (rflag = "DINVALIDDATA") then
// ユーザにデー タ に不正な値が含まれていた こ と を通知 し ます elseif (rflag = "DMISSINGFIELD") then
// ユーザに必須 フ ィ ール ド が設定 さ れていなか っ た こ と を通知 し ます elseif (rflag = "DCARDREFUSED") then
// カ ー ド 会社が与信を拒否 し ま し た。 ユーザに カ ー ド が受付け // で き ない こ と を通知 し ます
else
// 他のエ ラ ーの リ プ ラ イ フ ラ グに関 し て も 同様に処理を記述 し ます end if
else
Response.Write "Request successful<br>"
authCode = oICS.GetResponseValue("auth_auth_code") Response.Write "Auth Code: " & authCode
// ト ラ ンザク シ ョ ン成功。 その後の処理に進みます // ユーザには取引が成功 し た こ と を通知 し ます end if
Response.End
%>
基本的なASPの例
第 2 章
SDK for ASP のイ ン ス ト ール
本章では、SDK for ASPの イ ン ス ト ール、 登録、 お よ びテ ス ト 方法について説明 し ます。
本章は次のセ ク シ ョ ン で構成 さ れてい ます。
• シ ス テム要件
• SDKのイ ン ス ト ール
• COM コ ンポーネ ン ト の登録
• SDKイ ン ス ト ールのテ ス ト
• 本番環境への移行
シ ス テム要件
使用す る シ ス テ ム が次の最小要件を満た し てい る 必要があ り ます。
• Windows NTR Server 4.0ま たはWindowsR 2000
• Microsoft Internet Information Server (IIS) 4.0以降
• 1.2 MBの空 き デ ィ ス ク 容量
• 32ビ ッ ト プ ロ セ ッ サ
SDKでは、 シ フ ト JISエ ン コ ーデ ィ ン グのみを サポー ト し てい ます。
重要 ク ラ イ ア ン ト A P I ホ ス ト に一意なパブ リ ッ ク IPア ド レ ス を設定 し ない と 、 一 貫性のない ト ラ ンザ ク シ ョ ン結果が生 じ ます。
ク ラ イ ア ン ト A P I ホ ス ト に一意なパブ リ ッ クIPア ド レ ス を設定す る こ と を サ イ バー ソ ース は強 く お勧め し ます。 設定 し ない と 、 一貫性のない ト ラ ンザ ク シ ョ ン結果が生 じ ます。 ク ラ イ ア ン ト APIの リ ク エ ス ト IDアルゴ リ ズ ム では、IPア ド レ ス と シ ス テ ム時 刻、 お よ びその他の値の組み合わせを使用 し ます。 一部のアーキ テ ク チ ャ では、 こ の組 み合わせに よ っ て一意なIDが生成 さ れない可能性があ り ます。 コ ン ピ ュ ー タ に一意な IP ア ド レ ス を設定す る こ と が不可能な場合、 サ イ バー ソ ー ス はホ ス ト を容易に識別す る た めの ク ラ イ ア ン ト 設定パ ラ メ ー タ を 提供 し ま す。CyberSource SCMP API SDK for ASPでは、 こ の設定パ ラ メ ー タ はHostIDです。 こ れはICSオブジ ェ ク ト プ ロ パテ ィ で
す。 127.0.0.1の値は使用で き ません。
SDK のイ ン ス ト ール
1 最新の ASP COM SDK パ ッ ケージ を サ イ バー ソ ース サポー ト セ ン タ ーか ら ダ ウ ン
ロ ー ド し ます。
2 実行フ ァ イ ルを実行 し 、InstallShield(R) ウ ィ ザー ド の手順に従い ます。
重要 すでに旧バージ ョ ンのASP SDKが イ ン ス ト ール さ れてい る 場合は、 InstallShield
Wizard に よ っ て旧バージ ョ ン がア ン イ ン ス ト ール さ れ ます。 実行フ ァ イ ルを再実行 し
て、 新バージ ョ ン を イ ン ス ト ールす る 必要があ り ます。
SDKのイ ン ス ト ール
3 指示に従い、 コ ン ポーネ ン ト の イ ン ス ト ール先デ ィ レ ク ト リ を選択 し ます。
デフ ォ ル ト のデ ィ レ ク ト リ は、
C:\Program Files\CyberSource Corporation\CyberSource SDK for ASPです。
4 指示に従い、Start Menuア イ テ ム を格納す る プ ロ グ ラ ム フ ォ ルダ を選択 し ます。
デフ ォ ル ト のプ ロ グ ラ ム フ ォ ルダはCyberSource SDK for ASPです。
SDK の内容
Program Files\CyberSource Corporation\CyberSource SDK for ASP\ デ ィ レ ク ト リ には、 表 2に示 し た フ ァ イ ルが含ま れてい ます。
証明書 フ ァ イル と 秘密鍵フ ァ イルの生成
サ イ バー ソ ー ス は、 イ ン タ ーネ ッ ト 上で安全に情報をや り と り す る ために公開鍵暗号 方式を使用 し ます。 ト ラ ンザ ク シ ョ ン を サ イ バー ソ ース に送信す る には、SDKに付属 し てい る ECert アプ リ ケーシ ョ ン を使用 し て、 公開証明書 と 秘密鍵を あ ら か じ め生成 し てお く 必要があ り ます。
重要 機密情報が脅威に さ ら さ れない よ う に、秘密鍵は各自の責任において厳重に保護 す る 必要があ り ます。
証明書フ ァ イ ル と 鍵フ ァ イ ルは、 次の フ ァ イ ルで構成 さ れ ます。
• merchant_id.crt -証明書フ ァ イ ル
• merchant_id.pvt - 秘密鍵フ ァ イ ル
表 2:SDKの内容 デ ィ レ ク ト リ または
フ ァ イル 説明
ASP Example\ ASPサン プル コ ー ド です。
Docs\ SDKの旧バージ ョ ンから の変更点が記載 さ れているReadme.txtフ ァ
イルが含まれます。
keys\ ECert を実行 し た後の証明書 フ ァ イル と 秘密鍵 フ ァ イルが含まれま
す。
VB Sample\ テ ス ト ト ラ ンザク シ ョ ン を実行する Visual Basicサン プルプ ロ グ ラ ムが含まれます。
CreateVDirApp.dll IIS 仮想デ ィ レ ク ト リ を作成す る ために イ ン ス ト ールプ ロ グ ラ ムに よ っ て使用 さ れます。
ecert.exe マーチ ャ ン ト の証明書フ ァ イル と 鍵フ ァ イルを作成するECertア プ リ ケーシ ョ ン。
ics2api.dll ICS2ク ラ イ ア ン ト ラ イ ブ ラ リ 。 ics2com.dll ICS2 COMラ イ ブ ラ リ 。
ics2comtest.exe テ ス ト ト ラ ンザ ク シ ョ ン をサイバー ソ ース テ ス ト サーバに送信する コ マ ン ド ラ イ ン プ ログ ラ ム。
regsvr32.exe Windowsシ ス テムにCOMコ ンポーネ ン ト を登録 し ます。
SDK for ASPのイ ン ス ト ール
• merchant_id.pwd -パ ス ワー ド フ ァ イ ル
• CyberSource_SJC_US.crt - サ イ バー ソ ース証明書フ ァ イ ル
証明書フ ァ イ ル と 秘密鍵フ ァ イ ルを生成す る には、 次の手順に従い ます。
1 コ マ ン ド ラ イ ン か ら デ ィ レ ク ト リ を、SDK を イ ン ス ト ール し たデ ィ レ ク ト リ に変 更 し ま す。 デ フ ォ ル ト の デ ィ レ ク ト リ は、 C : \ P r o g r a m F i l e s \ C y b e r S o u r c e Corporation\CyberSource SDK for ASP\です。
2 ECert <merchant_id>を入力 し ます。
こ こ で、<merchant_id>は、 マーチ ャ ン ト IDです。
デフ ォ ル ト では、ECertアプ リ ケーシ ョ ンに よ っ て証明書フ ァ イ ル と 秘密鍵フ ァ イ ルはSDKを イ ン ス ト ール し たkeys\デ ィ レ ク ト リ に書 き 込まれ ます。
3 生成 し た フ ァ イ ルを、ASP SDKを イ ン ス ト ール し た任意のサーバのkeys\デ ィ レ ク ト リ に コ ピー し ます。 証明書 (.crt) フ ァ イ ル と 秘密鍵 (.pvt) フ ァ イ ルは、1組で 使用す る 必要があ り ます。
ECertを実行す る には、 次の構文 と オプシ ョ ン を使用 し ます。
ECert <merchant_id>
[ -help ] [ -version ] [ -noprompt ] [ -update ] [ -display ] [ -debug ] [ -path <keys_directory> ]
[ -proxyurl <url> [ <username> <password> ] ] [ -server <ics_server_host> <ics_server_port> ]
• help: ECert構文を返 し ます。
• version: イ ン ス ト ール し たEcertのバージ ョ ン を報告 し ます。
• noprompt: ユーザに対 し て確認を行わずにEcertが実行 し ます。
• update: 証明書 と 秘密鍵を更新 し ます。 こ のオプシ ョ ンは、 サ イ バー ソ ース証明書
の コ ピー も 更新 し ま す。 証明書がすでにサ イ バー ソ ー ス サーバに存在 し 、 サ イ ト が本番環境へ移行済みの場合にのみ、 こ のオプシ ョ ン を使用で き ます。
• display: 証明書 と 秘密鍵の情報 (有効期限な ど) を表示 し ます。
• debug: ECertアプ リ ケーシ ョ ン でエ ラ ーが発生 し た場合に、デバ ッ グ情報を提供 し
ます。
• path <keys_directory>: Ecert に よ る 鍵の書 き 込み先デ ィ レ ク ト リ のパ ス を指定 し ま す。
• proxyurl <proxy_url> [ <username> <password> ]: ICSサーバに接続す る 前にECertは プ ロ キ シ接続を使用 し ます。 ユーザ名 と パ ス ワ ー ド は省略す る こ と が可能ですが、
使用す る 場合は1組で使用す る 必要があ り ます。
• serverhost <ics_server_host> <ics_server_port>: ECert はサーバ <ics_server_host> と
ポー ト <ics_server_port> を使用 し てサ イ バー ソ ース に接続 し ます。 デフ ォ ル ト の
ホ ス ト サ ー バ は、setup.ic3.com で す。 サ イ バ ー ソ ー ス の テ ス ト サ ー バ は
ics2test.ic3.com、 サ イ バー ソ ース の本番サーバは ics2.ic3.com です。 デフ ォ ル ト の
ポー ト は80です。サ イ バー ソ ース カ ス タ マーサポー ト か ら 特別に指示がない限 り 、 サ イ バー ソ ース のテ ス ト サーバ ま たは本番サーバを使用 し ないで く だ さ い。
鍵のパス指定
ICS リ ク エ ス ト を送信す る と 、 ク ラ イ ア ン ト が次の よ う に鍵フ ァ イ ルを検索 し ます。
1 ICSPATH\keysで、ICSPATHは、 設定 し たWindows環境変数を示 し ます。 こ の環境
COMコ ンポーネ ン ト の登録
ICSPATH\keys内で鍵を検索 し ます。 た と えば、ICSPATH をmyDirectoryに設定 し
た場合、 ク ラ イ ア ン ト がmyDirectory\keys内で鍵を検索 し ます。
2 ICSPATH変数を設定 し ない場合、ク ラ イ ア ン ト はSDKを イ ン ス ト ール し たデ ィ レ
ク ト リ 内で鍵デ ィ レ ク ト リ を検索 し ます。
3 鍵デ ィ レ ク ト リ がそ こ に存在 し ない場合、 ク ラ イ ア ン ト は次のデフ ォ ル ト デ ィ レ ク ト リ 内を検索 し ます。C:\Program Files\CyberSource Corporation\CyberSource SDK for ASP\
COM コ ンポーネ ン ト の登録
イ ン ス ト ールプ ロ グ ラ ム に よ っ て、SDKのCOMコ ン ポーネ ン ト はWindowsシ ス テ ム に自動登録 さ れ ます。SDKま たはSDKの レ ジ ス ト リ 設定が破損 し た場合は、次のいず れか を実行す る こ と でCOMコ ン ポーネ ン ト を再登録で き ます。
• Windows の [ス タ ー ト ] メ ニ ュ ーか ら 次の順に選択 し 、 登録プ ロ グ ラ ム を実行 し
ます。[ス タ ー ト ] > [Programs] > [CyberSource SDK for ASP] > [Register the COM Component]
• コ マ ン ド プ ロ ン プ ト で次の よ う に入力 し て、 手動で登録 し ます。
regsvr32 installpath\ics2com.dll
登録が完了す る と 、 ダ イ ア ロ グ ボ ッ ク ス に次の メ ッ セージが表示 さ れ ます。
DllRegisterServer in installpath\ics2com.dll succeeded.
SDK イ ン ス ト ールのテ ス ト
1 [ス タ ー ト ]、 [Programs]、 [CyberSource SDK for ASP]、 [VB Tester App] の順に選 択 し 、 テ ス ト アプ リ ケーシ ョ ン を実行 し ます。
テ ス ト ト ラ ンザ ク シ ョ ン ウ ィ ン ド ウ が開 き ます。
2 その ウ ィ ン ド ウ で、マーチ ャ ン トIDをICS2Testか ら 貴社のマーチ ャ ン ト IDに変更 し ます。
3 [Run Test] を ク リ ッ ク し ます。
ウ ィ ン ド ウ に、 テ ス ト 結果を示す リ ク エ ス ト お よ び リ プ ラ イ 情報が表示 さ れ ます。
テ ス ト に成功す る と 、ics_rflagフ ィ ール ド でSOK と い う 値が返 さ れ ます。
イ ン ス ト ールが完全でない場合は、 次の メ ッ セージが表示 さ れ ます。
Error: ActiveX component can’ t create object.
本番環境への移行
すべてのシ ス テ ム テ ス ト が完了 し て、 顧客か ら 実際の ト ラ ン ザ ク シ ョ ン を受け入れ る 準備が整っ た ら 、 本番環境に移行で き ます。
本番環境への移行につ き ま し ては、 弊社営業グループにご連絡 く だ さ い。
本番環境へ移行 し た こ と が サ イ バー ソ ー ス に よ っ て 確認 さ れ た ら 、 テ ス ト サーバ
(ics2test.ic3.com) ではな く 本番サーバ (ics2.ic3.com) に リ ク エ ス ト を送信す る よ う に、
シ ス テ ム を更新 し ます。
本番環境への移行後、 実際のカー ド 番号やその他デー タ を使用 し て、 貴社でサポー ト す る すべてのカー ド の種類を テ ス ト し ます。 こ のテ ス ト は自分で自分の会社か ら 購入 す る 実際の ト ラ ンザ ク シ ョ ン であ る ため、100円な ど の少額でテ ス ト を実行 し て く だ さ
SDK for ASPのイ ン ス ト ール
い。 与信、 与信の売上処理、 現金の払戻 し を順に処理 し ます。 複数のサ イ バー ソ ー ス マーチ ャ ン ト IDを持っ てい る 場合は、 それぞれ個別にテ ス ト し て く だ さ い。
本番環境への移行
第 3 章
SDK for ASP の使用
本章では、 ASP SDKを使用 し てICSサービ ス を リ ク エ ス ト す る 方法について説明 し ま す。 本章は次のセ ク シ ョ ン で構成 さ れてい ます。
• ICSサービ スの リ ク エ ス ト
• タ イ ムアウ ト と 自動再試行
• シ ス テムエ ラ ー と 再試行
ICS サービ スの リ ク エ ス ト
CyberSource ICSサービ ス を リ ク エ ス ト す る には、 次の こ と を実行す る 必要があ り ます。
• 使用す る ICSサービ ス に必要な情報を収集す る シ ス テ ム を作成す る
• 次の こ と を実行す る ASPページ を作成す る
• 注文情報を リ ク エ ス ト に組み込む
• リ ク エ ス ト をCyberSource ICSサーバに送信す る
• リ プ ラ イ 情報を処理す る
ICSサービ ス はSCMP APIを使用 し ます。SCMP APIは、 名前/値のペアのAPIフ ィ ー ル ド で構成 さ れてい ます。ク レ ジ ッ ト カー ド 注文に使用す る 名前/値のペアのAPIフ ィ ー ル ド については、 『 ク レ ジ ッ ト カー ド 決済サービ ス導入ガ イ ド 』 で説明 し てい ます。 本 章で説明す る 手順は、SCMP APIの名前/値のペア を正 し く 使用す る ASPページの記述 方法を示 し てい ます。
リ ク エ ス ト の構築および送信
ICSサービ ス にア ク セ スす る には、必要な情報を含めた リ ク エ ス ト を作成 し て送信す る 必要があ り ます。
ICS オブ ジ ェ ク ト の作成
コ ン ポーネ ン ト のprogidは、CyberSource.ICS.3です。 オブジ ェ ク ト を作成す る には、 次 のいずれか を実行 し ます。
• ASP組み込みオブジ ェ ク ト Serverか ら 公開 さ れ るCreateObject関数を呼び出す。
オブジ ェ ク ト の メ ソ ッ ド と プ ロ パテ ィ を呼び出すには、オブジ ェ ク ト に設定 し た変 数を使用 し ます。 こ の例では、oICSです。
• <OBJECT>タ グ を使用す る 。
オブジ ェ ク ト の メ ソ ッ ド と プ ロ パテ ィ を呼び出すには、<OBJECT>タ グのIDに指 定 さ れてい る 値を使用 し ます。
Set oICS = Server.CreateObject("CyberSource.ICS.3")
<OBJECT RUNAT=SERVER PROGID="CyberSource.ICS.3" ID=oICS>
</OBJECT>
ICSサービ スの リ ク エ ス ト
ICS オブ ジ ェ ク ト のプ ロパテ ィ 設定
次に、 オブジ ェ ク ト のプ ロ パテ ィ を設定 し ます。ICS オブジ ェ ク ト に よ っ て公開 さ れ る プ ロ パテ ィ の一覧については、 「ICS Object」 を参照 し て く だ さ い。
Note プ ロ パテ ィ に値を割 り 当て る と 、 それ ま で設定 さ れていた値は上書 き さ れ ます。
Merchantプ ロ パテ ィ を使用す る 代わ り に、SetValue メ ソ ッ ド を使っ てmerchant_id リ ク
エ ス ト フ ィ ール ド の値を設定す る こ と も で き ます。 フ ィ ール ド に対 し て SetValue を呼 び出す こ と に よ り 、 対応す る プ ロ パテ ィ が更新 さ れ ます。
リ ク エ ス ト へのサービ スの追加
次に、SetValue メ ソ ッ ド を使っ て、 使用す る サービ ス を追加 し ます。
各サービ ス名を カ ン マで区切っ て複数のサービ ス を リ ク エ ス ト で き ます。た と えば、次 の コ ー ド を使用 し て、 ク レ ジ ッ ト カー ド 与信 と 売上処理を同時に リ ク エ ス ト で き ます
(「同時売上」 と 呼ばれ ます)。
リ ク エ ス ト フ ィ ール ド の追加
次に、SetValue メ ソ ッ ド を使っ て リ ク エ ス ト フ ィ ール ド を追加 し ます。 こ れ ら の フ ィ ー ル ド には、 顧客お よ び貴社に関す る 基本情報が含ま れ ます。
oICS.ServerHost = "ics2test.ic3.com"
oICS.Merchant = "infodev"
oICS.Log = True
oICS.LogPath = "C:\TEMP\"
oICS.LogSize = 10 Dim Version
Version = oICS.Version Dim arr, elem
arr = oICS.RequestArray ' or oICS.ResponseArray for each elem in arr
response.write elem & "<BR>"
next
oICS.SetValue "merchant_id", "infodev"
oICS.SetValue "ics_applications", "ics_auth"
oICS.SetValue "ics_applications", "ics_auth,ics_bill"
oICS.SetValue "bill_city", Request.Form("City") oICS.SetValue "bill_state", Request.Form("State") oICS.SetValue "bill_zip", Request.Form("Zip")
oICS.SetValue "bill_country", Request.Form("Country")
SDK for ASPの使用
上記の例は、 リ ク エ ス ト に必要な フ ィ ール ド 一覧の一部のみを示 し てい ま す。 ICS ク レ ジ ッ ト カー ド サービ ス の リ ク エ ス ト フ ィ ール ド の完全な一覧については、 『 ク レ ジ ッ
ト カー ド 決済サービ ス導入ガ イ ド 』 を参照 し て く だ さ い。
オ フ ァ ー フ ィ ール ド の追加
次に、AddToOffer メ ソ ッ ド を使っ て、 リ ク エ ス ト にオ フ ァ ー情報 (個々の購入ア イ テ
ム に関す る 情報) を追加 し ます。
ICS ク レ ジ ッ ト カー ド サービ ス のオ フ ァ ーフ ィ ール ド の完全な一覧については、 『 ク レ ジ ッ ト カー ド 決済サービ ス導入ガ イ ド 』 を参照 し て く だ さ い。
買い物か ご に複数のア イ テ ム があ る 場合は、 リ ク エ ス ト に複数のオ フ ァ ーを追加 し ま す。 次の コ ー ド は、 買い物かごの各ア イ テ ム を BasketItemN と い う セ ッ シ ョ ン プ ロ パ テ ィ に保存 さ れたオブジ ェ ク ト と し て実装す る こ と を前提 と し てい ま す。 こ こ で、 N は、 ア イ テ ム を一意に識別す る 整数です。
AddToOfferを使用す る 代わ り に、次の よ う にSetValueを直接呼び出す こ と も で き ます。
各名前 / 値のペアはキ ャ レ ッ ト (^) で区切 り 、 名前 と それに対応す る 値は コ ロ ン (:) で区切 り ます。
Note 注意 AddToOffer と SetValue は情報を互いに上書 き し ます。 つま り 、offerN で
SetValue を呼び出す と 、AddToOfferに よ っ て追加 さ れたア イ テ ム Nのすべての フ ィ ー
ル ド が変更 さ れ ます。 その逆 も 同様です。
AddToOffer を 使用す る と 重複が避け ら れ、 連結処理が行われ る 利点が あ り ま すが、
AddToOffer で追加 し たすべて を何 ら かの理由で消去す る 必要があ る 場合は、SetValue
oICS.AddToOffer offer0, "product_name", oItem.product_name oICS.AddToOffer offer0, "amount", oItem.amount
oICS.AddToOffer offer0, "quantity", oItem.quantity
Dim i, nNumItems, oItem
nNumItems = Session("BasketCount") for i = 0 to nNumItems - 1
set oItem = Session("BasketItem" & i)
oICS.AddToOffer i, "product_name", oItem.product_name oICS.AddToOffer i, "merchant_product_sku",
oItem.merchant_product_sku
oICS.AddToOffer i, "product_code", oItem.product_code oICS.AddToOffer i, "amount", oItem.amount
oICS.AddToOffer i, "quantity", oItem.quantity
oICS.AddToOffer i, "packer_code", oItem.packer_code next
oICS.SetValue "offer0", "product_name:widgets^quantity:2"
ICSサービ スの リ ク エ ス ト
が便利です。 こ の場合は、 オ フ ァ ーア イ テ ム に対 し て SetValue を呼び出 し 、 値を空の 文字列""な ど に設定 し ます。
空の文字列は、 次のAddToOffer呼び出 し 時に新 し い値に上書 き さ れ ます。
リ ク エ ス ト フ ィ ール ド 値の取得
リ ク エ ス ト メ ッ セ ー ジ に 追加 さ れ た フ ィ ール ド 値 を 判断す る 必要 が あ る 場合 は、
GetRequestValue メ ソ ッ ド を使用 し ます。 フ ィ ール ド がなければ、 空の文字列が返 さ れ
ます。
"Mountain View"が返 さ れ ます。
オ フ ァ ー と 共にGetRequestValueを使用す る と 、 こ れ ま でに追加 さ れたオ フ ァ ーレベル の名前/値のペアすべてが返 さ れ ます。 各ペアはキ ャ レ ッ ト (^) で区切 ら れ、 名前 と 値は コ ロ ン (:) で区切 ら れ ます。
"product_name:widgets^quantity:2"が返 さ れ ます。
リ ク エ ス ト の送信
次に、Send メ ソ ッ ド を使用 し て リ ク エ ス ト を サ イ バー ソ ース サーバに送信 し ます。
リ プ ラ イの受信 と 処理
サ イ バー ソ ース ICS サーバに よ っ て リ ク エ ス ト の処理後、 名前/ 値のペアか ら 成 る リ プ ラ イ が返 さ れ ます。 リ ク エ ス ト し たサービ ス や リ ク エ ス ト 結果に応 じ て フ ィ ール ド は異な り ます。
リ プ ラ イ 情報を使用す る には、 それを自分のシ ス テ ムやそのデー タ を使用す る 他のシ ス テ ム に統合す る 必要があ り ます。 こ れにはデー タ の保管処理お よ び情報を必要 と す る 他のサービ スへのデー タ の受け渡 し 処理が含まれ ます。
サ イ バー ソ ー ス か ら 受信 し た リ プ ラ イ フ ラ グお よ びエ ラ ー メ ッ セージ を処理す る ため のエ ラ ーハン ド ラ を記述す る 必要があ り ます。 フ ラ グ ま たはエ ラ ー メ ッ セージ を顧客 に直接見せ る のではな く 、 顧客に結果を伝え る 適切な応答を返 し て く だ さ い。
重要 リ プ ラ イ フ ィ ール ド お よ び理由 コ ー ド はサ イ バー ソ ー ス において新たに追加 さ れ る こ と も あ り ますので、 リ プ ラ イ デー タ を解析す る 際はそのデー タ の順番ではな く フ ィ ール ド 名に基づいて解析 し て く だ さ い。
各 ICS サービ ス には、 処理す る 必要があ る リ プ ラ イ フ ラ グ と エ ラ ー応答の固有の一覧 が あ り ま す。 ク レ ジ ッ ト カー ド サー ビ ス の フ ィ ール ド 一覧につい ては、 『 ク レ ジ ッ ト
oICS.SetValue "offer0", ""
oICS.SetValue "bill_city", "Mountain View"
Response.Write oICS.GetRequestValue("bill_city")
oICS.AddToOffer 0, "product_name", "widgets"
oICS.AddToOffer 0, "quantity", "2"
Response.Write oICS.GetRequestValue("offer0")
oICS.Send
SDK for ASPの使用
カー ド 決済サービ ス 導入ガ イ ド 』 を参照 し て く だ さ い。 リ ク エ ス ト に対す る 評価す る べ き 主要な リ プ ラ イ フ ィ ール ド は、 次の と お り です。
• ics_rcode - リ ク エ ス ト 全体が成功 し たか ど う か を示す 1 桁の コ ー ド 。 コ ー ド は、
次のいずれかにな り ます。
• 1: リ ク エ ス ト が成功 し た場合
• 0: リ ク エ ス ト が拒否 さ れた場合
• -1: エ ラ ーが発生 し た場合
• ics_rflag - リ ク エ ス ト 全体の結果を表す1単語。 フ ラ グは、 次のいずれかにな り ます。
• SOK: リ ク エ ス ト が成功 し た場合
• Dの文字で始ま る フ ラ グ (た と えば、DMISSINGFIELD) : リ ク エ ス ト が拒否 さ れた場合
• Eの文字で始ま る フ ラ グ (た と えば、ESYSTEM) : エ ラ ーが発生 し た場合
• ics_rmsg - リ プ ラ イ フ ラ グ を説明す る メ ッ セージ。 こ の メ ッ セージ を顧客に見せ た り 、 エ ラ ーハン ド ラ の記述に使用 し ないで く だ さ い。
ま た、 リ ク エ ス ト し た各サービ ス について、 サービ ス 結果を示す同様の フ ィ ール ド を 受信 し ます。 フ ィ ール ド 名は、<サービ ス>_rcode、<サービ ス>_rflag、 お よ び<サー
ビ ス >_rmsg です。 た と えば、 ク レ ジ ッ ト カー ド 与信サービ ス (ics_auth) を リ ク エ ス
ト し た場合、auth_rcode、auth_rflag、 お よ びauth_rmsgが返 さ れ ます。
重要 重要サ イ バー ソ ー ス はいつで も 新 し い リ プ ラ イ フ ラ グ を追加す る 権利を留保 し ます。 新 し い リ プ ラ イ フ ラ グ を問題な く 処理で き る よ う に、 エ ラ ーハン ド ラ を記述 し て く だ さ い。
GetResponseValue メ ソ ッ ド を使用 し て、サーバが返 し た フ ィ ール ド 値を取得 し ます。次
の例では、 ク レ ジ ッ ト カー ド 与信サービ ス ics_auth の リ ク エ ス ト に対す る 応答を受信 し ます。
if (CInt(oICS.GetResponseValue("ics_rcode")) < 0) then Response.Write "Error:<BR>"
' ユーザにエ ラ ーが発生 し たので、 あ と で再試行する よ う 通知 し ます
elseif (CInt(oICS.GetResponseValue("ics_rcode")) = 0) then Response.Write "Request declined"
if (CInt(oICS.GetResponseValue("ics_rflag") = "DINVALIDDATA") then
' デー タ に不正な値が含まれていま し た
elseif (CInt(oICS.GetResponseValue("ics_rflag") =
"DMISSINGFIELD")
' 必須フ ィ ール ド に抜けがあ り ま し た
elseif (CInt(oICS.GetResponseValue("ics_rflag") =
"DCARDREFUSED")
' 与信が拒否 さ れま し た。 注文は受け付け ら れない こ と をユーザに通知 し ます
ICSサービ スの リ ク エ ス ト
オブ ジ ェ ク ト 内のフ ィ ール ド のク リ ア
Clear メ ソ ッ ド は、 すべての リ ク エ ス ト お よ び応答の フ ィ ール ド を ク リ ア し ます。 こ れ
に よ り 、 オブジ ェ ク ト を削除、 再作成す る こ と な く 、 新 し いオブジ ェ ク ト を得 る こ と がで き ます。 セ ッ シ ョ ン ス コ ープで作成 さ れたオブジ ェ ク ト では、 こ の方法が特に有 効です。
オブジ ェ ク ト は ロ グ情報を残 し ます。 ロ グ情報は、propertiesLog、LogPath、LogSizeな ど の値 と し て保持 さ れ ます。 ロ グ情報を生成す る 場合は、Log をTrueに設定す る 必要 があ り ます。ClearのたびにLogをTrueに設定す る 必要はあ り ません。
例 フ ィ ール ド の ク リ ア
こ の時点で、ics_applications フ ィ ール ド は、 他の フ ィ ール ド と 共に削除 さ れてい ま す が、LogはTrueの ま ま です。 し たがっ て、 以降の ト ラ ンザ ク シ ョ ン について も ロ グが 記録 さ れ ます。
プ ロキシサポー ト
サ イ バー ソ ース ク ラ イ ア ン ト では、HTTP プ ロ ト コ ルを使用 し て ICS サービ ス と 通信 し ま す。HTTP プ ロ キ シ を 使用す る 必要 が あ る 場合は、 リ ク エ ス ト メ ッ セ ー ジ で
http_proxyフ ィ ール ド を設定 し ます。
else
' 他の リ プ ラ イ フ ラ グに関 し て も 同様に処理 し ます
' サイバー ソ ースが新 し い リ プ ラ イ フ ラ グ を追加 し た ら 、 その処理も 加え ます
else
Response.Write "Request successful"
' ト ラ ンザ ク シ ョ ンは成功 し ま し た。 次の処理に進みます。
' ユーザには ト ラ ンザ ク シ ョ ンが成功 し た こ と を通知 し ます Response.End
end if
oICS.Log = True
oICS.SetValue "ics_applications",
"ics_score,ics_auth,ics_bill,ics_elc"
' 他のフ ィ ール ド を設定する コ ー ド を追加 し ます
oICS.Send
' リ プ ラ イの処理をする コ ー ド を記述 し ます oICS.Clear
oICS.SetValue "http_proxy", "http://yourserver.com"
SDK for ASPの使用
複数のサービ スの リ ク エ ス ト
1つの リ ク エ ス ト で複数のサービ ス を リ ク エ ス ト す る と 、サ イ バー ソ ース に よ っ て特定 の順序でサービ ス が処理 さ れ ます。1つのサービ ス に失敗 し た場合、 リ ク エ ス ト 内の後 続のサービ ス は処理 さ れ ません。
た と えば、 同時売上 ( ク レ ジ ッ ト カー ド 与信 と 売上処理を同時に リ ク エ ス ト ) につい ては、 与信サービ ス に失敗 し た場合、 売上処理サービ ス は処理 さ れ ま せん。 受信す る
リ プ ラ イ には、 与信の リ プ ラ イ フ ィ ール ド のみが含ま れ ます。
多 く のICSサービ ス には 「ignore」 フ ィ ール ド が含まれ ます。 こ の フ ィ ール ド は、 最初 のサービ ス の結果を無視 し て後続のサービ ス を実行す る よ う にサ イ バー ソ ー ス に伝え る も のです。例えば本人認証サービ ス の検証ics_pa_valiadate と ク レ ジ ッ ト カー ド 決済 与信 ics_auth を同時に リ ク エ ス ト す る 場合、 ビ ジネ ス ニーズに応 じ て、 検証サービ ス がエ ラ ー と な っ た場合で も 与信を実行 さ せ る こ と を選択で き ま す。 検証 と 与信を組み 合わせた リ ク エ ス ト で、 ignore_validate_redultフ ィ ール ド を 「yes」 に設定で き ます。
こ の設定に よ り 、 サ イ バー ソ ー ス は本人認証の検証に失敗 し た場合で も 、 与信を実行 す る よ う にな り ます。 こ の場合、 リ プ ラ イ で検証 と 与信の両方の リ プ ラ イ フ ィ ール ド
を取得 し ます。
Note サ イ バー ソ ー ス に よ っ て実行 さ れ る サービ ス についてのみ、 料金が課金 さ れ ま す。
タ イムアウ ト と 自動再試行
リ ク エ ス ト の一部について リ プ ラ イ を受信 し ていない こ と に気付いた場合は、 コ ー ド に よ る 再試行 と タ イ ム ア ウ ト の処理方法 を 調整す る こ と で、 問題 を ト ラ ブルシ ュ ー テ ィ ン グで き ます。
再試行 と タ イ ム ア ウ ト では、 ク ラ イ ア ン ト が リ ク エ ス ト の送信後にサ イ バー ソ ー ス サーバか ら の リ プ ラ イ を待機す る 時間、 お よ び リ ク エ ス ト を自動的に再送信 (再試行
と 呼ぶ) す る か ど う か と 再送信を行 う 時間を制御 し ます。
Note ク ラ イ ア ン ト が再試行を行 う と き 、 再試行 リ ク エ ス ト の リ ク エ ス ト IDは元の リ ク エ ス ト と 同 じ も のです。
• 次の 3 つのパ ラ メ ー タ を使用 し て、 再試行 リ ク エ ス ト と タ イ ム ア ウ ト の動作を制 御で き ます。
• retry_enabled - 最初に リ プ ラ イ を取得で き なか っ た場合に再試行 リ ク エ ス ト
を送信す る か ど う か を指定 し ます。再試行 リ ク エ ス ト はデフ ォ ル ト では無効に な っ てい ます。
• retry_start - 最初に リ ク エ ス ト を サ イ バー ソ ース に送信 し てか ら リ プ ラ イ を受
信す る ま での待機時間 (秒単位) を制御 し ます。 こ こ で設定 し た時間内に リ プ ラ イ が返 さ れなか っ た場合に、 再試行 リ ク エ ス ト が再送信 さ れ ます。 デフ ォ ル
ト 値は30です。
• timeout - (再試行の有無を問わず) タ イ ム ア ウ ト エ ラ ーが返 さ れ る ま で応答
を待機す る 総時間 (秒単位) を制御 し ます。 デフ ォ ル ト 値は110です。
oICS.SetValue "ignore_validate_result", "yes"
タ イ ムアウ ト と 自動再試行
重要 timeout値 と retry_start値の差が3秒未満の場合は、 再試行は行われ ません。
再試行を行わない ト ラ ンザ ク シ ョ ンの動作
再試行が無効にな っ てい る 場合、SDK for ASPは次の よ う に動作 し ます。
1 リ ク エ ス ト を暗号化 し て送信 し ます。timeoutク ロ ッ ク は0秒か ら カ ウ ン ト を開始 し ます。
2 ICSサーバか ら の応答を受信す る ま で、 (timeoutパ ラ メ ー タ で設定 さ れた) 指定の 時間待機 し ます。
指定の時間内にICS サーバか ら 応答がなか っ た場合、 タ イ ム ア ウ ト エ ラ ーが返 さ れ ます。
再試行を行 う ト ラ ンザ ク シ ョ ンの動作
再試行が有効にな っ てい る 場合、SDK for ASPは次の よ う に動作 し ます。
1 リ ク エ ス ト を暗号化 し て送信 し ます。timeoutク ロ ッ ク と retry_startク ロ ッ ク はど ち ら も 0秒か ら カ ウ ン ト を開始 し ます。
2 応答を受信す る ま でretry_startの指定の時間待機す る か、受信 し た場合は応答を返 し ます (いずれか早いほ う )。
3 retry_startの指定の時間内に応答がなか っ た場合、 ク ラ イ ア ン ト は リ ク エ ス ト を再
度暗号化 し て送信 し ま す。 こ の と き 、 最初に送信 し た リ ク エ ス ト と 同 じ リ ク エ ス ト IDを使用 し ます。timeout ク ロ ッ ク はその ま ま カ ウ ン ト を継続 し ます。
リ ク エ ス ト (お よ び受信 し た場合は応答) には、 こ の リ ク エ ス ト が再試行で あ る こ と を示す追加フ ィ ール ド が自動的に含ま れ ます。
4 ク ラ イ ア ン ト は、 応答を受信す る ま でtimeoutの総時間待機す る か、 受信 し た場合 は応答を返 し ます。 (timeout ク ロ ッ ク は最初の リ ク エ ス ト の送信時か ら カ ウ ン ト を開始 し て継続 さ れ ます。)
5 timeoutの総時間内に応答が無か っ た場合、 タ イ ム ア ウ ト エ ラ ーが返 さ れ ます。
た と えば、retry_startが30秒に設定 さ れてお り 、30秒内に応答がなか っ た場合、 ク ラ イ ア ン ト は再試行 リ ク エ ス ト を送信 し ます。
その後、 残 り の タ イ ム ア ウ ト 時間 (timeout か ら retry_start を差 し 引いた時間) 待機 し ます。 た と えば、timeoutが110秒に設定 さ れてい る 場合、 ク ラ イ ア ン ト は110秒か ら 30秒を差 し 引いた時間、 待機 し ます。 その80秒内に応答がなか っ た場合、 タ イ ム ア ウ
ト エ ラ ーが返 さ れ ます。
再試行 リ プ ラ イ フ ィ ール ド の評価
ics_retry フ ィ ール ド を使用 し て再試行 リ ク エ ス ト に成功 し たか ど う か を評価 し ま す。
フ ィ ール ド で、 次のいずれかの値が返 さ れ ます。
• 1 - 元のデー タ で再試行 リ ク エ ス ト に成功 し ま し た。 再処理の必要はあ り ません で し た。
ICS サーバはデー タ ベー ス に応答の記録を保持 し てい ま す。 サ イ バー ソ ー ス は リ ク エ ス ト を再処理す る 必要な く 、 単に元の応答を マーチ ャ ン ト に送信 し ます。
• 0 - リ ク エ ス ト を再処理 し たデー タ か ら 再試行 リ ク エ ス ト に成功 し ま し た。
ICS サーバは リ ク エ ス ト の記録を保持 し てい ま せん。 サ イ バー ソ ー ス は リ ク エ ス ト を再処理 し て応答を マーチ ャ ン ト に送信 し ます。
SDK for ASPの使用
• -1 -処理のエ ラ ーに よ り 再試行 リ ク エ ス ト に失敗 し ま し た。
ICS サーバは リ ク エ ス ト の記録を保持 し てい ますが、 デー タ ベース に応答の記録 を保持 し てい ません。 サ イ バー ソ ー ス は リ ク エ ス ト の再処理を行い ま せん。 ト ラ ンザ ク シ ョ ンの重複を避け る ため、 リ ク エ ス ト を再送信 し ないで く だ さ い。
ト ラ ン ザ ク シ ョ ン の検索や利用可能なデー タ の判断 を す る には、 ビ ジ ネ ス セ ン タ ーの [ ト ラ ンザ ク シ ョ ン検索] 画面を使用 し て く だ さ い。
再試行および タ イ ムアウ ト のパラ メ ー タ 設定
再試行の有効化
retry_enabled値に よ っ て、最初の応答が無か っ た場合に ク ラ イ ア ン ト が再試行 リ ク エ ス
ト を送信す る か ど う か を制御 し ます。 再試行はデフ ォ ル ト では無効にな っ てい ます。
次の コ ー ド を使用 し てretry_enabled を有効に し ます。
こ こ で、 "yes"は大文字 と 小文字を区別 し ます。
retry_start 値の設定
retry_start値に よ っ て、 再試行 リ ク エ ス ト を送信す る ま での待機時間を制御 し ます。 デ
フ ォ ル ト 値は30秒です。 最小値は3秒です。 ただ し 、 こ の値はテ ス ト ト ラ ンザ ク シ ョ ン では受け入れ ら れ ますが、本番環境の ト ラ ンザ ク シ ョ ン では受け入れ ら れ ません。デ フ ォ ル ト 値の30秒か ら 開始 し て く だ さ い。 ど う し て も 30秒以下に設定す る 必要があ る 場合には、 15秒 と 設定 し て く だ さ い。
次の コ ー ド を使用 し てretry_start値を設定で き ます。
timeout 値の設定
timeout値に よ っ て、 リ ク エ ス ト を送信 し 応答を受信す る ま で待機す る 最大時間を制御
し ます。 こ の時間は、 ク ラ イ ア ン ト が最初の リ ク エ ス ト を送信す る 時点か ら カ ウ ン ト を開始 し ます。 デフ ォ ル ト 値は 110 秒です。 再試行が有効にな っ てい る 場合は最小値 であ る6秒未満には設定で き ません。
次の コ ー ド を使用 し てtimeout値を設定で き ます。
重要 再試行が有効にな っ てい る 場合は、timeout値を6秒未満には設定で き ません。 ま
た、timeout値はretry_start値 よ り も 最低3秒以上高 く 設定す る 必要があ り ます。timeout
値ま たはretry_start値が低すぎ る か無効な場合は、 エ ラ ーが返 さ れ、 再試行 リ ク エ ス ト は送信 さ れ ません。
シ ス テムエ ラ ー と 再試行
oICS.SetValue "retry_enabled", "yes"
oICS.SetValue "retry_start", "15"
oICS.SetValue "timeout", "90"
シス テムエ ラ ー と 再試行
はあ り ま せん。 サ イ バー ソ ー ス シ ス テ ム エ ラ ーを正 し く 処理す る 方法を組み込んで ト ラ ンザ ク シ ョ ン管理シ ス テ ム を設計す る 必要があ り ます ( リ プ ラ イ を正常に受信 し 、そ の リ プ ラ イ がics_rflag=ESYSTEMの場合です。ics_rflagに関す る 詳細については、 リ プ ラ イの受信 と 処理を参照 し て く だ さ い)。
ト ラ ン ザ ク シ ョ ン を処理す る 決済プ ロ セ ッ サに応 じ て、 ESYSTEM は有効なサ イ バー ソ ー ス シ ス テ ム エ ラ ー を 示す場合 も あ れば、 一種の無効なデー タ を 原因 と し た プ ロ セ ッ サ拒否を示す場合 も あ り ま す。 いずれの場合 も 、ESYSTEM の発生時に ト ラ ン ザ ク シ ョ ン の送信を無限に再試行す る よ う にシ ス テ ム を設計 し ない こ と を サ イ バー ソ ー ス はお勧め し ます。
リ ク エ ス ト の送信を2、3回のみ再試行 し 、 連続す る 再試行の待機間隔を長 く 設定す る こ と をお勧め し ます。 た と えば、 最初のシ ス テ ム エ ラ ーの応答後、 短時間 (30秒間ほ ど) 待機 し て再度 リ ク エ ス ト の送信を試行 し ま す。 その後同 じ エ ラ ーを受信す る 場合 には、 よ り 長い時間 (1分ほ ど) 待機 し 、 再度 リ ク エ ス ト の送信を試行 し ます。 状況に 応 じ て、 さ ら に長い時間 (2分ほ ど) 待機 し てか ら 再試行す る よ う に設定す る こ と も 可 能です。 自社の ビ ジネ ス状況に最 も 適 し た設定を判断す る 必要があ り ます。
再試行を数回繰 り 返 し て も シ ス テ ム エ ラ ーを受信す る 場合は、 サ イ バー ソ ー ス シ ス テ ム エ ラ ーではな く 、 実際にはプ ロ セ ッ サ拒否に よ っ て発生 し てい る エ ラ ーの可能性が あ り ます。 その場合は、 サ イ バー ソ ース カ ス タ マーサポー ト にご連絡 く だ さ い。
第 4 章
API for the ASP SDK
本章では、ICS リ ク エ ス ト と リ プ ラ イ を送受信す る ために使用す る ICSオブジ ェ ク ト と メ ソ ッ ド について説明 し ます。 本章は次のセ ク シ ョ ン で構成 さ れてい ます。
• ICSオブ ジ ェ ク ト
• API メ ソ ッ ド
重要 サ イ バー ソ ース と の統合に必要な他の文書に関す る 情報について、 こ のガ イ ド の 他に必要な他の文書を必ず参照 し て く だ さ い。
ICS オブ ジ ェ ク ト
ICSオブジ ェ ク ト は、 次の表に一覧 し たプ ロ パテ ィ を公開 し ます。
表 3:ICSオブ ジ ェ ク ト のプ ロパテ ィ
プ ロパテ ィ 説明 読み取 り/
書き込み HostID request_idの生成に使用するIPア ド レ ス。 デ フ ォル ト で
は、 ク ラ イ ア ン ト は コ ン ピ ュ ー タ のロー カルIPア ド レ ス を使用 し ます。127.0.0.1の値は使用で き ません。 別の 方法 と し て、 フ ィ ール ド 名にhost_idを入れる こ と で SetValueメ ソ ッ ド を呼び出す こ と も 可能です。
読み取 り / 書き込み
Log ト ラ ンザ ク シ ョ ンのログを記録するかど う かを示すブー ル フ ラ グ。
重要 問題の ト ラ ブルシ ュ ーテ ィ ン グ を行 う と き にのみ ロ グ記録を使用 し て く だ さ い。 本番環境で ロ グ を使用す る と 、 カ ー ド 番号やセキ ュ リ テ ィ コ ー ド (CVV、CVC2、
CVV2、CID、CVN) はマス ク さ れる よ う にな っ ているの で、Payment Card Industry(PCI) デー タ セキ ュ リ テ ィ 順 守 条 件 を 満 た さ な く な り ま す (詳 細 に つ い て は、
www.visa.com/cisp を参照 し て く だ さ い) 。 また、 次のガ イ ド ラ イ ンに従 っ て く だ さ い。
• 一時的かつ診断のみを目的 と し て ロ グ記録を 使用する こ と
• 可能な限 り ロ グ記録ではテ ス ト 用 ク レ ジ ッ ト カ ー ド 番号を使用する こ と
• 暗号化 さ れていないサイバー ソ ースに ロ グ フ ァ イルを電子 メ ールで送信 し ない こ と
• ロ グ フ ァ イルは不要にな っ た ら速やかに削除 する こ と
読み取 り / 書き込み
LogPath ログ フ ァ イルの場所を示すパス。 必要に応 じ て自動的に
バ ッ ク ス ラ ッ シ ュ (\) が付加 さ れ、 さ ら にicscom.log が付加 さ れて完全なパス名が作成 さ れます。 このパス は、 すでに存在する必要があ り ます。 このパスが存在 し ない と 、 ログ フ ァ イルは作成 さ れません。
読み取 り / 書き込み
APIメ ソ ッ ド
例 例 ICSオブジ ェ ク ト のプ ロ パテ ィ 設定
API メ ソ ッ ド
次の表は、APIで使用す る メ ソ ッ ド の概略です。
LogSize ロ グ フ ァ イルの最大サイ ズ ( メ ガバイ ト 単位)。 ログ フ ァ イルが最大サイ ズに達する と 、icscom.logは icscomold.logに コ ピー さ れ、 新 し い空のicscom.logが 作成 さ れます。
読み取 り/ 書き込み
Merchant 証明書 フ ァ イル と 秘密鍵 フ ァ イルの特定に使用 さ れる
マーチ ャ ン ト ID。 読み取 り/
書き込み RequestArray こ れま でに追加 さ れた リ ク エ ス ト の名前/値のペアの配
列。 各要素は 「name=value」 の形式で示 さ れます。
読み取 り
ResponseArra
y 応答の名前/値のペアの配列。 各要素は 「name=value」
の形式で示 さ れます。 ホス ト か ら応答がない場合は、 空 の配列が返 さ れます。
読み取 り
ServerHost リ ク エ ス ト 先のホス ト 名またはIPア ド レ ス。 こ のプ ロ パテ ィ を指定 し ない と 、 デ フ ォル ト のテ ス ト サーバ ics2test.ic3.comが使用 さ れます。
読み取 り/ 書き込み
Version オブ ジ ェ ク ト の現在のバージ ョ ン 読み取 り
oICS.ServerHost = "ics2test.ic3.com"
oICS.Merchant = "infodev"
oICS.Log = True
oICS.LogPath = "C:\TEMP\" ' または "C:\TEMP"
oICS.LogSize = 10 ' 10 MB Dim Version
Version = oICS.Version Dim arr, elem
arr = oICS.RequestArray ' または oICS.ResponseArray for each elem in arr
response.write elem & "<BR>"
next
表 4:APIメ ソ ッ ド の一覧
メ ソ ッ ド 説明
AddToOffer オ フ ァ ーに名前/値のペア を追加 し ます。
Clear オブ ジ ェ ク ト か ら すべての リ ク エ ス ト と 応答
を削除 し ます。
表 3:ICSオブ ジ ェ ク ト のプ ロパテ ィ
プ ロパテ ィ 説明 読み取 り/
書き込み
API for the ASP SDK
AddToOffer
例 AddToOfferを使用 し てオ フ ァ ーフ ィ ール ド を リ ク エ ス ト に追加す る
Clear
例 Clearを使用 し て フ ィ ール ド を ク リ アす る
GetRequestValue リ ク エ ス ト フ ィ ール ド の値を返 し ます。
GetResponseValue ICSサーバから 返 さ れた応答のフ ィ ール ド 値 を返 し ます。
Send ICSサーバに リ ク エス ト フ ィ ール ド を送信 し ます。
SetValue オブ ジ ェ ク ト に名前/値のペア を追加 し ます。
表 5:AddToOfferメ ソ ッ ド
構文 AddToOffer LineItem, "Name", "Value"
説明 リ ク エ ス ト でオ フ ァ ーに名前/値ペア を追加 し ます。
フ ィ ール ド 名がすでに存在する場合は、 指定 し た新 し い値で上書き さ れます。
戻 り 値 な し
パラ メ ー タ • LineItem:オ フ ァ ー番号。 各オ フ ァ ーは0以 上の整数イ ンデ ッ ク ス で表 さ れます。
• Name:フ ィ ール ド 名。
• Value:フ ィ ール ド に設定する値。
oICS.AddToOffer i, "product_name", oItem.product_name
表 6:Clearメ ソ ッ ド
構文 Clear
説明 オブ ジ ェ ク ト か ら すべての リ ク エ ス ト と 応答を削除 し ます。
戻 り 値 な し
パラ メ ー タ な し
oICS.Clear
表 4:APIメ ソ ッ ド の一覧
メ ソ ッ ド 説明
APIメ ソ ッ ド
GetRequestValue
例 GetRequestValueを使用 し て リ ク エ ス ト フ ィ ール ド の値を取得す る
"Mountain View"が返 さ れます。
GetResponseValue
例 GetResponseValueを使用 し て応答フ ィ ール ド の値を取得す る
Send
表15 Send メ ソ ッ ド
例 例 Sendを使用 し て リ ク エ ス ト を送信す る
表 7:GetRequestValueメ ソ ッ ド
構文 GetRequestValue("Name") 説明 リ ク エ ス ト フ ィ ール ド の値を返 し ます。
戻 り 値 フ ィ ール ド 値。
パラ メ ー タ ? Name:フ ィ ール ド 名。
oICS.SetValue "bill_city", "Mountain View"
Response.Write oICS.GetRequestValue("bill_city")
表 8:GetResponsetValueメ ソ ッ ド
構文 GetRequestValue("Name") 説明 リ ク エ ス ト フ ィ ール ド の値を返 し ます。
戻 り 値 フ ィ ール ド 値。
パラ メ ー タ Name:フ ィ ール ド 名。
Response.Write oICS.GetResponseValue("ics_rmsg")
表 9:
構文 Send
説明 ICSサーバに リ ク エ ス ト を送信 し ます。
戻 り 値 な し
パラ メ ー タ な し
oICS.Send
API for the ASP SDK
SetValue
例 SetValueを使用 し て フ ィ ール ド を リ ク エ ス ト に追加す る
表 10:SetValueメ ソ ッ ド
構文 SetValue "Name", "Value"
説明 オブ ジ ェ ク ト に名前/値ペア を追加 し ます。 名前がす でに存在する場合は、 指定 し た新 し い値で上書き さ れます。
戻 り 値 な し
パラ メ ー タ • Name:フ ィ ール ド 名。
• Value:フ ィ ール ド に設定する値。
oICS.SetValue "bill_city", Request.Form("City")
APIメ ソ ッ ド