> For the complete documentation index, see [llms.txt](https://docs.jgopay.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.jgopay.com/jian-ti-zhong-wen/payment-methods.md).

# 支付方式

马来西亚 MYR 支付支持多种方式：**DuitNow QR**（扫码支付）、**FPX 网银转账**（网上银行跳转）和 **TNG 电子钱包**（Touch 'n Go）。

## 基本要求

| 要求                | 说明                                                                  |
| ----------------- | ------------------------------------------------------------------- |
| **金额**            | 最多 2 位小数                                                            |
| **最小金额**          | 5.00 MYR                                                            |
| **最大金额**          | 50,000.00 MYR                                                       |
| **reference\_id** | 仅限字母和数字                                                             |
| **支付方式**          | `QR_PAYMENT`（DuitNow QR）、`BANK_TRANSFER`（FPX）或 `MOBILE_WALLET`（TNG） |

## 支付选项

### 选项 1：DuitNow QR

客户使用任意马来西亚银行 App 扫描 DuitNow 二维码。二维码直接显示在支付页面上。

| 属性   | 值                                  |
| ---- | ---------------------------------- |
| 使用地址 | `payment_url` — 支付页面显示 DuitNow 二维码 |
| 流程   | 客户使用银行 App 扫码支付，完成后发送回调            |

### 选项 2：FPX 网银转账

通过马来西亚 FPX 网络的网上银行支付。客户选择银行后跳转到银行页面授权支付。

| 属性   | 值                               |
| ---- | ------------------------------- |
| 使用地址 | `gateway.redirect_url` — 银行授权页面 |
| 流程   | 客户在银行页面授权支付，完成后发送回调             |

> **要求：** 使用 `BANK_TRANSFER` 时，需在 `metadata` 中传入 `provider_channel_id` 指定客户的银行。见下方 [FPX 银行代码](#fpx-银行代码)。该字段是否必填取决于上游处理通道 — 为保证您的对接不受路由变化影响，**请始终传入该字段**。

### 选项 3：TNG 电子钱包（Touch 'n Go）

使用 Touch 'n Go 电子钱包支付。客户会被跳转到 TNG 页面授权支付。

| 属性   | 值                                 |
| ---- | --------------------------------- |
| 使用地址 | `gateway.redirect_url` — TNG 授权页面 |
| 流程   | 客户在 TNG 中授权支付，完成后发送回调             |

***

## 请求示例

### DuitNow QR

```json
{
  "amount": 100.00,
  "currency": "MYR",
  "reference_id": "ORDER20260325001",
  "customer_name": "Ahmad bin Ali",
  "customer_phone": "60123456789",
  "payment_method": "QR_PAYMENT"
}
```

### FPX 网银转账

```json
{
  "amount": 100.00,
  "currency": "MYR",
  "reference_id": "ORDER20260325002",
  "customer_name": "Ahmad bin Ali",
  "customer_phone": "60123456789",
  "payment_method": "BANK_TRANSFER",
  "metadata": {
    "provider_channel_id": "MB2U0227"
  }
}
```

> 当请求被路由到由网关侧完成选行的通道（如 DuitNow B2C）时，**`provider_channel_id` 为必填**。该路径下缺失会返回 `MISSING_PROVIDER_CHANNEL`；值不在允许列表中会返回 `INVALID_PROVIDER_CHANNEL`。其他上游通道不传也能受理 BANK\_TRANSFER（客户在网关页面自行选行）。请将其视为必填字段，并始终从下方 [FPX 银行代码](#fpx-银行代码)或 [DuitNow（RPP）银行代码](#duitnow-rpp-银行代码)表中取有效代码 — 这样无论路由选择哪条通道，您的对接都能正常工作。

### TNG 电子钱包

```json
{
  "amount": 100.00,
  "currency": "MYR",
  "reference_id": "ORDER20260325003",
  "customer_name": "Ahmad bin Ali",
  "customer_phone": "60123456789",
  "payment_method": "MOBILE_WALLET"
}
```

### 字段说明

| 字段                             | 示例值                  | 说明                                                    |
| ------------------------------ | -------------------- | ----------------------------------------------------- |
| `amount`                       | `100.00`             | 最多 2 位小数                                              |
| `currency`                     | `"MYR"`              | 马来西亚林吉特                                               |
| `reference_id`                 | `"ORDER20260325001"` | 仅限字母和数字                                               |
| `customer_phone`               | `"60123456789"`      | 含 `60` 国家区号，不带 `+`                                    |
| `payment_method`               | `"QR_PAYMENT"`       | 必填 — `QR_PAYMENT`、`BANK_TRANSFER`、`MOBILE_WALLET` 三选一 |
| `metadata.provider_channel_id` | `"MB2U0227"`         | **仅 `BANK_TRANSFER` 必填。** 见下方银行代码                     |

***

## FPX 银行代码

调用 `BANK_TRANSFER` 时在 `metadata.provider_channel_id` 中使用以下代码。这些代码走 **FPX**（Financial Process Exchange）网络。

| 代码         | 银行名称                        |
| ---------- | --------------------------- |
| `ABB0233`  | Affin Bank（艾芬银行）            |
| `ABMB0212` | Alliance Bank（联昌联盟银行）       |
| `AGRO01`   | Agro Bank（农业银行）             |
| `AMBB0209` | Ambank（大马银行）                |
| `BCBB0235` | CIMB Bank（联昌国际银行）           |
| `BIMB0340` | Bank Islam（伊斯兰银行）           |
| `BKRM0602` | Bank Rakyat（人民银行）           |
| `BMMB0341` | Bank Muamalat（穆阿马拉特银行）      |
| `BSN0601`  | BSN（国民储蓄银行）                 |
| `HLB0224`  | Hong Leong Bank（丰隆银行）       |
| `HSBC0223` | HSBC Bank（汇丰银行）             |
| `KFH0346`  | Kuwait Finance House（科威特金融） |
| `MB2U0227` | Maybank（马来亚银行）              |
| `OCBC0229` | OCBC Bank（华侨银行）             |
| `PBB0233`  | Public Bank（大众银行）           |
| `RHB0218`  | RHB Bank（兴业银行）              |
| `SCB0216`  | Standard Chartered（渣打银行）    |
| `UOB0226`  | UOB（大华银行）                   |

## DuitNow (RPP) 银行代码

以下代码同样可用于 `BANK_TRANSFER` 的 `metadata.provider_channel_id`，走 **DuitNow 网上银行**（RPP）网络。

| 代码         | 银行名称                   |
| ---------- | ---------------------- |
| `AFBQMYKL` | MBSB Bank              |
| `AGOBMYKL` | Agro Bank（农业银行）        |
| `ARBKMYKL` | Ambank（大马银行）           |
| `BIMBMYKL` | Bank Islam（伊斯兰银行）      |
| `BKCHMYKL` | Bank of China（中国银行）    |
| `BKRMMYKL` | Bank Rakyat（人民银行）      |
| `BMMBMYKL` | Bank Muamalat（穆阿马拉特银行） |
| `BOBEMYK2` | Boost Bank             |
| `BSNAMYK1` | BSN（国民储蓄银行）            |
| `CIBBMYKL` | CIMB Bank（联昌国际银行）      |
| `FNXSMYNB` | Finexus                |
| `HBMBMYKL` | HSBC Bank（汇丰银行）        |
| `MBLOMYNB` | MobilityOne            |
| `MFBBMYKL` | Alliance Bank（联昌联盟银行）  |
| `OCBCMYKL` | OCBC Bank（华侨银行）        |
| `PBBEMYKL` | Public Bank（大众银行）      |
| `PHBMMYKL` | Affin Bank（艾芬银行）       |
| `RJHIMYKL` | Al-Rajhi Bank（拉吉希银行）   |
| `UOVBMYKL` | UOB（大华银行）              |

> **提示：** 同一家银行可能同时有 FPX 代码和 RPP 代码（例如 Maybank 的 FPX 代码为 `MB2U0227`）。两种代码都可以使用 — 选择客户银行支持的即可。

***

## 提现（代付）

MYR 支持通过[创建提现](/jian-ti-zhong-wen/create-withdrawal.md)接口向马来西亚银行付款。

### 提现请求示例

```json
{
  "amount": 500.00,
  "currency": "MYR",
  "reference_id": "WD20260325001",
  "bank_code": "MY_MBB",
  "account_number": "1234567890",
  "account_name": "Ahmad bin Ali",
  "method": "BANK"
}
```

### 字段说明

| 字段               | 示例值               | 说明                                             |
| ---------------- | ----------------- | ---------------------------------------------- |
| `amount`         | `500.00`          | 最多 2 位小数。最低 50.00 MYR，最高 50,000.00 MYR         |
| `bank_code`      | `"MY_MBB"`        | 支持的代码见[银行代码](/jian-ti-zhong-wen/bank-codes.md) |
| `account_number` | `"1234567890"`    | 收款人银行账号                                        |
| `account_name`   | `"Ahmad bin Ali"` | 必须与银行账户持有人姓名一致                                 |
| `method`         | `"BANK"`          | MYR 提现固定为 `BANK`                               |

> 支持的 31 家马来西亚银行和电子钱包完整列表见[银行代码](/jian-ti-zhong-wen/bank-codes.md)。

***

## 常见错误

| 错误                         | 原因                                                | 解决方法                                                             |
| -------------------------- | ------------------------------------------------- | ---------------------------------------------------------------- |
| `MISSING_PROVIDER_CHANNEL` | `BANK_TRANSFER` 未传 `metadata.provider_channel_id` | 在 `metadata` 中加入 `provider_channel_id` — 见 [FPX 银行代码](#fpx-银行代码) |
| `INVALID_PROVIDER_CHANNEL` | `provider_channel_id` 不在允许列表中                     | 使用上方表格中的代码                                                       |
| `INVALID_AMOUNT`           | 金额超出允许范围（充值 5-50,000 MYR，提现 50-50,000 MYR）        | 检查上方限额                                                           |
| `INVALID_BANK_CODE`        | MYR 提现不支持该银行代码                                    | 见[银行代码](/jian-ti-zhong-wen/bank-codes.md)                        |
| `NO_GATEWAY_AVAILABLE`     | 无可用的 MYR 网关                                       | 联系客服                                                             |
| `GATEWAY_ERROR`            | 网关暂时不可用（如银行限额已满）                                  | 稍后重试或联系客服                                                        |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.jgopay.com/jian-ti-zhong-wen/payment-methods.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
