PayRoad API 利用ガイド
ここでは、PayRoadを利用してどのように支払いシステムを組み込むか、さまざまなチュートリアルを用意しています。 はじめに、PayRoadの重要な機能であるAPIアクセス認証のトークン化、支払い処理について簡単に紹介します。具体的な詳細は各ページに記載してあるのでご覧ください。

ここでは、PayRoadを利用してどのように支払いシステムを組み込むか、さまざまなチュートリアルを用意しています。 はじめに、PayRoadの重要な機能であるAPIアクセス認証のトークン化、支払い処理について簡単に紹介します。具体的な詳細は各ページに記載してあるのでご覧ください。
認証処理方法
認証
To authorize, use this code:
const token = require('merchant_api_key');
let api = token.authorize('token');
merchant_api_keyは管理ツールにて確認可能な認証キーになります。
PayRoadのAPIを利用するには、ユーザー登録を行い、APIページからAPIキーを取得してください。 テスト用のキーでは、本番の支払い処理を行うサーバーへは接続されず、実際の支払い情報として計上されることもありません。 本番用のキーは、本番申請を行うことで利用できるようになります。
| 種類 | 用途 |
|---|---|
| merchant api key | HTML内に埋め込むトークン生成用のパブリックキー |
通常の認証は、シークレットキーをユーザーネームとして扱い、Basic認証経由で行われます。 パブリックキーは、あなたの決済画面のHTML内に組み込む公開用のAPIキーで、クレジットカードのトークンを生成する際に使用します。 シークレットキーは、全てのAPIリクエスト操作が可能となる重要なキーなので、くれぐれ も取扱いにご注意ください。
プロトコル
セキュリティのため、PAY.JPに対する全てのAPI通信は必ずHTTPSで行うようにしてください。
リクエスト
PayRoad APIへのリクエストでは、GET、POSTの2種類のHTTPメソッドを利用できます。
引数は、GETの場合はクエリーパラメータで、POSTではContent-Type: application/x-www-form-urlencodedのボディで送信ください。
レスポンス
APIからのレスポンスデータは正常・異常とも全てUTF-8のJSON形式(Content-Type: application/json; charset=utf-8)で返されます。
タイムスタンプ
日次に関するデータはUNIXタイムスタンプで表示されます。 ただし一部のパラメータはDate型(e.g. 入金予定日 transfer.scheduled_date が 2021-07-07 など)で表示されます。
支払い処理
STEP1. ライブラリー追加
//対応しておりません。
<!-- jQuery -->
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js" ></script>
<!-- payroad.payment.js -->
<script type="text/javascript" src="https://cdn.payroad.com/js/payroad.payment-1.0.0.js"></script>
ウェブサイトの決済ページのHTML中に<script>.....</script>を組み込めます。PayRoadのライブラリーはjQueryで実行されるためjQeury1.0以上が必ず必要になります。
STEP2. 加盟店識別の設定
var payRoad = window.PAYROAD;
payRoad.init("merchant_Id");
//対応しておりません。
PAYROADオブジェクトにinit(加盟店識別ID)を設定します。
merchant_Idは管理ツールにて確認可能な認証キーになります。
STEP3. 決済画面呼び出すコードの設定
checkoutButton.addEventListener("click", function () {
payroad.request({
"pgCode" : "sbps",
"paymentMethod" : "credit",
"transactionId" : "PR1234567890",
"serviceId" : "merchantId",
"merchantOrderId" : "merchant_order_id",
"totalAmount" : "1000",
"totoalTax" : "0",
"productInfo" : {
"items" : [
{
"name" : "itemName1",
"id" : "itemId1",
"qty" : "1",
"amount" : "300",
"tax" : "0"
}
]
},
"paymentInfo" : {
"custCode" : "uniqueUserId"
}
//......以下省略
}).completed(function (result) {
//決済成功時に呼び出し
}).incompleted(function (result) {
//決済未完了時に呼び出し
//ユーザから決済止め
//決済画面閉じる
}).failed(function (result) {
//決済失敗時に呼び出し
});
このサンプルコードはSBPSのクレジットカード決済要求時に指定するパラメータになります。
<button onclick="requestPay()">支払い</button>
<script>
checkoutButton.addEventListener("click", function () {
payroad.request({
"pgCode" : "sbps",
"paymentMethod" : "credit",
"transactionId" : "PR1234567890",
"serviceId" : "merchantId",
"merchantOrderId" : "merchant_order_id",
"totalAmount" : "1000",
"totoalTax" : "0",
"productInfo" : {
"items" : [
{
"name" : "itemName1",
"id" : "itemId1",
"qty" : "1",
"amount" : "300",
"tax" : "0"
}
]
},
"paymentInfo" : {
"custCode" : "uniqueUserId"
}
//......以下省略
}).completed(function (result) {
//決済成功時に呼び出し
}).incompleted(function (result) {
//決済未完了時に呼び出し
//ユーザから決済止め
//決済画面閉じる
}).failed(function (result) {
//決済失敗時に呼び出し
});
</script>
payroad.request({....})中に決済に必要なパラメータを指定して実行すれば、決済画面が呼び出されます。
もっと詳しいパラメータ情報は「パラメータ詳細」から確認出来ます。
処理完了後にはresult結果値を見て成功、失敗、エラーなどの判別が出来ます。各function中に加盟店様が様々な処理を実装して作成してください。
STEP4. 取引検証処理
app.use(bodyParser.json());
app.post("/payments/complete", async (req, res) => {
try {
const { transactionId, merchantOrderId } = req.body;
} catch (e) {
res.status(400).send(e);
}
});
上記のコードは/payment/completeにPOST要求するサンプルコードになります。req.bodyからPayRoadと加盟店様の取引IDを取得しました。
取得した取引IDを指定して決済詳細情報APIから決済情報を取得してください。
STEP.5 決済連動完了
加盟店様のウェブサイド決済連動テストが実装可能になりました。 管理ツールにて設定情報をもう一度確認した上、決済テストを行ってください。
処理結果コード一覧
| Result Code | 詳細 |
|---|---|
| 400 | Bad Request -- Your request is invalid. |
| 401 | Unauthorized -- Your API key is wrong. |
| 403 | Forbidden -- The kitten requested is hidden for administrators only. |
| 404 | Not Found -- The specified kitten could not be found. |
| 405 | Method Not Allowed -- You tried to access a kitten with an invalid method. |
| 406 | Not Acceptable -- You requested a format that isn't json. |
| 410 | Gone -- The kitten requested has been removed from our servers. |
| 418 | I'm a teapot. |
| 429 | Too Many Requests -- You're requesting too many kittens! Slow down! |
| 500 | Internal Server Error -- We had a problem with our server. Try again later. |
| 503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |