# 马来西亚银行编码说明（平台标准）

本文适用于马来西亚 `countryCode=MY`、`currency=MYR` 的统一代收与统一代付接口。商户始终提交 AllOnePay 平台标准银行码，不得提交 SafePay、DZXUM、CloudPay 等渠道的原始银行编码。

完整可检索目录见 [马来西亚银行编码说明（平台标准）](./malaysia-bank-codes.html)。平台会根据实际路由渠道把标准码转换成对应上游字段；SafePay 没有明确映射时失败关闭、不按原值透传，其他渠道按目录中的渠道说明处理。

## 统一代收

接口：`POST /api/PayRequest/UnifiedPay`

- SafePay MYR 网银：`payTypeCode=bank_mustcode`，`instrument.bankCode` 必填，值必须来自平台标准目录。
- SafePay MYR 扫码：`payTypeCode=qr`，不传 `instrument.bankCode`。
- 银行码只用于银行产品。商户不得把 `MAYB`、`CIMB`、`PBBB` 等 SafePay 原始值当作平台码提交。

`payMethodCode` 非必传，不决定转账指引或上游下单等业务分支。已有 SafePay MYR 网银路由时，商户在应用、订单、金额、币种和签名等公共字段之外，传 `payTypeCode=bank_mustcode` 与 `instrument.bankCode` 即可。无需改传 `bank_redirect`，也无需修改已开通路由的支付方式编码；显式传入 `payMethodCode` 时仅收窄路由范围。

以下是需合并到完整请求后重新签名的业务参数：

```json
{
  "channelCode": "safepay",
  "currency": "MYR",
  "payTypeCode": "bank_mustcode",
  "instrument": { "bankCode": "MY_MALAYAN_BANKING_BHD" }
}
```

平台按命中路由解析上游 `pay_code=2001`，并将示例银行码映射为 `bank_code=MAYB`。`country` 可传 `MY`；省略时同一 MYR 产品仍执行银行码映射。修改参数后应更新签名，嵌套银行字段按 `instrument.bankcode` 参与既有签名规则。

### SafePay 代收网银（7 家）

| 平台标准 `instrument.bankCode` | 银行 | SafePay 转换结果 |
| --- | --- | --- |
| `MY_MALAYAN_BANKING_BHD` | Maybank | `MAYB` |
| `MY_CIMB_BERHAD` | CIMB Bank | `CIMB` |
| `MY_PUBLIC_BERHAD` | Public Bank Berhad | `PBBB` |
| `MY_RHB_BERHAD` | RHB Bank | `RHBB` |
| `MY_HONG_LEONG_BHD` | Hong Leong Bank | `HOLB` |
| `MY_AFFIN_ISLAMIC_BERHAD` | AFFIN ISLAMIC BANK | `AFIN` |
| `MY_SIMPANAN_NASIONAL_BERHAD` | Bank Simpanan Nasional | `SINA` |

2026-09-14 更正：`AFIN` 对应 Affin Islamic。此前使用 `MY_AFFIN_BERHAD` 选择该网银的商户，应改传 `MY_AFFIN_ISLAMIC_BERHAD` 并重新签名；普通 Affin 标准码在 SafePay 网银代收中不再接受。普通 Affin 的代付映射 `MYR008` 保持不变。

## 统一代付

接口：`POST /api/PayoutRequest/UnifiedPayout`

银行代付使用 `countryCode=MY`、`currency=MYR`、`payeeType=BANK`、`payTypeCode=bank`。`payeeBankCode` 必填并提交平台标准码；`payeeAccount` 提交收款银行账号，`payeeName` 提交开户名。渠道原始 `bank_code` 由平台转换，不对商户开放。

### SafePay 代付（21 家）

| 平台标准 `payeeBankCode` | 银行 | SafePay 转换结果 |
| --- | --- | --- |
| `MY_MALAYAN_BANKING_BHD` | Maybank | `MYR001` |
| `MY_CIMB_BERHAD` | CIMB Bank | `MYR002` |
| `MY_PUBLIC_BERHAD` | Public Bank Berhad | `MYR003` |
| `MY_RHB_BERHAD` | RHB Bank | `MYR004` |
| `MY_HONG_LEONG_BHD` | Hong Leong Bank | `MYR005` |
| `MY_AMBANK_MALAYSIA_BERHAD` | AmBank | `MYR006` |
| `MY_ALLIANCE_MALAYSIA_BERHAD` | Alliance Bank Malaysia Berhad | `MYR007` |
| `MY_AFFIN_BERHAD` | Affin Bank | `MYR008` |
| `MY_HSBC_MALAYSIA_BERHAD` | HSBC Bank Malaysia Berhad | `MYR009` |
| `MY_ISLAM_MALAYSIA_BERH` | Bank Islam Malaysia | `MYR010` |
| `MY_OCBC_MALAYSIA_BERHAD` | OCBC Bank Malaysia | `MYR011` |
| `MY_UNITED_OVERSEAS_MALAYS_BBCA4E` | United Overseas Bank Malaysia | `MYR012` |
| `MY_AGROBANK` | Agrobank | `MYR013` |
| `MY_KERJASAMA_RAKYAT_MALAY_61C408` | Bank Rakyat | `MYR014` |
| `MY_SIMPANAN_NASIONAL_BERHAD` | Bank Simpanan Nasional | `MYR017` |
| `MY_CITIBANK_BERHAD` | Citibank Berhad | `MYR018` |
| `MY_MUAMALAT_MALAYSIA_BERHAD` | Bank Muamalat Malaysia | `MYR019` |
| `MY_STANDARD_CHARTERED_MAL_71D483` | Standard Chartered Bank Malaysia | `MYR020` |
| `MY_TOUCH_N_GO_EWALLET` | Touch 'n Go eWallet | `MYR021` |
| `MY_GX_BERHAD_GXBANK` | GXBank | `MYR022` |
| `MY_MERCHANTRADE` | Merchantrade Money | `MYR023` |

## 校验与上线边界

- 平台标准码区分国家；不要把其他国家或其他渠道的原始码用于 MYR。
- SafePay 代收只接受上表 7 个平台码，代付只接受上表 21 个平台码；未知、空值或未映射值会在提交上游前拒绝。
- 本目录与映射完成不等于商户已经上线。实际交易还需要配置并启用 SafePay 商户凭证、支付/代付路由、费率、限额、回调地址和渠道白名单。
- 渠道银行目录变化时，以平台发布的新版本为准；商户系统只维护平台标准码，不跟随渠道原始编码变更。

资料来源：SafePay 官方马来西亚代收银行列表与马来西亚代付银行列表，平台于 2026-09-05 完成复核和标准化映射。

### PandaPay 代付（13 家）

使用 payeeType=BANK，payeeBankCode 提交本页平台标准码，平台映射为 acc_code。必填姓名、账号、邮箱、电话，不要求智利证件字段。完整映射见[马来西亚银行目录](./malaysia-bank-codes.html)的 PandaPay 列。依据官方马来西亚银行页，2026-09-08 按银行机构名称匹配。

## 支付方式接口银行列表

`POST /api/PayRequest/MerchantHostedPaymentMethods` 每个 methods 项增加 needBankCode 和 bankCodes。bankCodes 为 `{code,name}` 数组，显示 name、提交 code 到 instrument.bankCode。必填而没有可用银行的产品不可用。新网银 paymentId 为 bank_mustcode；上线迁移后必须刷新旧缓存，旧 bank 不作全局别名。普通 bank 产品和代付 bank 保持独立。

发布顺序：部署支持新类型的后端与收银台，执行银行纠错和 bank_mustcode 增量 SQL，清理相关主数据及路由缓存或重启服务，刷新商户支付方式。示例代表新版契约，生产生效以实际发布为准。
