手順について
Step1.暗号鍵の入手
- BROWSER_ENCRYPTION_KEY(ブラウザ暗号鍵):購入者をAir-Webへ遷移させるための鍵
- MERCHANT_ENCRYPTION_KEY(マーチャント暗号鍵):購入者の支払いを確認するために必要な鍵
パラメータ | 詳細 |
---|---|
MERCHANT_ID | マーチャントIDはこちらより確認ください。 |
MERCHANTHASH | MERCHANTHASH、MERCHANT_ID、SETTLEMENT_TYPE、ORDER_IDとAMOUNTを連結しSHA512を使用して生成するハッシュ値です。マーチャントハッシュはこちらに記載のマーチャントハッシュキーご使用ください。 |
ORDER_ID | 取引ID:取引毎にユニークになるように指定してください。 |
SESSION_ID | リクエストごとに採番するユニークなSession ID |
AMOUNT | 金額 (円) |
SETTLEMENT_TYPE | '00' = 指定無; '01' = クレジットカード; '02' = コンビニ |
APIパラメータの詳細は、こちらより確認いただけます。
Sample Code
<<Source>>/include/ConfirmActionManager.php
private $merchant = new MerchantInfo(); $data = new PurchaseData(); $ch = new HashCodeCreater(); $data->setMerchantId($data->getMerchantId()); $data->setOrderId($merchant->createOrderID()); $data->setSessionId($session_id()); $data->setAmount($form->getAmount()); $data->setSettlementType($form->getSettlementType); $hashCode = $ch->getHash($data->getMerchantId(), $data->getSettlementType(), $data->getOrderId(), $data->getAmount()); $data->setMerchantHash($hashCode); $purchaseData = $this->getPurchaseData($form); // HTTP POST $result = $this->sendPOST($purchaseData); return $result;
<<Source>>/jp/co/veritrans/vtweb/sample/server/action/ConfirmAction.java
Map settlementInfo = new LinkedHashMap(); MerchantConf merchantInfo = MerchantConf.getInfo(); settlementInfo.put("MERCHANT_ID", merchantInfo.getMerchantID()); HashCodeCreater4Merchant hash = new HashCodeCreater4Merchant(); settlementInfo.put("ORDER_ID", orderId); settlementInfo.put("SESSION_ID", sessionId); settlementInfo.put("AMOUNT", Integer.parseInt(form.getAmount())); settlementInfo.put("SETTLEMENT_TYPE", form.getSettlementType()); String hashCode = hash.getHash(merchantInfo.getMerchantID(), form.getSettlementType(), orderId, form.getAmount()); settlementInfo.put("MERCHANTHASH", hashCode); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(con.getOutputStream(), Constants.VTW_ENCODE)); String postData = getPostData(settlementInfo); //POST用に整形したデータを返却する。 - Generate Data in POST format bw.write(postData); bw.flush(); bw.close(); BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), Constants.VTW_ENCODE)); EncryptionKey ret = new EncryptionKey(); String line; try { while ((line = in.readLine()) != null) { if (line.startsWith("MERCHANT_ENCRYPTION_KEY")) { String tmp = line.substring(24); registKey(orderId, tmp, sessionId); ret.setMerchantEncryptionKey(tmp); } else if (line.startsWith("BROWSER_ENCRYPTION_KEY")) { String tmp = line.substring(23); ret.setBrowserEncryptionKey(tmp); } else if (line.startsWith("ERROR_MESSAGE")) { String tmp = URLDecoder.decode(line.substring(14), Constants.VTW_ENCODE); ret.setErrorMessage(tmp); } } return ret; } catch (Throwable th) { return null; }
Sample Code
<<Source>>/sample/jump.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <?php include("../include_head.php"); ?> <title><?php echo $lang['JUMP.TITLE'];?></title> </head> <body> <div class="contents"> <h1 align="center"><?php echo $lang['JUMP.HEADER'];?></h1> <form action="<?= PAYMENT_URL ?>" method="post" onSubmit="document.getElementById('submitBtn').disabled=true;"> <input type="hidden" name="MERCHANT_ID" value="<?= $merchant->getMerchantID() ?>" /> <input type="hidden" name="ORDER_ID" value="<?= $merchant->getOrderID() ?>" /> <input type="hidden" name="BROWSER_ENCRYPTION_KEY" value="<?= $merchant->getSettlementKey1A() ?>" /> <input id="submitBtn" type="submit" value="submit" /> </form> </div> </body> </html>
<<Source>>/jsp/self/jump.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <%@ include file="include_head.jsp" %> <title>お支払手続きへ</title> <% MerchantConf info = MerchantConf.getInfo(); String sessionID = session.getId(); String key1a = (String)request.getAttribute("SETTLEMENT_KEY1A"); String merchantId = (String)request.getAttribute("MERCHANT_ID"); String orderId = (String)request.getAttribute("ORDER_ID"); %> </head> <body> <div class="contents"> <h1 align="center">お支払手続きへ</h1> <form action="<%= info.getVtWebSettlementUrl() %>" method="post" onsubmit="document.getElementById('submitBtn').disabled=true;"> <input type="hidden" name="MERCHANT_ID" value="<%= merchantId %>" /> <input type="hidden" name="ORDER_ID" value="<%= orderId %>" /> <input type="hidden" name="BROWSER_ENCRYPTION_KEY" value="<%= key1a %>" /> <input id="submitBtn" type="submit" value="submit" /> </form> </div> </body> </html>
Step3.支払い終了後の誘導
ECサイトにてすべての通知要求を検証いただく必要がございます。検証いただくパラメータはORDER_IDとMERCHANT_ENCRYPTION_KEYとなります。両パラメータがマーチャントデータベース内部のものと一致していることを確認ください。
Sample Code
<<Source>>/sample/DoPostActionAW.php
// AWからのRequestの内容確認 - Validate request's content $result = $KeyValidate->resultCheck(); // チェック結果を表示 header("text/html; charset=" . AW_HTML_ENCODE); if ($result) { $KeyValidate->updateKeyBox(); echo "OK\n"; } else { echo "ERR\n"; }
<<Source>>/jp/co/veritrans/airweb/sample/server/DoPostActionAW.java
ResultDataBean databean = new ResultDataBean(); // リクエストをマップに格納 - Validate request's content databean.setOrderId(orderId); databean.setmStatus(URLDecoder.decode(request.getParameter(Constants.AWRES_M_STATUS), Constants.AW_ENCODE)); databean.setmErrMsg(URLDecoder.decode(request.getParameter(Constants.AWRES_M_ERR_MSG), Constants.AW_ENCODE)); databean.setvResultCode(URLDecoder.decode(request.getParameter(Constants.AWRES_V_RESULT_CODE), Constants.AW_ENCODE)); ResultCheck rcheck = new ResultCheck(); boolean checkflag; checkflag = rcheck.resultCheck(databean); // AWへ返信 - Return result if (checkflag) { key.put(Constants.AWRES_M_STATUS, databean.getmStatus()); key.put(Constants.AWRES_M_ERR_MSG, databean.getmErrMsg()); key.put(Constants.AWRES_V_RESULT_CODE, databean.getvResultCode()); keyBox.setBox(orderId, key); response.setContentType(CONTENT_TYPE); ServletOutputStream out = response.getOutputStream(); out.println("OK"); } else { response.setContentType(CONTENT_TYPE); ServletOutputStream out = response.getOutputStream(); out.println("ERR"); }
- Prev:< [導入]を見る
- Next:[稼働確認]を見る >