# 在n8n中使用Bayarcash

> 在n8n安装Bayarcash community node，用Personal Access Token连接，然后在工作流程中创建付款或读取交易。
>
> Source: https://docs.bayarcash.com/zh/n8n/

[n8n](https://n8n.io)的Bayarcash node让工作流程不用写代码，就能创建和查看payment intent，并读取你的portal和交易。它是一个community node，以`n8n-nodes-bayarcash`发布在npm上，使用Bayarcash API v3。

## 安装node

community node可以安装在自托管（self-hosted）的n8n上。安装步骤如下：

1. 在n8n中，打开**Settings** → **Community Nodes**。
2. 安装npm包[`n8n-nodes-bayarcash`](https://www.npmjs.com/package/n8n-nodes-bayarcash)。
3. 在工作流程中添加node时，搜索**Bayarcash**。

n8n的[community node安装指南](https://docs.n8n.io/integrations/community-nodes/installation/)有完整步骤和其他安装方式。

## 连接你的Bayarcash账号

这个node使用名为**Bayarcash API**的凭证登录。创建凭证的步骤如下：

1. 添加一个**Bayarcash** node，然后在凭证下选择创建新凭证。
2. 填写以下栏位：

   | 栏位 | 要填写什么 |
   |---|---|
   | **Personal Access Token (PAT)** | 你在商家后台（merchant dashboard）的Personal Access Token。 |
   | **Environment** | 测试时选**Sandbox - api.console.bayarcash-sandbox.com/v3**，真实付款选**Production - api.console.bayar.cash/v3**。在你更改之前，它默认是**Production**。 |

3. 保存。n8n会列出你的portal来测试这个凭证。

sandbox token配合**Sandbox**使用，正式环境的token配合**Production**使用。它们不能跨环境使用。

## node能做什么

先选择**Resource**，再选择**Operation**：

| Resource | Operation | 作用 |
|---|---|---|
| Payment Intent | **Create** | 创建一笔付款，并返回让顾客前往付款的`url`。 |
| Payment Intent | **Get Status** | 按**Payment Intent ID**获取payment intent。 |
| Payment Intent | **Delete** | 按**Payment Intent ID**取消payment intent。 |
| Portal | **List All Portals** | 列出你的portal。 |
| Portal | **Get Portal Channels** | 按**Portal ID**获取一个portal及其付款渠道。 |
| Transaction | **Get Transaction by ID** | 按**Transaction ID**获取一笔交易。 |
| Transaction | **List Transactions** | 列出交易。可添加**Filters**，按**Order Number**、**Status**、**Payment Channel**、**Exchange Reference Number**或**Payer Email**筛选。 |

## 创建payment intent

在工作流程中创建付款的步骤如下：

1. 添加一个**Bayarcash** node，选择**Payment Intent** → **Create**。
2. 在**Portal Name or ID**选择portal。列表来自你的账号。
3. 填写**Order Number**、**Amount**、**Payer Name**和**Payer Email**。这些是必填栏位。
4. 如有需要，选择一个或多个**Payment Channel**。留空的话，顾客会在Bayarcash页面自己选择。
5. 如有需要，填写**Payer Telephone Number**、**Callback URL**和**Return URL**。
6. 运行node。把输出中的`url`发给顾客，例如通过电邮或WhatsApp。

## 在n8n接收付款结果

Bayarcash node不会自己启动工作流程。要在付款完成时执行操作：

1. 用n8n的**Webhook** node开始第二个工作流程，并设置为接收POST。
2. 创建payment intent时，把这个webhook的URL填入**Callback URL**。
3. 在callback工作流程中，先用你的API Secret Key验证`checksum`，再信任这些资料。请参阅[验证callback和checksum](/zh/callbacks-and-checksum/)。
4. 用**Get Transaction by ID**和callback中的`transaction_id`，读取完整的最新记录。

让webhook以HTTP 200回应，否则Bayarcash会再次发送callback。

## 小贴士

- **先在sandbox搭建工作流程。** 等一笔测试付款从头到尾顺利完成后，才把凭证的**Environment**改成**Production**，并换上正式环境的token。
- **每笔付款使用唯一的订单号码。** 你靠它把callback或交易对应回启动工作流程的那一行、那笔deal或那张发票。

## 常见问题

### node出现错误“Authentication failed: Invalid or expired PAT token. Please check your credentials.”，我应该检查什么？

确认你粘贴了完整的Personal Access Token，并且Environment与token的来源环境一致。sandbox token只能配合Sandbox使用，正式环境（production）的token只能配合Production使用。

### 创建payment intent时出现“Forbidden”，并提到付款渠道。为什么？

你在Payment Channel选择的渠道还没有在你的账号开通。新账号只有FPX。请选择其他渠道、让这个栏位留空，或请Bayarcash为你开通该渠道。

### 为什么Get Portal Channels显示resource不存在？

Portal ID需要填写portal的ID，而不是portal key。先运行List All Portals，再从它的输出复制ID。
