服务端接入准备

更新时间:
复制 MD 格式

简介

在接入“小游戏支付”或“小游戏通用信息查询”功能前,需完成服务端接入准备,包括申请阿里云账号、开通 mPaaS AI 内容魔方权限,并获取具有访问权限的 AccessKey(AK/SK)。

阿里云账号准备

  1. 创建 RAM 用户

    请确保您已创建阿里云账号,并成功登录阿里云 RAM 控制台,身份管理 > 用户 > 创建用户,进行用户创建,必须勾选 使用永久 AccessKey 访问。

    image.png

  2. 保存 AK/SK

    创建完成后,仅首次创建,会出现 AccessKey 和 AccessSecret 相关信息,务必复制保存!!!

    image.png

  3. 申请 mPaaS 权限

    在阿里云 RAM 控制台,权限管理 > 授权,授权主题选择 刚创建的 RAM 用户,权限策略选择 AliyunMPAASFullAccess,新增 mPaaS 接入权限。

    image.png

  4. 使用 AK/SK

    完成 SDK 接入后,平台方可使用 AccessKey(AK/SK)调用 mPaaS 服务接口,实现订单状态的主动查询和用户身份校验功能。

SDK 调用示例

SDK 依赖

Java

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>mpaas20201028</artifactId>
    <version>5.3.2</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>tea-openapi</artifactId>
    <version>0.3.10</version>
</dependency>

Go

go get github.com/alibabacloud-go/mpaas-20201028/v3@v3.3.2

PHP

composer require alibabacloud/mpaas-20201028:3.3.2

代码示例

代码仅做参考,不用于具体接入使用。如有问题请及时联系 mPaaS 技术支持人员。

Java

public static String REGION_ID = "cn-hangzhou";
public static String ENDPOINT = "mpaas.cn-hangzhou.aliyuncs.com";

// 杭州非金预发
public static String ACCESS_KEY_ID = "AK";
public static String ACCESS_KEY_SECRET = "AS";
private static String MINI_PROGRAM_ID = "小游戏ID";
private static String PLATFORM_ID = "平台ID";
public static String CUSTOM_ID = "订单自定义ID";


public static void main(String[] args) throws Exception {
    Config config = new Config();
    // 必填,您的 AccessKey ID
    config.setAccessKeyId(MPAAS_AK_ENV);
    // 必填,您的 AccessKey Secret
    config.setAccessKeySecret(MPAAS_SK_ENV);
    // mPaaS 的 REGION_ID 和 Endpoint,以杭州非金为例
    config.setRegionId(REGION_ID);
    config.setEndpoint(ENDPOINT);
    Client client = new Client(config);

    queryPayOrderToMsence(client);
}

private static void queryPayOrderToMsence(Client client) throws Exception {
    QueryPayOrderToMsenceRequest request = new QueryPayOrderToMsenceRequest();
    request.setMiniProgramId(MINI_PROGRAM_ID);
    request.setPlatformId(PLATFORM_ID);
    request.setCustomId(CUSTOM_ID);

    QueryPayOrderToMsenceResponse response = client.queryPayOrderToMsence(request);
    System.out.println("response==>" + JSON.toJSONString(response));
}

Go

package main

import (
	"fmt"
	"os"

	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	mpaas "github.com/alibabacloud-go/mpaas-20201028/v3/client"
	"github.com/alibabacloud-go/tea/dara"
)

func main() {
	if err := queryPayOrderToMsence(); err != nil {
		fmt.Fprintf(os.Stderr, "查询订单失败: %v\n", err)
		os.Exit(1)
	}
}

// queryPayOrderToMsence 演示如何调用 QueryPayOrderToMsence 接口
// 该接口用于查询支付订单状态
func queryPayOrderToMsence() error {
	// 1. 创建客户端配置
	config := &openapi.Config{
		// 阿里云 AccessKey ID
		AccessKeyId: dara.String("LTAI5tMZR3xxx"),
		// 阿里云 AccessKey Secret
		AccessKeySecret: dara.String("C811bjRc8z9HxeI0Nxxx"),
		// 区域 ID,例如:cn-hangzhou
		RegionId: dara.String("cn-hangzhou"),
		// 可选:自定义 endpoint
		Endpoint: dara.String("mpaas.cn-hangzhou.aliyuncs.com"),
	}

	// 2. 创建客户端
	client, err := mpaas.NewClient(config)
	if err != nil {
		return fmt.Errorf("创建 mpaas 客户端失败: %w", err)
	}

	// 3. 构建请求参数
	request := &mpaas.QueryPayOrderToMsenceRequest{
		// 平台标识
		PlatformId: dara.String("xxxxxx"),
		// 小游戏 ID
		MiniProgramId: dara.String("123321"),
		// 自定义 ID(与创建订单时传入的 CustomId 一致)
		CustomId: dara.String("test_custom_id"),
	}

	// 4. 调用接口
	response, err := client.QueryPayOrderToMsence(request)
	if err != nil {
		return fmt.Errorf("调用 QueryPayOrderToMsence 失败: %w", err)
	}

	// 5. 处理响应
	if response.Body != nil {
		fmt.Printf("请求 ID: %s\n", dara.StringValue(response.Body.RequestId))
		fmt.Printf("是否成功: %v\n", dara.BoolValue(response.Body.Success))
		fmt.Printf("结果码: %s\n", dara.StringValue(response.Body.ResultCode))
		fmt.Printf("结果消息: %s\n", dara.StringValue(response.Body.ResultMsg))

		if response.Body.MpaasUserGamecenterPaymentQuerystatusResponse != nil {
			fmt.Printf("订单状态: %s\n", dara.StringValue(response.Body.MpaasUserGamecenterPaymentQuerystatusResponse.OrderStatus))
		}
	}

	return nil
}

PHP

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\SDK\MPaaS\V20201028\MPaaS;
use AlibabaCloud\SDK\MPaaS\V20201028\Models\QueryPayOrderToMsenceRequest;
use AlibabaCloud\Dara\Exception\DaraException;
use AlibabaCloud\Dara\Models\RuntimeOptions;
use Darabonba\OpenApi\Models\Config;

// 1. 创建客户端配置
$config = new Config([
    'accessKeyId' => getenv('ALIBABA_CLOUD_ACCESS_KEY_ID') ?: 'LTAI5tMZR33xxx',
    'accessKeySecret' => getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET') ?: 'C811bjRc8z9HxeIxxx',
    'regionId' => 'cn-hangzhou',
    'endpoint' => 'mpaas.cn-hangzhou.aliyuncs.com',
]);

// 2. 创建客户端实例
$client = new MPaaS($config);

// 3. 构建请求参数
$request = new QueryPayOrderToMsenceRequest([
    'customId' => 'your-custom-id',     // 自定义ID
    'miniProgramId' => 'your-mini-program-id', // 小游戏ID
    'platformId' => 'your-platform-id', // 平台ID
]);

// 4. 创建运行时配置(可选)
$runtime = new RuntimeOptions([
    'readTimeout' => 10000,
    'connectTimeout' => 5000,
]);

try {
    // 方式一:使用默认运行时配置调用
    $response = $client->queryPayOrderToMsence($request);

    // 方式二:使用自定义运行时配置调用
    // $response = $client->queryPayOrderToMsenceWithOptions($request, $runtime);

    // 5. 处理响应
    $body = $response->body;
    echo "RequestId: " . $body->requestId . "\n";
    echo "ResultCode: " . $body->resultCode . "\n";
    echo "ResultMsg: " . $body->resultMsg . "\n";
    echo "Success: " . ($body->success ? 'true' : 'false') . "\n";

    // 获取订单状态
    if ($body->mpaasUserGamecenterPaymentQuerystatusResponse) {
        echo "OrderStatus: " . $body->mpaasUserGamecenterPaymentQuerystatusResponse->orderStatus . "\n";
    }

} catch (DaraException $e) {
    // 处理业务异常
    echo "DaraException: " . $e->getMessage() . "\n";
    echo "Code: " . $e->getCode() . "\n";
} catch (\Exception $e) {
    // 处理其他异常
    echo "Exception: " . $e->getMessage() . "\n";
}

常见问题

Q:服务端接入准备是否为必选?

A:是的。
服务端接入准备是使用 mPaaS AI 内容魔方各项能力的前提条件,包括支付、订单查询等核心功能均需完成该步骤后方可使用。

Q:服务端接入是否需要申请阿里云账号?

A:是的,必须申请。
平台方需注册并登录阿里云账号,开通 mPaaS AI 内容魔方权限,并获取具备访问权限的 AccessKey ID 和 AccessKey Secret(AK/SK),否则无法进行账号鉴权、支付处理、订单主动查询等操作。

Q:SDK 调用示例是否可以直接使用?

A:不建议直接使用。
SDK 示例代码仅供参数构造和调用方式参考,建议根据自身业务逻辑对 SDK 进行封装与适配,以确保代码的安全性、可维护性和系统兼容性。

Q:如果不使用 SDK,是否有无依赖的 HTTP 直接调用方式?

A:目前暂不支持。
当前仅支持通过 SDK 接入方式调用 mPaaS 服务,SDK 支持的语言包括 Java、Go、PHP,建议优先选择 Java 方式接入。若使用其他语言,请联系 mPaaS AI 内容魔方相关运营人员协助处理。

Q:能否提供 SDK 源码?

A:暂不提供源码。
目前仅提供官方发布的 SDK 依赖包,开发者可通过官方仓库引入使用。