1.0.0-beta.16 • Published 5 months ago

@lxgfe/ng-miniapp-sdk v1.0.0-beta.16

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

快速开始

安装SDK

通过npm安装:

npm install @lxgfe/ng-miniapp-sdk --save

初始化配置

在项目中引入SDK并初始化配置:

// ESM 语法
import { NgMiniAppSDK } from '@lxgfe/ng-miniapp-sdk';

// CommonJS 语法
const { NgMiniAppSDK } = require('@lxgfe/ng-miniapp-sdk');

// 配置参数(九游平台获取)
const config = {
  appId: 'YOUR_APP_ID', // 申请的appID,必传
  publicKey: 'YOUR_PUBLIC_KEY', // 申请的publicKey,必传
  timeout: 5000, // 接口超时时间,单位毫秒,默认5s,可选
};

// 初始化sdk
const ngMiniAppSDK = new NgMiniAppSDK(config);

SDK方法

通用api调用: exec

入参

ngMiniAppSDK.exec(
  api: string,
  params: IExecParams,
): Promise<any>
请求参数描述类型是否必填
api支付宝的api地址String
params业务请求参数Object

IExecParams定义

interface IExecParams {
  [key: string]: any;
  /** 业务请求参数 */
  bizContent?: Record<string, any>;
}

出参

公共响应参数 | 响应参数 | 描述 | 类型 | | --- | --- | --- | | ngCode | 九游接口状态码,详见后面定义; 状态码为2000000,表示支付宝接口调用成功;其余状态码均为九游侧调用异常; | number | | ngMsg | 九游接口异常错误信息 | string | | id | 请求唯一ID | string |

支付宝接口调用成功,并能正常响应

  • 会透传整个支付宝返回报文,具体详见每个接口的支付宝官方文档定义;
  • 对于支付宝返回的业务异常,也是全部透传;
  • 具体可以看后面的调用示例;

九游接口状态码 | 状态码 | 描述 | | --- | --- | | 2000000 | 请求成功 | | 5000000 | 服务器内部错误 | | 5000001 | 接口不存在 | | 5000002 | 支付接口没有响应 | | 5000003 | 接口数据解密失败 | | 5000004 | 接口签名错误 | | 5000005 | 支付宝接口调用失败 |

支付回调验签: payCallbackVerify

支付回调验签入参,获取详见官方指引

入参

// 获取支付宝支付回调的全部参数,透传给sdk,进行验签
ngMiniAppSDK.payCallbackVerify(
  query: ctx.request.query,
  body: ctx.request.body,
  header: {
    header_a: ctx.header.get('header_a'),
    header_b: ctx.header.get('header_b'),
    ...
  },
)
请求参数描述类型是否必填
query支付宝回调时,在url上的query参数Object
body支付宝回调时,在请求body上的参数Object
header支付宝回调时,在请求header头上的自定义参数Object

出参

响应参数描述类型
result支付验签成功校验;true:表示支付验签成功,业务方可以进行游戏内发货操作;false:表示支付验签失败;boolean

SDK调用示例

alipay.system.oauth.token(用户授权与登录)

tips: access_token过期时,重新调用该方法

入参

请求参数描述类型是否必填
grant_type授权方式authorization_code:用授权码来换取授权令牌;refresh_token: 用刷新令牌来换取一个新的授权令牌;
code授权码,用户从客户端登录后得到;当refresh_token有传值时,不填;当refresh_token没有传值时,必填;string
refresh_token刷新令牌;刷新令牌,上次换取访问令牌时得到。本参数在 grant_type 为 authorization_code 时不填;为 refresh_token 时必填,且该值来源于此接口的返回值 app_refresh_token(即至少需要通过 grant_type=authorization_code 调用此接口一次才能获取)。string

出参

公共响应参数 https://opendocs.alipay.com/open/02xtla#%E5%85%AC%E5%85%B1%E5%93%8D%E5%BA%94%E5%8F%82%E6%95%B0

业务响应参数 https://opendocs.alipay.com/open/02xtla#%E4%B8%9A%E5%8A%A1%E5%93%8D%E5%BA%94%E5%8F%82%E

调用示例

// case1: 获取访问令牌
const res = ngMiniAPPSDK.exec('alipay.system.oauth.token', {
  grant_type: 'authorization_code',
  code: "YOUR_CODE", // 从客户端获得的授权码
});

// case2: 刷新令牌
const res = ngMiniAPPSDK.exec('alipay.system.oauth.token', {
  grant_type: 'refresh_token',
  refresh_token: "YOUR_REFRESH_TOKEN", // 从接口返回时获得的刷新令牌
});

响应示例

正常响应

{
  "ngCode": 2000000,
  "ngMsg": "操作成功",
  // 透传整个支付宝的响应结果
  "alipay_system_oauth_token_response": {
    "user_id": "2088102150477652",
    "open_id": "074a1CcTG1LelxKe4xQC0z",
    "access_token": "20120823ac6ffaa4",
    "expires_in": "3600",
    "refresh_token": "20120823ac6ffd",
    "re_expires_in": "3600",
    "auth_start": "2010-11-11 11:11:11"
  },
  "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}

异常响应

{
  "ngCode": 5000000,
  "ngMsg": "服务异常",
  "id": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}

payCallbackVerify

支付回调验签

调用示例

midwayjs 伪代码

import { Controller, Get } from '@midwayjs/core';
import { NgMiniAppSDK } from '@lxgfe/ng-miniapp-sdk';

// 配置参数(九游平台获取)
const config = {
  appId: 'YOUR_APP_ID', // 申请的appID,必传
  publicKey: 'YOUR_PUBLIC_KEY', // 申请的publicKey,必传
};

// 初始化sdk
const ngMiniAppSDK = new NgMiniAppSDK(config);

@Controller('/ng/api')
export class MyspaceController {
  // 支付回调接口
  @Get('/payCallback')
  async payCallback function () {
    const { ctx } = this;

    // 获取支付宝支付回调的全部参数,透传给sdk,进行验签
    const res = await ngMiniAppSDK.payCallbackVerify(
      query: ctx.request.query,
      body: ctx.request.body,
      header: {
        header_a: ctx.header.get('header_a'),
        header_b: ctx.header.get('header_b'),
      },
    );

    if (res?.result) {
      // TODO 支付验签成功,执行发货逻辑
    } else {
      // TODO 支付验签失败
      console.error('pay callback verify error');
    }
  }
}
1.0.0-beta.16

5 months ago

1.0.0-beta.15

5 months ago

1.0.0-beta.14

5 months ago

1.0.0-beta.13

5 months ago

1.0.0-beta.12

5 months ago

1.0.0-beta.11

5 months ago

1.0.0-beta.10

5 months ago

1.0.0-beta.9

5 months ago

1.0.0-beta.8

5 months ago

1.0.0-beta.7

5 months ago

1.0.0-beta.6

5 months ago

1.0.0-beta.5

5 months ago

1.0.0-beta.4

5 months ago

1.0.0-beta.3

5 months ago

1.0.0-beta.2

5 months ago

1.0.0-beta.1

5 months ago

1.0.0-beta.0

5 months ago