==================================================== GS2-Money ==================================================== **Create Client** .. code-block:: lua money_client = client('money') .. contents:: 目次 :local: :depth: 2 Method ==================================================== ---------------------------------------------------- charge_wallet ---------------------------------------------------- .. code-block:: lua 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 ---------------------------------------------------- .. include:: control/ChargeWalletRequest.rst Response ---------------------------------------------------- .. include:: control/ChargeWalletResult.rst ---------------------------------------------------- charge_wallet_by_user ---------------------------------------------------- .. code-block:: lua 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 ---------------------------------------------------- .. include:: control/ChargeWalletByUserRequest.rst Response ---------------------------------------------------- .. include:: control/ChargeWalletByUserResult.rst ---------------------------------------------------- consume_wallet ---------------------------------------------------- .. code-block:: lua response = money_client:consume_wallet(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ウォレットから仮想通貨を消費します paidOnly に true を指定することで、有償仮想通貨のみ消費対象とすることが出来ます。 プレミアムなサービスの提供時などに活用してください。 Request ---------------------------------------------------- .. include:: control/ConsumeWalletRequest.rst Response ---------------------------------------------------- .. include:: control/ConsumeWalletResult.rst ---------------------------------------------------- create_item ---------------------------------------------------- .. code-block:: lua 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 ---------------------------------------------------- .. include:: control/CreateItemRequest.rst Response ---------------------------------------------------- .. include:: control/CreateItemResult.rst ---------------------------------------------------- create_money ---------------------------------------------------- .. code-block:: lua 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 ---------------------------------------------------- .. include:: control/CreateMoneyRequest.rst Response ---------------------------------------------------- .. include:: control/CreateMoneyResult.rst ---------------------------------------------------- create_platformed_item ---------------------------------------------------- .. code-block:: lua response = money_client:create_platformed_item(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end プラットフォーム個別商品を新規作成します name には各プラットフォームの管理コンソールで作成した消費型アイテムの名前を指定してください。 Request ---------------------------------------------------- .. include:: control/CreatePlatformedItemRequest.rst Response ---------------------------------------------------- .. include:: control/CreatePlatformedItemResult.rst ---------------------------------------------------- delete_item ---------------------------------------------------- .. code-block:: lua response = money_client:delete_item(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 商品を削除します Request ---------------------------------------------------- .. include:: control/DeleteItemRequest.rst Response ---------------------------------------------------- None ---------------------------------------------------- delete_money ---------------------------------------------------- .. code-block:: lua response = money_client:delete_money(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 仮想通貨を削除します Request ---------------------------------------------------- .. include:: control/DeleteMoneyRequest.rst Response ---------------------------------------------------- None ---------------------------------------------------- delete_platformed_item ---------------------------------------------------- .. code-block:: lua response = money_client:delete_platformed_item(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end プラットフォーム個別商品を削除します Request ---------------------------------------------------- .. include:: control/DeletePlatformedItemRequest.rst Response ---------------------------------------------------- None ---------------------------------------------------- describe_item ---------------------------------------------------- .. code-block:: lua response = money_client:describe_item(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 商品の一覧を取得します Request ---------------------------------------------------- .. include:: control/DescribeItemRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeItemResult.rst ---------------------------------------------------- describe_money ---------------------------------------------------- .. code-block:: lua response = money_client:describe_money(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 仮想通貨の一覧を取得します Request ---------------------------------------------------- .. include:: control/DescribeMoneyRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeMoneyResult.rst ---------------------------------------------------- describe_platformed_item ---------------------------------------------------- .. code-block:: lua response = money_client:describe_platformed_item(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end プラットフォーム個別商品の一覧を取得します Request ---------------------------------------------------- .. include:: control/DescribePlatformedItemRequest.rst Response ---------------------------------------------------- .. include:: control/DescribePlatformedItemResult.rst ---------------------------------------------------- describe_receipt ---------------------------------------------------- .. code-block:: lua response = money_client:describe_receipt(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end レシートを取得します Request ---------------------------------------------------- .. include:: control/DescribeReceiptRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeReceiptResult.rst ---------------------------------------------------- describe_receipt_by_user_and_slot ---------------------------------------------------- .. code-block:: lua 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 ---------------------------------------------------- .. include:: control/DescribeReceiptByUserAndSlotRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeReceiptByUserAndSlotResult.rst ---------------------------------------------------- describe_wallet ---------------------------------------------------- .. code-block:: lua response = money_client:describe_wallet(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ウォレット一覧を取得します Request ---------------------------------------------------- .. include:: control/DescribeWalletRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeWalletResult.rst ---------------------------------------------------- get_item ---------------------------------------------------- .. code-block:: lua response = money_client:get_item(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 商品を取得します Request ---------------------------------------------------- .. include:: control/GetItemRequest.rst Response ---------------------------------------------------- .. include:: control/GetItemResult.rst ---------------------------------------------------- get_money ---------------------------------------------------- .. code-block:: lua response = money_client:get_money(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 仮想通貨を取得します Request ---------------------------------------------------- .. include:: control/GetMoneyRequest.rst Response ---------------------------------------------------- .. include:: control/GetMoneyResult.rst ---------------------------------------------------- get_money_status ---------------------------------------------------- .. code-block:: lua response = money_client:get_money_status(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 仮想通貨の状態を取得します Request ---------------------------------------------------- .. include:: control/GetMoneyStatusRequest.rst Response ---------------------------------------------------- .. include:: control/GetMoneyStatusResult.rst ---------------------------------------------------- get_platformed_item ---------------------------------------------------- .. code-block:: lua response = money_client:get_platformed_item(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end プラットフォーム個別商品を取得します Request ---------------------------------------------------- .. include:: control/GetPlatformedItemRequest.rst Response ---------------------------------------------------- .. include:: control/GetPlatformedItemResult.rst ---------------------------------------------------- get_wallet ---------------------------------------------------- .. code-block:: lua response = money_client:get_wallet(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ウォレットを取得します ここでは有償仮想通貨と無償仮想通貨の数が取得できます。 有償仮想通貨は単価ごとに所持数量が別途管理されています。 詳細な構成を取得したい場合は Gs2Money:GetWalletDetail を使ってください。 Request ---------------------------------------------------- .. include:: control/GetWalletRequest.rst Response ---------------------------------------------------- .. include:: control/GetWalletResult.rst ---------------------------------------------------- get_wallet_detail ---------------------------------------------------- .. code-block:: lua response = money_client:get_wallet_detail(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ウォレットの詳細を取得します Request ---------------------------------------------------- .. include:: control/GetWalletDetailRequest.rst Response ---------------------------------------------------- .. include:: control/GetWalletDetailResult.rst ---------------------------------------------------- update_item ---------------------------------------------------- .. code-block:: lua response = money_client:update_item(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 商品を更新します Request ---------------------------------------------------- .. include:: control/UpdateItemRequest.rst Response ---------------------------------------------------- .. include:: control/UpdateItemResult.rst ---------------------------------------------------- update_money ---------------------------------------------------- .. code-block:: lua response = money_client:update_money(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 仮想通貨を更新します Request ---------------------------------------------------- .. include:: control/UpdateMoneyRequest.rst Response ---------------------------------------------------- .. include:: control/UpdateMoneyResult.rst ---------------------------------------------------- update_platformed_item ---------------------------------------------------- .. code-block:: lua response = money_client:update_platformed_item(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end プラットフォーム個別商品を更新します Request ---------------------------------------------------- .. include:: control/UpdatePlatformedItemRequest.rst Response ---------------------------------------------------- .. include:: control/UpdatePlatformedItemResult.rst ---------------------------------------------------- verify ---------------------------------------------------- .. code-block:: lua 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 ---------------------------------------------------- .. include:: control/VerifyRequest.rst Response ---------------------------------------------------- .. include:: control/VerifyResult.rst Model ==================================================== ---------------------------------------------------- Item ---------------------------------------------------- .. include:: model/Item.rst ---------------------------------------------------- PlatformedItem ---------------------------------------------------- .. include:: model/PlatformedItem.rst ---------------------------------------------------- Wallet ---------------------------------------------------- .. include:: model/Wallet.rst ---------------------------------------------------- Money ---------------------------------------------------- .. include:: model/Money.rst ---------------------------------------------------- Receipt ---------------------------------------------------- .. include:: model/Receipt.rst ---------------------------------------------------- Summary ---------------------------------------------------- .. include:: model/Summary.rst