GS2-Money¶
Create Client
money_client = client('money')
目次
- Method
- charge_wallet
- charge_wallet_by_user
- consume_wallet
- create_item
- create_money
- create_platformed_item
- delete_item
- delete_money
- delete_platformed_item
- describe_item
- describe_money
- describe_platformed_item
- describe_receipt
- describe_receipt_by_user_and_slot
- describe_wallet
- get_item
- get_money
- get_money_status
- get_platformed_item
- get_wallet
- get_wallet_detail
- update_item
- update_money
- update_platformed_item
- verify
- Model
Method¶
charge_wallet¶
response = money_client:charge_wallet(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ウォレットに仮想通貨をチャージします
trasactionId にトランザクションIDを指定することで、 1回の課金処理で複数回仮想通貨をチャージすることを防ぐことが出来ます。 重複したリクエストが発生した場合は 409エラー(ConflictException) が発生しますが、正常処理とするべきです。
Request¶
{
moneyName=string,
slot=number,
count=number,
price=number,
transactionId=string,
accessToken=string
}
- moneyName
- [string] 取得する仮想通貨の名前
- slot
- [number] 取得するウォレットのスロット番号
- count
- [number] 仮想通貨付与量
- price
- [number] 支払金額
- transactionId
- [string] トランザクションID
- accessToken
- [string] GS2-Auth で発行を受けたアクセストークン
charge_wallet_by_user¶
response = money_client:charge_wallet_by_user(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ウォレットに仮想通貨をチャージします
trasactionId にトランザクションIDを指定することで、 1回の課金処理で複数回仮想通貨をチャージすることを防ぐことが出来ます。 重複したリクエストが発生した場合は 409エラー(ConflictException) が発生しますが、正常処理とするべきです。
Request¶
{
moneyName=string,
slot=number,
userId=string,
count=number,
price=number,
transactionId=string,
}
- moneyName
- [string] 仮想通貨の名前
- slot
- [number] ウォレットのスロット番号
- userId
- [string] ウォレットのユーザID
- count
- [number] 仮想通貨付与量
- price
- [number] 支払金額
- transactionId
- [string] トランザクションID
consume_wallet¶
response = money_client:consume_wallet(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ウォレットから仮想通貨を消費します
paidOnly に true を指定することで、有償仮想通貨のみ消費対象とすることが出来ます。 プレミアムなサービスの提供時などに活用してください。
Request¶
{
moneyName=string,
slot=number,
count=number,
paidOnly=boolean,
use=number,
accessToken=string
}
- moneyName
- [string] 取得する仮想通貨の名前
- slot
- [number] 取得するウォレットのスロット番号
- count
- [number] 仮想通貨消費量
- paidOnly
- [boolean] 有償仮想通貨のみ消費対象としたい場合に true を指定します
- use
- [number] 用途ID
- accessToken
- [string] GS2-Auth で発行を受けたアクセストークン
create_item¶
response = money_client:create_item(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
商品を新規作成します
このデータは GS2-Money のレシート検証機能を利用するときにのみ登録する必要があります。 これはレシート検証の結果妥当だった場合対価として仮想通貨を付与するために、 どのような価値の仮想通貨をいくらで販売しているのかという情報を GS2-Money が持っていなければサービスを実現できないためです。
- 商品(仮想通貨 60個)
-- プラットフォーム個別商品(AppleAppStore 120円) -- プラットフォーム個別商品(GooglePlay 120円)
という構造で商品を登録する必要があります。
Request¶
{
moneyName=string,
count=number,
name=string,
}
- moneyName
- [string] 仮想通貨の名前
- count
- [number] 付与する仮想通貨の数
- name
- [string] 商品名
create_money¶
response = money_client:create_money(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
仮想通貨を新規作成します
priority には仮想通貨の消費優先度を指定することが出来ます。 無償仮想通貨を優先して消費する場合は free を、有償仮想通貨を優先して消費する場合は paid を指定します。 資金決済法への対応としては有償仮想通貨を優先して消費するほうが未使用残高が溜まりにくく効率的ですが、 有償仮想通貨でしか購入できないアイテムを提供している場合はユーザの心象は悪いかもしれません。
ユーザごとにウォレットという財布のようなものを用意し、仮想通貨はそこにチャージされます。 ウォレットにはスロットという概念があり、各ユーザ複数の財布を持つことが出来ます。 これはガイドラインによってプラットフォームごとに仮想通貨を分けて管理する必要があるためです。 このガイドラインは有償仮想通貨にのみ適用される者で、無償仮想通貨はその義務は生じません。 そのため shareFree という設定値があり、ここを true に設定することですべてのスロットで無償仮想通貨を共有することができるようになります。 この際、あらゆるスロットにアクセスしても無償仮想通貨に関してはスロット0の仮想通貨が利用される。という挙動を取ります。
useVerifyReceipt で課金時に各プラットフォームから取得できるレシートを検証する機能を利用できるようになります。 レシートの検証機能を利用する場合は各プラットフォームごとに検証に必要な要素を登録しておく必要があります。
AppleAppStore におけるレシートの検証を実現するには appleKey を指定します。 appleKey にはアプリケーションの bundle_id を指定してください。 異なるアプリケーションで決済されたトランザクションで仮想通貨をチャージすることを防ぐ意味があります。
GooglePlay におけるレシートの検証を実現するには googleKey を指定します。 googleKey には Google Play Developer Console で取得できる公開鍵を指定してください。 レシートが改ざんされていないか検証するために利用します。
GS2-Money は資金決済法における前払式支払手段(自家型)に対応します。 マネージメントコンソールやAPIで取得できる未使用残高が1,000万円を超えると法的な責任が発生します。 詳しくはドキュメントを参照してください。
Request¶
{
useVerifyReceipt=boolean,
name=string,
googleKey=string,
priority=string,
currency=string,
shareFree=boolean,
appleKey=string,
description=string,
}
- useVerifyReceipt
- [boolean] ストアプラットフォームのレシートの検証機能を利用するか
- name
- [string] 仮想通貨名
- googleKey
- [string] Google のレシート検証用公開鍵
- priority
- [string] 支払い優先度
- currency
- [string] 通貨
- shareFree
- [boolean] 無償仮想通貨を異なるスロットで共有するか
- appleKey
- [string] Apple のアプリケーションバンドルID
- description
- [string] 説明文(1024文字以内)
create_platformed_item¶
response = money_client:create_platformed_item(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
プラットフォーム個別商品を新規作成します
name には各プラットフォームの管理コンソールで作成した消費型アイテムの名前を指定してください。
Request¶
{
moneyName=string,
itemName=string,
platform=string,
price=number,
name=string,
}
- moneyName
- [string] 仮想通貨の名前
- itemName
- [string] 商品の名前
- platform
- [string] 販売プラットフォーム
- price
- [number] 販売価格
- name
- [string] アプリ内課金ID
delete_item¶
response = money_client:delete_item(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
商品を削除します
Response¶
None
delete_money¶
response = money_client:delete_money(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
仮想通貨を削除します
Response¶
None
delete_platformed_item¶
response = money_client:delete_platformed_item(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
プラットフォーム個別商品を削除します
Request¶
{
moneyName=string,
itemName=string,
platform=string,
}
- moneyName
- [string] 仮想通貨の名前
- itemName
- [string] 商品の名前
- platform
- [string] プラットフォームの名前
Response¶
None
describe_item¶
response = money_client:describe_item(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
商品の一覧を取得します
Request¶
{
moneyName=string,
pageToken=string,
limit=number,
}
- moneyName
- [string] 仮想通貨の名前
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
describe_money¶
response = money_client:describe_money(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
仮想通貨の一覧を取得します
Request¶
{
pageToken=string,
limit=number,
}
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
describe_platformed_item¶
response = money_client:describe_platformed_item(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
プラットフォーム個別商品の一覧を取得します
Request¶
{
moneyName=string,
itemName=string,
pageToken=string,
limit=number,
}
- moneyName
- [string] 仮想通貨の名前
- itemName
- [string] 商品の名前
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
describe_receipt¶
response = money_client:describe_receipt(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
レシートを取得します
Request¶
{
moneyName=string,
begin=number,
end=number,
pageToken=string,
limit=number,
}
- moneyName
- [string] 仮想通貨の名前
- begin
- [number] データの取得開始日時(エポック秒)
- end
- [number] データの取得終了日時(エポック秒)
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
describe_receipt_by_user_and_slot¶
response = money_client:describe_receipt_by_user_and_slot(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
指定したユーザ・スロット番号のレシートを取得します
Request¶
{
moneyName=string,
userId=string,
slot=number,
begin=number,
end=number,
pageToken=string,
limit=number,
}
- moneyName
- [string] 仮想通貨の名前
- userId
- [string] ユーザID
- slot
- [number] スロット番号
- begin
- [number] データの取得開始日時(エポック秒)
- end
- [number] データの取得終了日時(エポック秒)
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
describe_wallet¶
response = money_client:describe_wallet(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ウォレット一覧を取得します
Request¶
{
moneyName=string,
pageToken=string,
limit=number,
userId=string,
}
- moneyName
- [string] 仮想通貨の名前
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
- userId
- [string] ユーザIDで対象のウォレットを絞り込む場合
get_item¶
response = money_client:get_item(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
商品を取得します
get_money¶
response = money_client:get_money(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
仮想通貨を取得します
get_money_status¶
response = money_client:get_money_status(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
仮想通貨の状態を取得します
get_platformed_item¶
response = money_client:get_platformed_item(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
プラットフォーム個別商品を取得します
Request¶
{
moneyName=string,
itemName=string,
platform=string,
}
- moneyName
- [string] 仮想通貨の名前
- itemName
- [string] 商品の名前
- platform
- [string] プラットフォームの名前
get_wallet¶
response = money_client:get_wallet(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ウォレットを取得します
ここでは有償仮想通貨と無償仮想通貨の数が取得できます。 有償仮想通貨は単価ごとに所持数量が別途管理されています。 詳細な構成を取得したい場合は Gs2Money:GetWalletDetail を使ってください。
Request¶
{
moneyName=string,
slot=number,
accessToken=string
}
- moneyName
- [string] 仮想通貨の名前
- slot
- [number] ウォレットのスロット番号
- accessToken
- [string] GS2-Auth で発行を受けたアクセストークン
get_wallet_detail¶
response = money_client:get_wallet_detail(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ウォレットの詳細を取得します
Request¶
{
moneyName=string,
slot=number,
userId=string,
}
- moneyName
- [string] 取得する仮想通貨の名前
- slot
- [number] 取得するウォレットのスロット番号
- userId
- [string] ユーザID
update_item¶
response = money_client:update_item(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
商品を更新します
Request¶
{
moneyName=string,
itemName=string,
count=number,
}
- moneyName
- [string] 仮想通貨の名前
- itemName
- [string] 商品の名前
- count
- [number] 付与する商品の数
update_money¶
response = money_client:update_money(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
仮想通貨を更新します
Request¶
{
moneyName=string,
priority=string,
useVerifyReceipt=boolean,
googleKey=string,
description=string,
appleKey=string,
}
- moneyName
- [string] 取得する仮想通貨の名前
- priority
- [string] 支払い優先度
- useVerifyReceipt
- [boolean] ストアプラットフォームのレシートの検証機能を利用するか
- googleKey
- [string] Google のレシート検証用公開鍵
- description
- [string] 説明文(1024文字以内)
- appleKey
- [string] Apple のアプリケーションバンドルID
update_platformed_item¶
response = money_client:update_platformed_item(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
プラットフォーム個別商品を更新します
Request¶
{
moneyName=string,
itemName=string,
platform=string,
price=number,
name=string,
}
- moneyName
- [string] 仮想通貨の名前
- itemName
- [string] 商品の名前
- platform
- [string] プラットフォームの名前
- price
- [number] 販売価格
- name
- [string] アプリ内課金ID
verify¶
response = money_client:verify(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
レシートを検証する
下記フォーマットのレシートをPOSTすることでレシートを検証し、仮想通貨のチャージまでアトミックに実行できます。 {
'Store': ストア名, 'Payload': レシート本体
}
現在ストア名には - AppleAppStore - GooglePlay が指定できます。
Request¶
{
moneyName=string,
slot=number,
receipt=string,
accessToken=string
}
- moneyName
- [string] 仮想通貨の名前
- slot
- [number] スロット番号
- receipt
- [string] レシートデータ
- accessToken
- [string] GS2-Auth で発行を受けたアクセストークン
Model¶
Item¶
- itemId
- [string] 商品ID
- count
- [number] 付与する仮想通貨の数
- createAt
- [number] 作成日時(エポック秒)
- moneyId
- [string] 仮想通貨ID
- name
- [string] 商品名
- updateAt
- [number] 最終更新日時(エポック秒)
PlatformedItem¶
- itemId
- [string] 商品ID
- moneyId
- [string] 仮想通貨ID
- name
- [string] アプリ内課金ID
- platformedItemId
- [string] プラットフォーム個別商品ID
- price
- [number] 販売価格
- platform
- [string] 販売プラットフォーム
- createAt
- [number] 作成日時(エポック秒)
- updateAt
- [number] 最終更新日時(エポック秒)
Money¶
- useVerifyReceipt
- [boolean] ストアプラットフォームのレシートの検証機能を利用するか
- moneyId
- [string] 仮想通貨ID
- name
- [string] 仮想通貨名
- googleKey
- [string] Google のレシート検証用公開鍵
- priority
- [string] 支払い優先度
- currency
- [string] 通貨
- shareFree
- [boolean] 無償仮想通貨を異なるスロットで共有するか
- createAt
- [number] 作成日時(エポック秒)
- ownerId
- [string] オーナーID
- balance
- [number] 未使用残高
- updateAt
- [number] 最終更新日時(エポック秒)
- appleKey
- [string] Apple のアプリケーションバンドルID
- description
- [string] 説明文