合作伙伴接入

AppLine 欢迎更多个人开发者入驻 AppLine 商店。透过商店获取更多用户、提高知名度并轻松解决个人开发者收费难题。如果您对接入感兴趣的话,请继续往下读。

您是否符合接入条件?

为了保证商店质量和服务个人开发者的初衷,接入商店的应用和其开发者必须满足下列要求:

  • 完全由个人开发。
  • 已上架 Google Play,部分情况可以豁免。
  • 是 Android 应用。
  • 遵守 Android 绿色应用公约 并通过审核。
  • 不经营、售卖任何色情、赌博等内容。不提供歧视内容(用户产生的除外),并遵守加拿大法律。
  • 我们可能随时下架您的应用。

如果您符合上述条件,那么恭喜您,您可以在分分钟之内接入商店并开始盈利。请发起工单(页面底部 用户支持),并选择接入主题。

撰写商店详情

为了吸引更多用户选购您的商品,您需要撰写一个全面、细致的商店详情。需要的信息包括:

  • 商品名
  • 售价(加币 CAD,最低 CA$1.99)
  • 商品详情(可以是富文本)
  • 简短商品详情(可以是富文本)
  • 商品分类(只能是一个)
  • 商品标签(可以多个)
  • 产品图标

更多讯息,如优惠等,请联系站长。设定后您将获得一个唯一的 Product ID,用于激活 API。

接入方式

根据本店 API 接口和购买方式,您的应用需要支持 激活码 激活。您需要定期生成一定量的激活码并发给开发者,我们会填到库存中。在购买完成后商店会自动把兑换码发给用户以便查阅和恢复,您完全无需管理内部细节,包括激活码发放等。您只需要关注应用的激活部分即可。 如果您的应用已有激活实现,可以仅让商店管理激活码的发放而不接入激活系统。如果您的应用没有激活实现,可以使用商店的激活系统验证激活。

商店的购买和激活流程如下,PLS 是商店激活系统:

激活 API

我们提供了多种激活 API 供您使用,并尽量花费更少的时间接入。

您只需要关注客户端的接入。客户端上需要用户提供购买时所用的邮箱以及购买后得到的激活码。

使用 HTTP API

直接调用 PLS 的 HTTP API 检查用户的凭据是否有效。

注意:请勿滥用该 API,它有 Rate Limit。请在适当的情况下进行缓存。 API 文档如下:

API 地址: https://pls.yuuta.moe

检查用户凭据

GET /check

Argument TypeRequiredDescription
emailQuery Paramtrue The user’s email
serialQuery Paramtrue The user’s serial
X-PLS-DeviceHeadertrue The device ID
X-PLS-ProductHeadertrue The product ID

返回结果

HTTP 状态码:

  • 200 For successful check and the license is placed in the body.
  • 400 For unsuccessful check, which means some required argument is missing in your request.
  • 401 For unsuccessful check, which means the information provided is incorrect, for instance, not purchased.
  • 500 For internal server error.

响应体:

 {
"source": "SHOP",
"serial": "",
"product_id": 123,
"email": "[email protected]",
"linked_to_shop": true,
"from_shop": true
}
参数类型非空详情
sourceStringtrueThe source of the serial key
serialStringtrueThe serial key provided
product_idIntegertrueThe product id provided
emailStringfalseThe email provided
linked_to_shopBooleantrueIndicates that if the serial had linked to shop
from_shopBooleantrueIndicates that if the source is SHOP

source 可能的值:

  • SHOP – 来自 AppLine

使用 SDK

SDK 提供了比 HTTP 请求更方便的使用方式。如果要使用 Java SDK,请先添加本店 Maven 仓库。对于其他语言,我们尚未支持,以后也未必支持。

请按照 https://maven.yuuta.dev/ 中的说明加入 Maven 仓库。

Java 核心 SDK

Java 核心 SDK 既可以用在服务端,也可以用于 Android 设备。它包裹可上述 HTTP 请求并增加了一些可拓展的接口。您可以按照如下方法将核心 SDK 加入您的项目:(这里未必是最新版本,请到 https://maven.yuuta.dev/ 查询最新版本)

implementation 'moe.yuuta.pls:sdk:29'

加入后,可以透过 LicenseChecker 检查用户提供的激活码、邮箱和设备 ID。在此之前,您需要一个产品 ID,在您上架产品后方可获得。

LicenseChecker.create("id") // Device ID 是用户的设备 ID,可以使用安装后生成的 ID,保证设备间唯一即可。
.check(new CheckOptions.Builder("[email protected]", // Email
"abc-def", // Serial
10) // Product ID
.build()) // 同步调用

请注意,这个方法是同步调用的,会阻塞当前线程,不建议在 Android 的 Main Thread 使用。我们强烈建议您在每次应用启动时均检查一遍。

缓存

使用缓存可以减少网路请求的次数以提高速度。Java SDK 并不包含任何缓存具体实现,只包含了缓存接口,您可以使用您自己的实现。缓存需要实现 moe.yuuta.pls.cache.CacheControl 接口,并在 CheckOptions.setCacheControl() 中配置。

Android SDK 拓展

Android 拓展 SDK 是一个适用于 Android 的、对于 Java SDK 的拓展。它提供一些只能在 Android 平台使用的接口,并可以拓展给 Java SDK 使用。目前 Android SDK 只包含 Android 缓存实现。

要使用 Android 拓展,请在引入 Java SDK的基础上加入如下依赖:

implementation 'moe.yuuta.pls:sdk-android-ext:29'

Android SDK 不能单独使用,并且需要和 Java SDK 使用同一个版本。

Android SharedPreference 缓存

Android 拓展提供了基于 SharedPreference 的缓存实现。使用同样很简单,只需要创建一个 AndroidCacheControl 并传入 CheckOptions.setCacheControl() 即可,如:

CheckOptions.setCacheControl(new AndroidCacheControl(mContext, 
new CacheControlOptions.Builder()
.build()))

同时,这个缓存实现还具有加密接口,您可以自行编写加密实现。加密实现需要实现 moe.yuuta.pls.ext.android.encrypt.Encrypter 接口,并传入 CacheControlOptions.Builder.setEncrypter 中。传入后,还需要调用 Builder.setEncryptValues(boolean)Builder.setEncryptKeys(boolean) 来确定是否加密键和值。

为了保证缓存不会一直有效,缓存实现还提供了定期失效配置。您可以自行设定失效毫秒数。只需要调用 CacheControlOptions.Builder.setExpiredIn(long) 即可,默认是 172800000

打款

目前暂定一周给您打款一次,以 RMB 打款,我们会在付款前以打款当天汇率(详情见下文 换汇)给您预留银行打款。如果您有加币银行账户,也可以直接打加币。如果最终汇款数额数位超过百分位,则四舍五入到百分位。

换汇

如果您使用 RMB 收款,那么需要换汇。我们在付款时以付款当天/当时的 中国银行加币兑人民币中行折算价 为准。

Store Fee

为了提供更好的服务以及抵收款服务费用,AppLine 商店会收取 「Store Fee」。我们会从每笔订单中扣除 CA$0.3 以及用户付款数额的 6% 作为 Store Fee。如果每笔订单的 Store Fee 低于 CA$0.8,按照 CA$0.8 收费。

退款

如果您需要将指定订单退款,请联络开发者。您只需要保证您的应用每次启动时自动检查付款状态即可,因为退款后激活码会自动失效。

免责声明

目前本店仍然处于测试状态,可能会由于维护导致数据丢失等意外。我们 强烈 建议您在自己的服务器或数据库备份激活的订单讯息。如果数据丢失,我们会免除您 2 个星期的 Store Fee。