支払いLiteは、ゲームのアプリ内購入を定義し管理する新しい方法です。この新機能により、サーバーレス決済ソリューションを開発することができます。 独自のサーバーを持っている場合は、支払いを受ける手順を参考にして、独自の支払い製品を定義しホスティングすることができます。 |
支払いLiteは、ゲームのアプリ内購入を行う新しい方法です。products
がアプリダッシュボードでID、名前、説明、価格、通貨、画像を直接割り当てます。その後product ID
が、通常の支払いフローで要求されるOG Object
URLの代わりにJavaScript呼び出しに渡され、支払いフローを開始します。こうすることで、サーバーへのプッシュを行う必要がなくなり、製品の作成と変更のフローがスムーズになります。
製品を作成するには、アプリダッシュボードの[キャンバス支払い]に移動し、[製品]サブセクションを表示します。
製品を作成するには、右上の[新規製品を作成]ボタンをクリックします。製品情報ダイアログで、Product ID
、Title
、Description
、Price
を入力し、ドロップダウンメニューから通貨を選択して、製品の50 x 50ピクセルの画像をアップロードします。
支払いLiteでは、1つの製品の支払いダイアログにのみ対応しています。ゲーム内通貨の販売を検討している場合、製品は通貨バンドルを反映している必要があります。
ゲーム内で販売する製品を定義したら、ゲーム内ストアを構築します。こうすることで、プレイヤーは興味のある製品を選択できるようになります。販売予定の製品の情報が正確であるようにするため、製品リストAPIを使用して製品情報を収集することができます。製品のリストを取得するには、以下のエンドポイントを呼び出します。
GET https://graph.facebook.com/APP_ID/products
パラメーターは以下のとおりです。
パラメーター名 | 型 | 値 | 必須 |
---|---|---|---|
| 文字列 | アプリの製品IDのコンマ区切りのリスト | いいえ |
呼び出しと応答の例
FB.api(
'/app/products',
'get',
function(response) {
console.log(response);
}
);
{ "data": [ { "title": "100 coins lite package", "product_id": "payments_lite_test_01", "product_type": "managed", "description": "Package of 100 coins to test Payments Lite", "price": "$1.00", "price_amount_cents": 100, "price_currency_code": "USD" }, { "title": "Friend Smash!", "product_id": "480369938658210_premium", "product_type": "managed", "description": "One time purchase to play game", "price": "$0.01", "price_amount_cents": 1, "price_currency_code": "USD" } ], "paging": { "cursors": { "before": "QVFIUlg1cXRqcnVad05taFRVRlZAZAU2tQdWNSd0FKRDh1TTJMdGd3azVTZA3ZAZAOFgzcXZAaZAlQ1N1VMMmRmZAXpUNG9KX2tsSWhYVlB6Yko2cEotUXZAiRGgzQkFKc0lJLUQzVlJxbHVPampZAS19SWEQ4", "after": "QVFIUmRiSGltU1BKQnRqWTRxNkd1WktUTHFKMmxvaEwtV2dSYUtpeDJxQnN0Ri1mZAnF0TG1Ub3oyWnphSExqZAU5qQzNNZAmFrejVnSTlaRVVGMXdSSlNsNE13" } } }
25を超える製品を設定した場合、応答は最初の25個のみを返します。残りを取得する方法については、https://developers.facebook.com/docs/graph-api/using-graph-api#pagingを参照してください。
ユーザーが製品を選択したら、支払いダイアログを呼び出して購入の完了を促します。これは、Facebook Javascript SDK FB
オブジェクトのui
機能を通じて行うことができます。
支払いダイアログを呼び出すには、最初のパラメーターとしてJSONオブジェクトを指定し、以下のキーを設定します。
パラメーター名 | 型 | 値 | 必須 |
---|---|---|---|
| 文字列 |
| はい |
| 文字列 |
| はい |
| 文字列 | あなたの製品ID | はい |
| 文字列 | 開発者によって開始された取引であることを認証するためのペイロードを定義する文字列。 | いいえ |
| 整数 | 定義されている場合は、常に | いいえ |
ダイアログを呼び出すコードの例
FB.ui(
{
method: 'pay',
action: 'purchaseiap',
product_id: 'com.fb.friendsmash.coins.10',
developer_payload: 'this_is_a_test_payload'
},
response => (console.log(response)) // Callback function
);
フローの完了後、取引の結果を確認するには、呼び出しの2番目のパラメーターにコールバック関数を指定します。この関数は、取引の情報を含むオブジェクトか、エラーコードおよびメッセージで呼び出されます
成功した応答の例
{ app_id: 241431489326925, developer_payload: "this_is_a_test_payload", payment_id: 860496004080598, product_id: "com.fb.friendsmash.coins.10", purchase_time: 1473719771, purchase_token: "10157567446205226", signed_request: "M3fQFj6MlK7WJi597QgCvMlMLh7fl_...", }
エラーが発生した取引の例
{ error_code: 1383010, error_message: "User canceled the order." }
支払いLiteでは、検証と購入管理のため、購入したものをリスト表示して消費されるようにすることができます。こうすることで、プレイヤーがゲーム内で消費できない製品を購入するのを防ぐことができます。ベストプラクティスとして、ゲームが読み込まれた時点でのプレイヤーの購入について調べ、まだ使い切っていない購入品がないかどうか確認することをおすすめします。
プレイヤーが購入したものをリスト表示するには、アプリの/APP_ID/purchases
エンドポイントをユーザーアクセストークンと共に使用します。この呼び出しは、現在のプレイヤーがまだ消費していない購入品すべてのリストを、対応する購入情報と共に返します。
例えば、以下のような呼び出しを使用します。
FB.api(
'/app/purchases',
'get',
{access_token: 'ACCESS_TOKEN'}, // user access token
payload => { // callback function
console.log('purchases payload:');
console.log(payload);
}
);
応答の例
{ data: [ { app_id: 241431489326925, developer_payload: "this_is_a_test_payload", payment_id: 860496004080598, product_id: "com.fb.friendsmash.coin", purchase_time: 1473719771, purchase_token: "10157567446205226", signed_request: "M3fQFj6MlK7WJi597QgCvMlMLh7fl_...", }, { ... } ], paging: { cursors: { after: "M3fQFj6MlK7WJi597QgCvMlMLh7fl...", before: "M3fQFj6MlK7WJi597QgCvMlMLh7...", } } }
この応答から返されたsigned_requestについて詳しくは、このセクションを参照してください。
購入が25回を超える場合、応答では最初の25回のみを返します。残りを取得する方法については、https://developers.facebook.com/docs/graph-api/using-graph-api#pagingを参照してください。
Graph API v11.0 以降、consumed
フィールドの名前がis_consumed
に変更されています。
製品が購入され、署名済みリクエストと開発者のペイロードを使用した正当な購入であることが確認されたら、購入された製品や通貨をプレイヤーに付与します。この時点では、購入された製品が消費可能な場合(通貨や1回のみ使用可能なアイテムなど)、この購入を使用済みとして記録し、ユーザーが再度同じ製品を購入できるようにします。消費されない製品(特別な機能のアンロックや特別VIPプログラムなど)の場合、使用済みとせず、ユーザーが同じ製品を複数回購入できないようにします。
購入を使用済みにするには、JavaScriptのコールバックか、前述したプレイヤーの購入リストにあるpurchase_token
を使用する必要があります。購入を使用済みにするには、以下のGraph APIエンドポイントを呼び出します。
POST https://graph.facebook.com/PURCHASE_TOKEN/consume
Facebook JavaScript SDKを使用する例
FB.api(
'/' + PURCHASE_TOKEN + '/consume', // Replace the PURCHASE_TOKEN
'post',
{access_token: access_token}, // Replace with a user access token
result => {
console.log('consuming product', productId, 'with purchase token', purchaseToken);
console.log('Result:');
console.log(result);
}
);
成功した応答の例
{ success: true, }