@bi-nova/services 1.3.2-beta.202605161224
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +336 -0
- package/dist/index.d.mts +637 -0
- package/dist/index.d.ts +637 -0
- package/dist/index.js +5 -0
- package/dist/index.mjs +5 -0
- package/package.json +35 -0
package/README.md
ADDED
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
# @bi-nova/services
|
|
2
|
+
|
|
3
|
+
跨平台广告服务 SDK,以 NovaSDK 插件形式提供京东保险口令、京东金融现金贷等业务服务。
|
|
4
|
+
|
|
5
|
+
支持环境:微信小程序、支付宝小程序、Taro、H5(浏览器)。
|
|
6
|
+
|
|
7
|
+
## 安装
|
|
8
|
+
|
|
9
|
+
::: code-group
|
|
10
|
+
|
|
11
|
+
```bash [pnpm]
|
|
12
|
+
pnpm add @bi-nova/core @bi-nova/services
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```bash [npm]
|
|
16
|
+
npm install @bi-nova/core @bi-nova/services
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
:::
|
|
20
|
+
|
|
21
|
+
## 快速开始
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { createNova } from '@bi-nova/core'
|
|
25
|
+
import { createServices } from '@bi-nova/services'
|
|
26
|
+
|
|
27
|
+
const nova = createNova({ appId: 'your-app-id', autoEnv: true })
|
|
28
|
+
|
|
29
|
+
nova.use(createServices({
|
|
30
|
+
env: 'prod',
|
|
31
|
+
debug: false,
|
|
32
|
+
getAuthToken: () => getToken(),
|
|
33
|
+
}))
|
|
34
|
+
|
|
35
|
+
// 调用服务
|
|
36
|
+
const result = await nova.jd.handleJdInsurance({ equipmentValue: '...' })
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## 登录态 token 管理
|
|
41
|
+
|
|
42
|
+
`createServices` 安装后会在 `nova` 实例上挂载登录态管理方法:
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
nova.setToken(token)
|
|
46
|
+
nova.clearToken()
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
推荐在宿主登录成功后写入 token:
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
const nova = createNova({ appId: 'your-app-id', autoEnv: true })
|
|
53
|
+
|
|
54
|
+
nova.use(createServices({
|
|
55
|
+
env: 'prod',
|
|
56
|
+
debug: false,
|
|
57
|
+
}))
|
|
58
|
+
|
|
59
|
+
// 用户登录成功后写入 token,后续需要登录态的内部服务会自动携带。
|
|
60
|
+
nova.setToken(loginResult.token)
|
|
61
|
+
|
|
62
|
+
// 用户退出登录或 token 失效时清理。
|
|
63
|
+
nova.clearToken()
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
如果宿主已经有统一登录态管理,也可以继续使用初始化配置中的 `getAuthToken`:
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
nova.use(createServices({
|
|
70
|
+
env: 'prod',
|
|
71
|
+
getAuthToken: () => appStore.token,
|
|
72
|
+
}))
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
内部请求的 token 获取优先级为:
|
|
76
|
+
|
|
77
|
+
```txt
|
|
78
|
+
nova.setToken(token) 写入的运行时 token
|
|
79
|
+
> createServices({ getAuthToken }) 返回值
|
|
80
|
+
> SDK storage 中的 auth_token
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
默认情况下,内部 API 请求需要 token;明确无需 token 的接口会在 SDK 内部单独标记,例如展示广告配置接口。
|
|
84
|
+
|
|
85
|
+
## UMD 使用
|
|
86
|
+
|
|
87
|
+
```html
|
|
88
|
+
<script src="bi-nova.umd.js"></script>
|
|
89
|
+
<script>
|
|
90
|
+
const { createNova, createServices } = window.BiNova
|
|
91
|
+
|
|
92
|
+
const nova = createNova({ appId: 'xxx', autoEnv: true })
|
|
93
|
+
nova.use(createServices({
|
|
94
|
+
env: 'sit',
|
|
95
|
+
debug: true,
|
|
96
|
+
getAuthToken: () => getToken(),
|
|
97
|
+
}))
|
|
98
|
+
|
|
99
|
+
// 调用方式完全一致
|
|
100
|
+
const result = await nova.jd.handleJdInsurance({ equipmentValue: '...' })
|
|
101
|
+
</script>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 初始化配置
|
|
107
|
+
|
|
108
|
+
### 配置选项(ServicesOptions)
|
|
109
|
+
|
|
110
|
+
| 字段 | 类型 | 必填 | 默认值 | 说明 | 适用 |
|
|
111
|
+
|------|------|:----:|--------|------|------|
|
|
112
|
+
| `debug` | `boolean` | 否 | `false` | 开启调试日志 | 所有 |
|
|
113
|
+
| `env` | `string` | 否 | `'prod'` | 内部 API 环境:`'dev'` / `'sit'` / `'uat'` / `'prod'` | 内部服务 |
|
|
114
|
+
| `apiDomain` | `string` | 否 | `''` | 自定义 API 域名(覆盖 env 映射) | 内部服务 |
|
|
115
|
+
| `getAuthToken` | `() => Promise<string> \| string` | 否 | - | 获取鉴权 token | 内部服务 |
|
|
116
|
+
| `externalEnv` | `string` | 否 | `'prod'` | 外部对接环境:`'sit'` / `'release'` / `'prod'` | 外部服务 |
|
|
117
|
+
| `externalAppId` | `string` | 外部必填 | - | 乐遥摇平台分配的应用标识(⚠️ 非微信/支付宝小程序 appId) | 外部服务 |
|
|
118
|
+
| `externalAppSecret` | `string` | 外部必填 | - | 乐遥摇平台分配的应用密钥 | 外部服务 |
|
|
119
|
+
|
|
120
|
+
> ⚠️ **注意**:`externalAppId` 和 `externalAppSecret` 是由乐遥摇平台分配的应用凭证,与微信/支付宝小程序的 `appId`/`appSecret` 无关。
|
|
121
|
+
|
|
122
|
+
### 配置示例
|
|
123
|
+
|
|
124
|
+
**仅内部服务:**
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
nova.use(createServices({
|
|
128
|
+
env: 'sit',
|
|
129
|
+
debug: true,
|
|
130
|
+
getAuthToken: () => getToken(),
|
|
131
|
+
}))
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**仅外部对接服务:**
|
|
135
|
+
|
|
136
|
+
```ts
|
|
137
|
+
nova.use(createServices({
|
|
138
|
+
externalEnv: 'sit',
|
|
139
|
+
externalAppId: 'leyaoyao-assigned-app-id',
|
|
140
|
+
externalAppSecret: 'leyaoyao-assigned-secret',
|
|
141
|
+
}))
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**同时使用内部和外部服务:**
|
|
145
|
+
|
|
146
|
+
```ts
|
|
147
|
+
nova.use(createServices({
|
|
148
|
+
// 内部服务配置
|
|
149
|
+
env: 'sit',
|
|
150
|
+
getAuthToken: () => getToken(),
|
|
151
|
+
// 外部服务配置
|
|
152
|
+
externalEnv: 'sit',
|
|
153
|
+
externalAppId: 'leyaoyao-assigned-app-id',
|
|
154
|
+
externalAppSecret: 'leyaoyao-assigned-secret',
|
|
155
|
+
debug: true,
|
|
156
|
+
}))
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### 环境域名映射
|
|
160
|
+
|
|
161
|
+
**内部 API(`env`)** — 适用于京东保险服务、京东金融现金贷服务
|
|
162
|
+
|
|
163
|
+
| env | 域名 |
|
|
164
|
+
|-----|------|
|
|
165
|
+
| `dev` | `https://dm.leyaoyao.com` |
|
|
166
|
+
| `sit` | `https://sm.leyaoyao.com` |
|
|
167
|
+
| `uat` | `https://um.leyaoyao.com` |
|
|
168
|
+
| `prod` | `https://m.leyaoyao.com` |
|
|
169
|
+
|
|
170
|
+
**外部对接 API(`externalEnv`)** — 适用于外部对接京东保险服务
|
|
171
|
+
|
|
172
|
+
| externalEnv | 域名 |
|
|
173
|
+
|-------------|------|
|
|
174
|
+
| `sit` | `https://sopenapi.leyaoyao.com` |
|
|
175
|
+
| `release` | `https://uopenapi.leyaoyao.com` |
|
|
176
|
+
| `prod` | `https://openapi.leyaoyao.com` |
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## API 详解
|
|
181
|
+
|
|
182
|
+
所有方法返回统一格式:
|
|
183
|
+
|
|
184
|
+
```ts
|
|
185
|
+
interface BuildResultReturn<T = any> {
|
|
186
|
+
code: number // 0 = 成功,非 0 = 失败
|
|
187
|
+
message: string // 提示信息
|
|
188
|
+
data: T | null // 业务数据
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## TypeScript 类型
|
|
195
|
+
|
|
196
|
+
### 类型导入
|
|
197
|
+
|
|
198
|
+
**方式一:导入特定类型(推荐)**
|
|
199
|
+
|
|
200
|
+
```ts
|
|
201
|
+
// 配置类型
|
|
202
|
+
import type { ServicesOptions } from '@bi-nova/services'
|
|
203
|
+
|
|
204
|
+
// 京东保险服务类型
|
|
205
|
+
import type {
|
|
206
|
+
JdInsuranceOptions,
|
|
207
|
+
JdInsuranceExternalOptions,
|
|
208
|
+
JdInsuranceResult,
|
|
209
|
+
} from '@bi-nova/services'
|
|
210
|
+
|
|
211
|
+
// 京东金融现金贷服务类型
|
|
212
|
+
import type {
|
|
213
|
+
JdjrCashLoanOptions,
|
|
214
|
+
JdjrCashLoanExternalOptions,
|
|
215
|
+
} from '@bi-nova/services'
|
|
216
|
+
|
|
217
|
+
// 通用类型
|
|
218
|
+
import type {
|
|
219
|
+
PluginConfig,
|
|
220
|
+
BuildResultReturn,
|
|
221
|
+
JumpConfig,
|
|
222
|
+
} from '@bi-nova/services'
|
|
223
|
+
|
|
224
|
+
// 环境枚举
|
|
225
|
+
import { ENV_TYPE, EXTERNAL_ENV_TYPE } from '@bi-nova/services'
|
|
226
|
+
|
|
227
|
+
// 错误码
|
|
228
|
+
import { JdErrorCode } from '@bi-nova/services'
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**方式二:导入所有类型**
|
|
232
|
+
|
|
233
|
+
```ts
|
|
234
|
+
import type * as ServiceTypes from '@bi-nova/services'
|
|
235
|
+
|
|
236
|
+
// 使用时:ServiceTypes.JdInsuranceOptions
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### 类型使用示例
|
|
240
|
+
|
|
241
|
+
**使用 ENV_TYPE 枚举配置**
|
|
242
|
+
|
|
243
|
+
```ts
|
|
244
|
+
import { createNova } from '@bi-nova/core'
|
|
245
|
+
import { createServices, ENV_TYPE } from '@bi-nova/services'
|
|
246
|
+
import type { ServicesOptions } from '@bi-nova/services'
|
|
247
|
+
|
|
248
|
+
const config: ServicesOptions = {
|
|
249
|
+
env: ENV_TYPE.SIT, // IDE 会提示可用的环境选项
|
|
250
|
+
debug: true,
|
|
251
|
+
getAuthToken: async () => {
|
|
252
|
+
return await getToken()
|
|
253
|
+
},
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
const nova = createNova({ appId: 'your-app-id', autoEnv: true })
|
|
257
|
+
nova.use(createServices(config))
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**泛型错误处理函数**
|
|
261
|
+
|
|
262
|
+
```ts
|
|
263
|
+
import type { BuildResultReturn } from '@bi-nova/services'
|
|
264
|
+
|
|
265
|
+
async function handleServiceResult<T>(
|
|
266
|
+
promise: Promise<BuildResultReturn<T>>
|
|
267
|
+
): Promise<T | null> {
|
|
268
|
+
const result = await promise
|
|
269
|
+
|
|
270
|
+
if (result.code === 0 && result.data !== null) {
|
|
271
|
+
return result.data
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
showToast(result.message || '操作失败,请重试')
|
|
275
|
+
return null
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// 使用
|
|
279
|
+
const data = await handleServiceResult(
|
|
280
|
+
nova.jd.handleJdInsurance({ equipmentValue: 'xxx' })
|
|
281
|
+
)
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
**外部对接服务类型**
|
|
285
|
+
|
|
286
|
+
```ts
|
|
287
|
+
import type { JdInsuranceExternalOptions } from '@bi-nova/services'
|
|
288
|
+
|
|
289
|
+
const params: JdInsuranceExternalOptions = {
|
|
290
|
+
thirdPlatform: 'yipule',
|
|
291
|
+
thirdPlatformUserId: '23413494',
|
|
292
|
+
thirdPlatformEquipmentValue: '999999',
|
|
293
|
+
phone: '13800138000',
|
|
294
|
+
extendData: {
|
|
295
|
+
customField1: 'value1',
|
|
296
|
+
customField2: 123,
|
|
297
|
+
},
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
const result = await nova.jd.handleJdInsuranceExt(params)
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**外部对接现金贷服务类型**
|
|
304
|
+
|
|
305
|
+
```ts
|
|
306
|
+
import type { JdjrCashLoanExternalOptions } from '@bi-nova/services'
|
|
307
|
+
|
|
308
|
+
const params: JdjrCashLoanExternalOptions = {
|
|
309
|
+
phone: '13800138000',
|
|
310
|
+
rtaId: 'rta_strategy_001',
|
|
311
|
+
thirdPlatform: 'yipule',
|
|
312
|
+
thirdPlatformUserId: '23413494',
|
|
313
|
+
thirdPlatformEquipmentValue: '999999',
|
|
314
|
+
os: 'ios',
|
|
315
|
+
client: 'miniapp',
|
|
316
|
+
extendData: {
|
|
317
|
+
customField1: 'value1',
|
|
318
|
+
customField2: 123,
|
|
319
|
+
},
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
const result = await nova.jd.handleJdjrCashLoanExt(params)
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## 注意事项
|
|
328
|
+
|
|
329
|
+
### 通用
|
|
330
|
+
|
|
331
|
+
1. **SDK 引入**:确保已正确引入京东 SDK 文件(`LyyGetCommandSDK.min.js`)
|
|
332
|
+
2. **网络请求**:插件会发起网络请求,确保小程序已配置合法域名
|
|
333
|
+
3. **小程序跳转权限**:使用小程序跳转功能时,需要在小程序配置中添加跳转白名单
|
|
334
|
+
4. **剪贴板权限**:复制口令功能需要用户授权剪贴板权限
|
|
335
|
+
5. **异步处理**:所有方法返回 Promise,使用 `async/await` 或 `.then()` 处理
|
|
336
|
+
|