一、写作目的

向外部开发者介绍接入本系统激活码相关模块的步骤。

二、激活码购买步骤

您的用户想要获得激活码有两种方式。下面分别进行介绍。

要想进行如下的操作,请先生成激活码,在开发者平台的激活码管理那个页面可以进行添加。

1.直接在账号平台网站上注册然后在线支付购买。

流程图如下:

2.开发者自己来收款,在系统里给用户发码。

流程图如下:

二、相关接入步骤

您有两种方式进行接入,分别是有登陆方式和无登录方式。

1.有登陆方式

如果您的 APP 愿意使用本账号系统,那么您可以采用这种方式集成。采用这种方式集成之后如下这篇文档里的功能模块则均能使用。

星空辽阔账号系统 API

时序图(接口编号为上面的这篇文档里的接口序号):

下面给出一个 Laravel Middleware  例子,便于开发者在自己的服务器上实现验证。

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class ApiAuthKey
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $key = \Request::header('Key');

        if($key == NULL) {
            return response()->json([
                    'code' => 202
                ]);
        }

        try{
            $key_obj = json_decode(base64_decode($key), FALSE);

            $random_key = $key_obj->random_key;
            $expire_in = $key_obj->expire_in;
            $signed_key = $key_obj->signed_key;
            $user_id = $key_obj->user_id;

            $correct_signed_key = md5($random_key.$expire_in.$user_id.env('SIGN_KEY')); //.env里的 SIGN_KEY  即为您在开发者平台里获取的签名 Key

            if($expire_in < time()) {
                return response()->json([
                        'code' => 203
                    ]);
            }

            if($correct_signed_key !== $signed_key) {
                return response()->json([
                        'code' => 204
                    ]);
            }

            $request["user_id"] = $user_id;
        }
        catch(\Exception $e){
            return response()->json([
                    'code' => 201
                ]);
        }


        return $next($request);
    }
}

将这个 Middleware  在您所想要保护的 route  启用,您在 Controller 里即可用如下的方式来获取 User ID:

$user_id = $request->input('user_id');

2.无登录方式

如果您的 APP 里不需要账号体系,您可以选用这种方式来进行集成,那么您就只能使用激活码相关模块,其他功能模块以后会视情况进行开发。

此方式的文档如下:

星空辽阔账号系统免登 API

时序图(接口编号为上面的这篇文档里的接口序号):

下面给出一个 Laravel Middleware  例子,便于开发者在自己的服务器上实现验证。

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class ApiAuthKey
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $key = \Request::header('Key');

        if($key == NULL) {
            return response()->json([
                    'code' => 202
                ]);
        }

        try{
            $key_obj = json_decode(base64_decode($key), FALSE);

            $random_key = $key_obj->random_key;
            $expire_in = $key_obj->expire_in;
            $signed_key = $key_obj->signed_key;
            $user_email = $key_obj->user_email;
            $device_id = $key_obj->device_id;

            $correct_signed_key = md5($device_id.$expire_in.$random_key.$user_email.env('SIGN_KEY')); //.env里的 SIGN_KEY  即为您在开发者平台里获取的签名 Key

            if($expire_in < time()) {
                return response()->json([
                        'code' => 203
                    ]);
            }

            if($correct_signed_key !== $signed_key) {
                return response()->json([
                        'code' => 204
                    ]);
            }

            $request["user_email"] = $user_email;
            $request["device_id"] = $device_id;
        }
        catch(\Exception $e){
            return response()->json([
                    'code' => 201
                ]);
        }


        return $next($request);
    }
}

将这个 Middleware  在您所想要保护的 route  启用, 同理,您在 Controller 里即可用如下的方式来获取 User Email(即为这个激活码主人的 Email) 以及 Device id:

$device_id = $request->input('device_id');
$user_email = $request->input('user_email');