簡易PG決済¶
「簡易PG決済」は、アプリサーバーがPG決済手段を照会し、ストアWebページ内で決済手段選択UIを直接構成した後、ユーザーが選択した手段でPG社の決済WebViewウィンドウを呼び出すときに使用します。
このページでは、payment/methods と payment/requests を順番に呼び出す方法を説明します。
推奨する実装順序は以下のとおりです。
- まず決済手段を照会して、ストアWebページに決済手段選択画面を構成してください。
- 次にユーザーが 決済 を押したら、選択したPG社の決済WebViewウィンドウを開いてください。
1. 概要¶
連携フロー¶
簡易PG決済では、ストアWebページ内で決済手段選択の段階を処理します。ユーザーが決済手段を選択した後にのみ、PG社の決済WebViewウィンドウを開きます。
以下の順序で連携することを推奨します。
- ストアWebページでユーザーが 購入 ボタンを押します。
- アプリサーバーが決済手段照会APIを呼び出します。
- ストアWebページがレスポンス値で決済手段選択UIを構成し、表示します。
- ユーザーが決済手段選択UIで決済手段を選択し、決済 を押します。
- アプリサーバーが決済呼び出しAPIを呼び出します。
- ストアWebページがレスポンス結果として、選択したPG社の決済WebViewウィンドウを開きます。
- ユーザーがPG社の決済WebViewウィンドウで決済を完了します。
事前準備¶
簡易PG決済を連携する前に、以下の値を準備してください。
| 項目 | 説明 |
|---|---|
| Hive認証キー | Authorization ヘッダーに入れる Bearer トークンです。Hiveコンソール > アプリセンター > プロジェクト管理 > ゲーム一覧 - ゲーム会社のゲームを選択 > ゲーム詳細 > 基本情報 にある値を使用します。 |
app_id | 決済を進めるアプリの App ID です。Hiveコンソール > アプリセンター > プロジェクト管理 > ゲーム一覧 - ゲーム会社のゲームを選択 > ゲーム詳細 > 基本情報 にある値を使用します。 |
server_id | 決済を進めるアプリサーバーの識別値です。Hiveコンソール > アプリセンター > プロジェクト管理 > ゲーム一覧 - ゲーム会社のゲームを選択 > ゲーム詳細 > アプリサーバー にある値を使用します。 |
market_pid | 決済する商品IDです。Hiveコンソール > Billing > 商品管理 > 商品登録 に登録した値を使用します。この値は、商品登録前に各ストアコンソールで準備した Product ID を基準に設定します。 |
player_id | 決済を進める現在のユーザーの Player ID です。アプリサーバーがログインセッションまたはゲームユーザー情報で確認した値を使用します。 |
market_id | 簡易PG決済で使用するマーケット固有IDです。15 を固定値として使用します。 |
2. 決済手段照会¶
決済手段照会APIは、特定の商品で現在使用できるPG決済手段一覧を照会するAPIです。ストアWebページ内に決済手段選択画面を構成する前に、まず呼び出してください。このAPIだけでは決済は開始されません。
リクエスト情報¶
エンドポイント¶
呼び出しエンドポイントは以下のとおりです。
| 項目 | 説明 |
|---|---|
| 本番URL | https://hiveiap.qpyou.cn/payment/methods |
| Sandbox URL | https://sandbox-hiveiap.qpyou.cn/payment/methods |
| HTTP Method | POST |
| Data Format | JSON |
HTTPヘッダー¶
HTTPヘッダーは以下のとおりです。
| 項目 | 説明 |
|---|---|
| Content-Type | application/json;charset=utf-8 |
| Authorization | Bearer |
Authorization ヘッダーに入れる Bearer トークンは、Hiveコンソール > アプリセンター > プロジェクト管理 > ゲーム一覧 - ゲーム会社のゲームを選択 > ゲーム詳細 > 基本情報 にある Hive 認証キーです。
リクエストボディ¶
以下の表では、必須は M、任意は O で表記します。
| 名称 | 型 | 必須可否 | 説明 |
|---|---|---|---|
| language | String | M | 決済手段を表示するゲーム言語値です。アプリクライアントで現在使用中の言語を ISO 639-1 Alpha-2 形式で渡します。 |
| country | String | M | 決済手段を照会する対象国コードです。決済を進めるユーザー基準の国を ISO 3166-1 の2文字コードで渡します。 |
| app_id | String | M | 決済を進めるアプリの App ID です。事前準備で確認した値を渡します。 |
| market_pid | String | M | 決済する商品IDです。事前準備で確認した値を渡します。 |
| market_id | Integer | O | マーケット固有IDです。15 を固定値として使用します。 |
| fixed_currency | String | O | 特定の通貨だけを表示するには ISO 4217 通貨コードを入力します。通貨を固定しない場合は、レスポンスの data.currency 値を次のステップで使用します。 |
レスポンス情報¶
以下の表では、必須は M、任意は O で表記します。
| 名称 | 型 | 必須可否 | 説明 |
|---|---|---|---|
| result | String | M | API結果文字列です。レスポンスが成功した場合は data の決済手段情報を次のステップで使用します。 |
| code | Integer | M | API結果コードです。成功可否と失敗原因を区別するときに使用します。 |
| message | String | M | API結果メッセージです。失敗時の原因確認に使用します。 |
| data | Object | M | 照会成功時に渡される決済手段情報のまとまりです。 |
| data.agency_company_code | Integer | M | PG決済代行会社コードです。ユーザーが決済手段を選択した後、決済呼び出しAPIの agency_company_code に渡します。 |
| data.country | String | M | 照会結果に適用された国コードです。決済呼び出しAPIでも同じ国コードを使用します。 |
| data.currency | String | M | 照会結果に適用された決済通貨です。決済呼び出しAPIの currency にこの値を渡します。 |
| data.email_agree_text | Array | O | メール入力が必要な決済手段を選択したときに、ユーザーへ表示する同意文言一覧です。 |
| data.email_agree_text[].agree_id | Integer | O | 同意文言IDです。同意項目の区分に使用します。 |
| data.email_agree_text[].title | String | O | ユーザーに表示する同意タイトルです。 |
| data.email_agree_text[].description | String | O | ユーザーに表示する同意詳細文言です。 |
| data.available_payment_methods | Array | M | 現在の商品で使用できる決済手段一覧です。決済画面にはこの一覧だけを表示し、ユーザーが選択した項目の下位フィールドを次のステップで使用します。 |
| data.available_payment_methods[].agency | String | M | 選択した決済手段のPG社コードです。決済呼び出しAPIの agency に渡します。 |
| data.available_payment_methods[].agency_id | Integer | M | PG社識別値です。決済手段の区分や内部ログ確認に使用します。 |
| data.available_payment_methods[].method | String | M | 選択した決済手段コードです。決済呼び出しAPIの method に渡します。 |
| data.available_payment_methods[].method_id | Integer | M | 決済手段識別値です。決済手段の区分に使用します。 |
| data.available_payment_methods[].requires_email | Boolean | M | true の場合、決済呼び出し前にユーザーのメールアドレスを受け取り、email フィールドに渡す必要があります。 |
| data.available_payment_methods[].priority | Integer | M | 決済手段表示の優先順位値です。決済画面の並び替えに使用します。 |
| data.available_payment_methods[].display_name | String | M | 決済画面でユーザーに表示する決済手段名です。 |
| data.available_payment_methods[].icon_url | String | O | 決済画面にあわせて表示する決済手段アイコンURLです。 |
レスポンス値の使用¶
レスポンス値は以下のように使用してください。
data.available_payment_methodsのdisplay_name、icon_url、priority値を使用して、ストアWebページ内に決済手段選択UIを構成してください。requires_emailがtrueの決済手段を表示するときは、email_agree_text文言をあわせて表示し、ユーザーのメールアドレスを入力してもらってください。- ユーザーが決済手段を選択したら、
data.agency_company_code、data.currency、data.available_payment_methods[].agency、data.available_payment_methods[].method、data.available_payment_methods[].requires_emailの値を次のステップの入力値としてそのまま渡してください。
リクエスト例¶
curl -L -v \
-d '{
"language": "ko",
"country": "KR",
"app_id": "com.com2us.hivesdk.normal.freefull.google.global.android.common",
"market_pid": "com.com2us.hivesdk.normal.freefull.google.global.android.common.item01",
"market_id": 15,
"fixed_currency": "KRW"
}' \
-H "Content-Type: application/json;charset=utf-8" \
-H "Authorization: Bearer {Bearer 토큰}" \
https://sandbox-hiveiap.qpyou.cn/payment/methods
レスポンス例¶
{
"result": "success",
"code": 0,
"message": "success",
"data": {
"agency_company_code": 1,
"country": "KR",
"currency": "KRW",
"email_agree_text": [
{
"agree_id": 1,
"title": "(필수) 개인정보 수집∙이용 동의",
"description": "Com2uS은(는) “결제 대행 업체 전송”을 위해 이메일주소를 수집합니다.<br>
내용을 자세히 읽으신 후 동의 여부를 결정해 주시기 바랍니다.<br><br>
- 수집∙이용 목적 : <span class=\"point_color\">결제 대행 업체 전송</span><br>
- 수집 항목 : 이메일주소<br>
- 보유∙이용 기간 : <span class=\"point_color\">결제 대행 업체 전송 목적으로만 수집하며 별도로 저장·보유하지 않습니다.</span><br><br>
※ 개인정보 수집∙이용에 대한 동의를 거부할 권리가 있습니다.<br>
단, 동의를 거부할 경우 해당 결제 대행 업체를 통한 결제가 제한됩니다."
},
{
"agree_id": 2,
"title": "(필수) 개인정보 제3자 제공 동의",
"description": "Com2uS은(는) 다음과 같이 이메일주소를 제3자에게 제공하고 있습니다.<br>
내용을 자세히 읽으신 후 동의 여부를 결정해 주시기 바랍니다.<br><br>
- 제공받는 자 : <strong>결제 대행 업체 (PayPal, Terminal3)</strong><br>
- 이용 목적 : <span class=\"point_color\">부정/의심 거래 방지 및 고객 지원</span><br>
- 제공 항목 : 이메일주소<br>
- 보유∙이용 기간 : <span class=\"point_color\">가맹점과의 계약 종료 후 최대 5년</span><br><br>
※ 개인정보 제3자 제공에 대한 동의를 거부할 권리가 있습니다.<br>
단, 동의를 거부할 경우 해당 결제 대행 업체를 통한 결제가 제한됩니다."
}
],
"available_payment_methods": [
{
"agency": "html5_inicis",
"agency_id": 9,
"method": "card",
"method_id": 1,
"requires_email": false,
"priority": 1,
"display_name": "Credit Card",
"icon_url": "https://hive-fn.qpyou.cn/hiveiap/hivestore/test/img/pg_icon/credit_card.png?ver=2.4.32"
},
{
"agency": "html5_inicis",
"agency_id": 9,
"method": "naverpay",
"method_id": 17,
"requires_email": true,
"priority": 10,
"display_name": "NAVER Pay",
"icon_url": "https://hive-fn.qpyou.cn/hiveiap/hivestore/test/img/pg_icon/5169459511710849342.png?ver=2.4.32"
}
]
}
}
3. 決済呼び出し¶
決済呼び出しAPIは、ストアWebページ内でユーザーがすでに選択した決済手段で、該当PG社の決済WebViewウィンドウを開くAPIです。決済手段照会APIで受け取った値を再利用する必要があります。
注意点は以下のとおりです。
- このAPIは決済手段選択画面を再度表示しません。
- このAPI自体が決済完了を確定するわけではありません。
リクエスト情報¶
エンドポイント¶
呼び出しエンドポイントは以下のとおりです。
| 項目 | 説明 |
|---|---|
| 本番URL | https://hiveiap.qpyou.cn/payment/requests |
| Sandbox URL | https://sandbox-hiveiap.qpyou.cn/payment/requests |
| HTTP Method | POST |
| Data Format | JSON |
HTTPヘッダー¶
HTTPヘッダーは以下のとおりです。
| 項目 | 説明 |
|---|---|
| Content-Type | application/json;charset=utf-8 |
| Authorization | Bearer |
Authorization ヘッダーに入れる Bearer トークンは、Hiveコンソール > アプリセンター > プロジェクト管理 > ゲーム一覧 - ゲーム会社のゲームを選択 > ゲーム詳細 > 基本情報 にある Hive 認証キーです。
リクエストボディ¶
以下の表では、必須は M、任意は O で表記します。
| 名称 | 型 | 必須可否 | 説明 |
|---|---|---|---|
| language | String | M | 決済手段照会APIで使用したゲーム言語値をそのまま渡します。 |
| country | String | M | 決済手段照会APIで使用した国コードをそのまま渡します。 |
| currency | String | M | 決済手段照会APIレスポンスの data.currency 値を渡します。 |
| app_id | String | M | 決済手段照会APIで使用した App ID と同じ値を渡します。 |
| server_id | String | M | 事前準備で確認したサーバーIDを渡します。 |
| market_id | Integer | M | マーケット固有IDです。決済手段照会APIと同様に 15 を固定値として使用します。 |
| market_pid | String | M | 決済手段照会APIで使用した商品IDと同じ値を渡します。 |
| quantity | Integer | M | 今回の決済リクエストで購入する数量です。ゲームでユーザーが選択した数量を渡します。 |
| agency_company_code | Integer | M | 決済手段照会APIレスポンスの data.agency_company_code 値を渡します。 |
| method | String | M | ユーザーが選択した決済手段の data.available_payment_methods[].method 値を渡します。 |
| agency | String | M | ユーザーが選択した決済手段の data.available_payment_methods[].agency 値を渡します。 |
| player_id | String | M | 事前準備で確認した現在のユーザーの Player ID を渡します。 |
| vid_type | String | M | SDKバージョン値です。v4 を固定値として使用します。 |
| String | O | 選択した決済手段の requires_email 値が true のとき、ユーザーに入力してもらったメールアドレスを渡します。 | |
| sandbox | Boolean | O | Sandbox URL でテストするときは true を使用します。本番環境では渡さないか、環境に合った値を使用します。 |
レスポンス情報¶
決済呼び出しAPIは、決済成功可否を最終確定するAPIではありません。リクエストが正常に処理された場合は、返却結果を使用して選択したPG社の決済WebViewウィンドウを開いてください。
レスポンス値の使用¶
レスポンス値は以下のように使用してください。
- レスポンス結果を使用して、ストアWebページで選択したPG社の決済WebViewウィンドウを開いてください。
- このレスポンスだけで決済が完了したと判断しないでください。このステップは決済ウィンドウを開く段階です。
- 実際の決済結果を確認するには、決済完了履歴照会 と IAP v4 レシート検証 を参照してください。
リクエスト例¶
curl -L -v \
-d '{
"language": "ko",
"country": "KR",
"currency": "KRW",
"app_id": "com.com2us.hivesdk.windows.microsoftstore.global.normal",
"server_id": "global",
"market_id": 15,
"market_pid": "com.com2us.hivesdk.windows.microsoftstore.global.normal.item01",
"quantity": 1,
"agency_company_code": 1,
"method": "kakaopay",
"agency": "html5_inicis",
"player_id": "123456789",
"vid_type": "v4",
"email": "bobong@com2us.com",
"sandbox": true
}' \
-H "Content-Type: application/json;charset=utf-8" \
-H "Authorization: Bearer {Bearer 토큰}" \
https://sandbox-hiveiap.qpyou.cn/payment/requests
4. 次のステップ¶
PG社の決済WebViewウィンドウでユーザーが決済を完了したからといって、アプリクライアントですぐに付与処理してはいけません。決済完了情報は PG から Hive IAP v4 サーバーに渡されるため、アプリサーバーで後続確認を行う必要があります。
以下の順序で後続処理を進めてください。
- 決済完了履歴照会 を呼び出して、保存された決済情報を照会してください。
- 決済が正常に完了したかどうか追加検証が必要な場合は、照会レスポンスの
purchase_bypass_infoを使用して IAP v4 レシート検証 を行ってください。