In-App支付测试及安全性
概要
ONE store在开发环境(以下称"Sandbox")和商用支付环境(以下称"商用测试")中支持In-App商品的支付测试。
Sandbox不是商用支付环境,而是虚拟支付环境。在支付界面中,如果您在支付失败或成功时选择了您所希望的响应,系统就会发送相应的响应结果。
商用测试是在商用支付环境中进行相应In-App商品的支付,并发送支付结果。
在商用测试环境下进行支付时,如不取消支付,则可能会产生费用,因此在支付测试后一定要取消支付。
In-App支付测试界面
在“应用内信息”屏幕上,点击“支付测试”按钮即可进入应用内支付测试屏幕。 在此屏幕上,您可以管理测试 ID 或查看支付测试记录。
注册及管理测试ID
为了在开发及商用环境中测试In-App支付,必须事先注册测试ID。
在In-App支付测试界面中选择"注册/管理测试ID"Tab,可转至管理测试ID的界面。
测试ID为ONE store用户ID,可查询在ONE store注册的会员ID进行注册。
如果不是ONE store会员,则可以运行ONE store应用软件,创建一个测试用的ONE store ID后,然后将该ID注册为测试ID即可。
注册测试ID
查询要作为测试ID的One store会员ID。
确认查询的One store ID后,用该测试ID选择在哪个支付环境(Sandbox,商用测试)进行支付测试。
必要时输入参考事项,单击注册按钮注册测试ID。
用已注册的测试ID,可以设置进行支付测试的环境。
更改测试ID的支付环境时,必须点击"保存",保存新的设置。
删除测试ID(个别删除,批量删除)
测试ID不再有效时,可删除测试ID。
可以点击"删除"按钮后删除个别测试ID,也可以选择多个测试ID后点击"删除已选ID"按钮进行批量删除。
复制测试ID设置
如果同一测试ID可以在多个应用软件使用,则可以将测试ID设置复制到其他应用软件。
只有可复制的应用软件才能点击check box,选择好要复制的测试ID设置的对象软件后,点击"复制"。
Sandbox环境下的支付测试(必选)
Sandbox支付测试及验证
Sandbox不是商用支付环境,而是虚拟支付环境。在支付界面中,如果您在支付失败或成功时选择了您所希望的响应,系统就会发送相应的响应结果。
在Sandbox支付的订单可以在In-App支付测试界面的"Sandbox"tap上查询,也可以取消支付。
每个操作系统都需要至少在沙盒中进行一次测试。如果未进行测试,则无法提交验证请求。
不需要按国家/地区进行测试。您可以在任何方便的国家/地区进行测试。
如果通过 ONE Game Loop 分发 AAB/APK,请参考 Android 操作系统的测试结果,并在 Android 环境中进行测试。
所有In-App商品必须在Sandbox里进行1次以上测试,首次注册商品时,如有1个未进行测试的In-App商品,则无法激活验证请求按钮。
测试环境(商用和Sandbox)信息与One store服务连接期间保存在memory。 如果通过开发者中心变更了测试ID的测试环境,则必须终止应用软件并重新启动。
订阅型商品的sandbox测试
开发订阅型商品时,如果设定与实际时间相同的支付周期,测试就需要很长的时间。 为此,Sandbox环境支持按订阅周期调整所需时间,使测试更加顺利。 根据每个支付周期和功能,Sandbox内的时间流如下。
支付周期
Sandbox内时间
1周
5分
1个月
5分
3个月
10分
6个月
15分
1年
30分
功能
Sandbox 内时间
免费订阅
3分
延期时间
5分
保留账号
10分
反映价格变更 (7天)
5分
价格变更同意期间 (30天)
5分
商用测试环境下的支付测试(可选)
商用测试是在商用支付环境中进行相应In-App商品的支付,并发送支付结果。 商用测试支付的订单可以在In-App支付测试界面"商用测试"tab查询,也可以取消支付。 在商用测试环境下进行支付时,如不取消支付,则可能会产生费用,因此在支付测试后一定要取消支付。
In-App支付测试的支付结果确认及取消支付
您可以对In-App支付测试历史记录进行支付状态确认及取消支付。 在Sandbox中支付的记录可以在In-App支付测试画面的"Sandbox"Tab上查询,在商用T测试中支付的记录可以在In-App支付测试画面的"商用测试"Tab上查询。
Sandbox环境
提供在Sandbox环境下进行的支付测试的历史记录
可以查询已支付的商品信息及支付状态,也可以取消支付。
商用测试环境·
提供在商用测试环境下进行的支付测试的历史记录。
可以查询已支付的商品信息及支付状态,也可以取消支付。
安全性和认证
In-App支付的安全性
ONE store In-App支付使用签名(Signature)的有效性认证方法验证数据是否伪造和篡改,以确保安全支付。 由于手机应用软件暴露在许多攻击的威胁下,为了将这种危险降到最低,建议在开发公司应用软件或服务器进行签名认证。 下面是开发公司为了更安全的In-App支付需要进一步准备的事项。
使用开发公司服务器
为了有效避开APK Reverse Engineering等的攻击,体现代码和Public key等可以在服务器中保管并进行认证。 在存储购买信息时,比起存储在智能手机,建议最好存储在开发公司服务器,来确认商品的使用许可。
使用已更改的代码
One store提供的api sample是向很多人开放的代码,比起直接使用原件,建议修改后使用。 如果使用相同的代码,那么就很容易暴露在攻击的危险中。
最好使用Proguard等代码混淆工具保护支付相关代码。
即使是Public Key,在软件代码中加入普通字符串也不是安全的方法。建议例如与其他字符串进行XOR以避免轻易暴露等,使攻击者无法轻易接近,这是安全的。
要求支付时使用"developerPayload"字段
开发公司在要求支付时,可将任意信息放入"developerPayload"字段中,并在完成支付后重新收到信息。
在相应字段中加入组合了timestamp等的附加安全验证的数据,可以使支付结果的验证更加安全。
ONE store In-App支付认证方法
认证准备
为了认证的Key算法使用RSA方式,采用'SHA512withRSA'作为签名的算法。 签名验证Key请参考应用One store In-App支付的事前准备页面中的"许可证密钥及OAuth认证信息确认"部分。 签名验证Key的值根据智能手机或服务器等认证的位置适当存储并使用。
签名认证api sample
SDK提供"AppSecurity"Utility的Class,可使用"verifyPurchase"Method进行签名认证。 如果开发公司想不使用SDK,直接进行签名认证,则必须直接实现与"AppSecurity"相同功能的代码。 详细的实现内容参考与SDK library一起发放的sample。
Last updated