宽度
一个非官方的 Javascript SDK 为bunq API。 它旨在允许单页应用程序在不通过其他服务代理的情况下进行与bunq的所有交互.
API 会话细节被加密并使用 伪造。 。 。 .
这个项目最初是为浏览器而建造的,但此后一直被测试并被与NodeJS服务器一起使用. 如果您真的想要使用节点JS, 您仍可以轻松创建自定义存储处理器( 默认为本地存储器) , 如 安装 节.
安装
安装库
yarn add @bunq-community/bunq-js-client
接下来创建一个带有可选存储界面的新实例作为第一个参数. 此默认为 存储.js 但任何类
采用下列方法: get(key), (中文(简体) ), set(key, data), (中文(简体) ), remove(key)。 。 。 .
使用量
使用 LocalStorage 创建新客户端 .
const bunqJSClient = new BunqJSClient();
默认安装尝试使用仅与浏览器相容的 LocalStorage 。 你可以检查 src/Stores/* 用于其他兼容存储处理器的文件夹。 此示例使用 JSON 商店将数据写入本地的 JSON 文件 .
import JSONFileStore from "@bunq-community/bunq-js-client/dist/Stores/JSONFileStore";
// run the file store with a location to store the data
const storageInstance = JSONFileStore("./bunq-js-client-data.json");
// create a new bunqJSClient with the new storage instance
const bunqJSClientCustom = new bunqJSClient(storageInstance);
// disables the automatic requests to keep the current session alive
// instead it'll create a new session when it is required
bunqJSClient.setKeepAlive(false);
下次运行要启动的设置功能
/**
* A 16-byte encryption key, check the examples (create_encryption_key.js)
* on how to create one
* @see https://github.com/digitalbazaar/forge#pkcs5
*/
const ENCRYPTION_KEY = "3c7a4d431a846ed33a3bb1b1fa9b5c26";
const API_KEY = "abcd-1234-abcd-1234"; // Your bunq API key
/**
* The device name which will show in the installation notification that bunq sends
* this also lets users manage their keys more easily
*/
const DEVICE_NAME = "My Device";
const ENVIRONMENT = "SANDBOX"; // OR you can use PRODUCTION
/**
* Permitted IPs, allowed values are:
* - Empty if you're not sure (bunq will use the current IP)
* - An array of allowed IP addresses
* - The "*" character to enable wildcard mode
*/
const PERMITTED_IPS = [];
const setup = async () => {
// run the bunq application with our API key
await bunqJSClient.run(API_KEY, PERMITTED_IPS, ENVIRONMENT, ENCRYPTION_KEY);
// install a new keypair
await bunqJSClient.install();
// register this device
await bunqJSClient.registerDevice(DEVICE_NAME);
// register a new session
await bunqJSClient.registerSession();
}
现在您可以使用 bunq 客户端中的 API 来完成请求并获得当前用户.
// force that the user info is retrieved from the API instead of the data currently in the object
const forceUpdate = true;
// all users connected to the api key
const users = await bunqJSClient.getUsers(forceUpdate);
// get only the userCompany account if one is set
const userCompany = await bunqJSClient.getUser("UserCompany", forceUpdate);
// get all payments for a user and monetary account
const payments = await bunqJSClient.api.payment.list(userId, accountId);
OAuth 认证
您可以使用帮助器函数格式化正确的url来启动登录流程 :
const url = bunqJSClient.formatOAuthAuthorizationRequestUrl(
clientId,
redirectUri,
optionalState: string | false = false,
sandbox: boolean = false
);
当用户授予访问权限时,下一次使用返回的代码参数为:
const authorizationCode = await bunqJSClient.exchangeOAuthToken(
clientId,
clientSecret,
redirectUri,
code,
state: string | false = false,
sandbox: boolean = false
grantType: string = "authorization_code",
)
这将返回如果成功 access_token 它是一个有效的 API 密钥。 使用此密钥可以访问有限的 UserApiKey 用户对象。 关于 OAuth 连接的局限性的更详细信息请检查官方主题 这里。 。 。 .
实例
有一些例子可见于 examples/ 文件夹. create_sandbox_apikey 将创建并输出一个新的沙盒密钥,与其他示例一起使用.
实例 多腾v 所以请务必复制 .env.example 文件为 .env 并输入正确的值.
不同实例的基本概述可以是: 在这里找到的。 。 。 .
支持的 APIs
详细情况请查看在 src/Api/*。添加终点相对容易,但在需要或提出要求时往往会得到。 最常见的端点现在已经全部被执行,但可以随意请求(或最好创建一个拉取请求)任何缺失端点.
联系人
我们有一个公众 电报聊天组 。您可以随意为 Github 上的任何建议、错误或一般想法创建一个新问题,也可以通过上述其中之一与我们联系.
贡献者 
许可证
除非另有说明,否则bunqJSClient源文件将按在下列文件中发现的麻省理工学院许可证分发: 自由主义 文档.