steam游戏内支付-----python

一.steam支付小额交易(游戏内)

在学习steam支付可以以先看看文档小额交易实现指南 (Steamworks 文献库) (steamgames.com),文档中详细的介绍在游戏中购买游戏道具或者会员等,一系列流程,请仔细阅读。也可以看下面的支付流程

二,支付流程

此方式适用于有内置商店的游戏,并且用户将在游戏内购物。

  • 第一步
    您的游戏需要使用 Steamworks API 发布。 这代表须包含一个头文件、链接至库文件,并随产品发布一个 DLL。 参见 Steamworks API 概览,了解更多信息。 必须先成功初始化 Steamworks API 之后才能继续!
  • 第二步
    用户在您的游戏内选择购买一个或多个物品。 物品选定后,您的游戏需要下列几项有关用户的元数据:
    • Steam ID - 用来在 Steam 系统中识别此用户的唯一的 64 位数字。
    • 国家代码 - 显示用户从哪个国家购买的 ISO 3166 国家代码, 据此来决定售价。
    • 货币代码 - 将使用何种货币扣款的 ISO 4217 货币代码。
    • 客户端游戏语言代码 – Steam 客户端正在以何种语言运行游戏的 ISO 639-1 语言代码。

    Steam ID 和语言可通过以下 Steamworks API 调用取得:
    要获得用户的国家/地区和货币类型,可使用 ISteamMicroTxn/GetUserInfo web API 请求传入用户的 Steam ID 。

    此用户的元数据应与您的一般购买数据一起发送至购买服务器。
  • 第三步
    您的购买服务器代表 Steam 客户端通过 Steam 网页服务发起购买请求。 您需要使用后文将描述到的 ISteamMicroTxn/InitTxn。 请求中必须包含下列数据:
    • Order ID - 由您为此次购买指定的唯一的 64 位数字。 此数字也是此次交易的键值, 在 Steam 系统中引用该交易时使用。
    • Steam ID - 第三步中从 Steam 客户端收到的用户 ID 。
    • App ID - 您的 Steam 游戏的唯一标识符。
    • 语言 - 您的物品所使用的 ISO 639-1 语言代码。
    • 货币 - 您的物品价格所使用的 ISO 4217 货币代码。 如果这与第二步中提供的用户的货币代码不匹配,则将以当前市场汇率自动进行进货币转换。 Steam 将向用户显示转换后的本地货币价格,以供批准。 为了获得最佳的顾客体验,我们建议提供您预期顾客会使用的每种货币的定价。
    • 用户希望购买的物品列表, 每项物品需要指定下列具体数据:
      • 物品 ID - 您的 32 位物品标识符。
      • 数量 - 交易中此类型的物品的数量。
      • 金额 - 您希望收取的物品金额(以百分位为单位)。 部分币种必须以整值定价,参见支持币种,了解更多信息。 如果物品的数量大于一,则此值为要收取的总额(金额 = 数量 x 物品单价)。
      • 物品描述 - 物品的文字描述。 在用户收到的授权交易提示中,将显示此信息。 您可根据 Steam 客户端指定的语言代码将这段描述本地化。
      • 物品类别 - 可选用,描述此物品所属类别的文字。 Steam 后端报表中会使用该值对销售数据进行分组,但绝不会显示给用户。

    如果 Steam 接受了这项交易,即会自动通知客户端进行购买授权。 如果返回错误,则需要在修正问题后重新提交一笔购买交易。
  • 第四步
    如果 ISteamMicroTxn/InitTxn 尝试成功,用户将会通过 Steam 的游戏内界面收到需要对交易进行授权的通知。 所显示的交易详情将使用购买请求中提供的物品描述。 用户便可授权这项交易。 如果用户的 Steam 帐户余额不足,Steam 将自动引导用户充值。 最后,您的游戏将会收到交易是否授权成功的通知。

    您的游戏需要设置 ISteamUser::MicroTxnAuthorizationResponse_t 回调处理程序,以接收授权是否成功的通知。 此回调结果包含 AppID、OrderID,和交易的授权状态。 您的游戏可将此结果发送至购买服务器,以进行交易的最终确认。 请参见回调文档,了解更多信息。
  • 第五步
    您的购买服务器将使用 ISteamMicroTxn/FinalizeTxn API 命令,使用下列参数完成交易。
    • Order ID - 发起交易时创建的订单 ID。
    • App ID - 您的 Steam 游戏的唯一标识符。

    响应成功表示购买被接受,应将物品授予用户。 响应错误表示交易无法完成,并会附上相应的出错信息。
  • 第六步
    您的购买服务器将需要频繁调用 ISteamMicroTxn/GetReport API 来接收有关交易结算状态变化的通知。 您应每天至少调用一次此 API 来协调结算更新,但为确保您的服务器与交易更新保持同步,每分钟调用一次此 API 也是可以的。

    您可以自行决定使用 ISteamMicroTxn/RefundTxn API 对客户交易进行退款。 但是,还有其他可以撤销交易的方法,可能需要您注意。 当交易进入逆转状态(例如,Refunded、PartialRefund、Chargedback、RefundedSuspsectedFraud 或 RefundedFriendlyFraud - 请参阅:附录 A:状态值)时,如有可能,您的后端应尝试收回与逆转的交易相关联的物品。 请查看我们关于防范欺诈的文献,并确保您已采取措施防范最常见的欺诈类型。

 三,python代码实现

1.做第一个支付接口Ⅰ,首先需要获取用户的元数据,也需要获取国家代码和货币代码

GET https://partner.steam-api.com/ISteamMicroTxn/GetUserInfo/v2/

向这个API发送GET请求,请求参数看这个链接ISteamMicroTxn 接口 (Steamworks 文献库) (steamgames.com)

2.然后就是向以下API发送POST请求,steam调起支付页面,等待用户进行授权。

POST https://partner.steam-api.com/ISteamMicroTxn/InitTxn/v3/

请求参数详细可看ISteamMicroTxn 接口 (Steamworks 文献库) (steamgames.com)

 3.第二个支付接口Ⅱ,向以下API发送POST请求,验证orderid是否授权

POST https://partner.steam-api.com/ISteamMicroTxn/FinalizeTxn/v2/

当响应成功时,就是支付成功了,整个支付流程就成功了

注意:steam支付,也是有沙盒环境的,

在测试阶段   API中的ISteamMicroTxn都使用ISteamMicroTxnSandbox代替

当应用程序上线时,使用ISteamMicroTxn

有什么不懂的请细读steam文档,文档中有你想要的

  • 11
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值