Payment Docs
Платежи по странамАзия

Малайзия

Интернет-банкинг, электронные кошельки и DuitNow QR в MYR

Перед тем как начать

Этот способ оплаты доступен не всем мерчантам. Уточните доступность у вашего менеджера.

Обзор

ВалютаСпособ оплаты
MYRИнтернет-банкинг, электронные кошельки, DuitNow QR

Плательщик перенаправляется на paymentLink и завершает оплату в интернет-банке своего банка, в приложении электронного кошелька или сканированием QR-кода DuitNow — в зависимости от выбранного способа оплаты.

amount указывается в малайзийских ринггитах, допускается до двух знаков после запятой, например 150.00.

Способы оплаты

Способ оплаты определяется двумя параметрами: банком (код из таблицы ниже) и парой channelCode::wayCode (канал и способ оплаты). Для каждого банка пара однозначно следует из таблицы, поэтому обычно достаточно указать только банк.

Код банкаБанк / кошелёкchannelCode::wayCode
0001Affin BankNET_BANKING::BANK_TRANSFER
0002AGRO BankNET_BANKING::BANK_TRANSFER
0003Alliance Bank (Personal)NET_BANKING::BANK_TRANSFER
0004AmBankNET_BANKING::BANK_TRANSFER
0005Bank IslamNET_BANKING::BANK_TRANSFER
0006Bank RakyatNET_BANKING::BANK_TRANSFER
0007Bank MuamalatNET_BANKING::BANK_TRANSFER
0008Bank Simpanan NasionalNET_BANKING::BANK_TRANSFER
0009CIMB ClicksNET_BANKING::BANK_TRANSFER
0010Hong Leong BankNET_BANKING::BANK_TRANSFER
0011HSBC BankNET_BANKING::BANK_TRANSFER
0012Kuwait Finance HouseNET_BANKING::BANK_TRANSFER
0013Maybank2UNET_BANKING::BANK_TRANSFER
0014OCBC BankNET_BANKING::BANK_TRANSFER
0015Public BankNET_BANKING::BANK_TRANSFER
0016RHB BankNET_BANKING::BANK_TRANSFER
0017Standard Chartered BankNET_BANKING::BANK_TRANSFER
0018UOB BankNET_BANKING::BANK_TRANSFER
0019Bank of ChinaNET_BANKING::BANK_TRANSFER
0020ShopeePayEWALLET::SHOPPEE_PAY
0021BoostEWALLET::BOOST
0022Touch 'n Go eWalletEWALLET::TNG
0023GrabPayEWALLET::GRAB_PAY
0024DuitNow QRDNQR::DNQR

Чем отличается от обычного заказа

Заказ создаётся через стандартный эндпоинт POST /v1/orders. Базовые поля (amount, currency, successUrl, failUrl, callbackUrl и т. д.) такие же, как у обычного заказа; дополнительно к ним передаётся объект customer с данными плательщика.

ПолеТипОписание
customerobjectДанные плательщика. Набор обязательных полей приведён ниже

Для этого способа оплаты поле externalUserId обязательно.

Поля объекта customer

ПолеТипОбязательноеОписание
phonestring✅ ДаМалайзийский номер мобильного телефона: 10–11 цифр, начинается с 01 (например, 0123456789). Код страны +60 допускается и удаляется автоматически
emailstring✅ ДаEmail плательщика
firstNamestring✅ ДаИмя, должно совпадать с владельцем банковского счёта или кошелька
lastNamestring✅ ДаФамилия, должна совпадать с владельцем банковского счёта или кошелька

Передавайте реальные данные плательщика. Имя и номер телефона сверяются с фактическим плательщиком на стороне провайдера; при несовпадении платежи отклоняются.

Варианты интеграции

Банк и channelCode::wayCode задаются в настройках терминала либо передаются в запросе. Какие значения закреплены за вашим терминалом и какие нужно передавать самостоятельно, уточните у менеджера.

Если на терминале разрешено несколько значений, они работают как список допустимых: значение из запроса должно входить в этот список, а без него заказ отклоняется. Если на терминале закреплено одно значение, оно подставляется автоматически, а другое значение в запросе приводит к ошибке.

Банк и способ оплаты закреплены за терминалом, в запросе они не передаются.

Пример запроса

{
  "purpose": "Payment for order #1234",
  "amount": "150.00",
  "currency": "MYR",
  "externalId": "23456789",
  "externalUserId": "437568",
  "successUrl": "https://example.com/success",
  "failUrl": "https://example.com/fail",
  "callbackUrl": "https://example.com/webhooks/payments",
  "customer": {
    "lastName": "Rahman",
    "firstName": "Amir",
    "email": "amir.rahman@example.com",
    "phone": "0123456789"
  }
}

Банк закреплён за терминалом, а канал и способ оплаты передаются в поле extraParams. Используйте вариант, когда на одном терминале доступно несколько способов оплаты, например разные электронные кошельки.

ПолеТипОбязательноеОписание
extraParamsstring✅ ДаКанал и способ оплаты в формате channelCode::wayCode, например EWALLET::TNG

Пример запроса

{
  "purpose": "Payment for order #1234",
  "amount": "150.00",
  "currency": "MYR",
  "externalId": "23456789",
  "externalUserId": "437568",
  "successUrl": "https://example.com/success",
  "failUrl": "https://example.com/fail",
  "callbackUrl": "https://example.com/webhooks/payments",
  "extraParams": "EWALLET::TNG",
  "customer": {
    "lastName": "Rahman",
    "firstName": "Amir",
    "email": "amir.rahman@example.com",
    "phone": "0123456789"
  }
}

Банк передаётся в поле additional.bank, канал и способ оплаты определяются по нему автоматически согласно таблице.

ПолеТипОбязательноеОписание
additional.bankstring✅ ДаКод банка из таблицы способов оплаты, например 0022

Пример запроса

{
  "purpose": "Payment for order #1234",
  "amount": "150.00",
  "currency": "MYR",
  "externalId": "23456789",
  "externalUserId": "437568",
  "successUrl": "https://example.com/success",
  "failUrl": "https://example.com/fail",
  "callbackUrl": "https://example.com/webhooks/payments",
  "additional": {
    "bank": "0022"
  },
  "customer": {
    "lastName": "Rahman",
    "firstName": "Amir",
    "email": "amir.rahman@example.com",
    "phone": "0123456789"
  }
}

Банк передаётся в поле additional.bank, а канал и способ оплаты — в поле extraParams. Значение extraParams имеет приоритет над таблицей.

ПолеТипОбязательноеОписание
extraParamsstring✅ ДаКанал и способ оплаты в формате channelCode::wayCode, например EWALLET::TNG
additional.bankstring✅ ДаКод банка из таблицы способов оплаты, например 0022

Пример запроса

{
  "purpose": "Payment for order #1234",
  "amount": "150.00",
  "currency": "MYR",
  "externalId": "23456789",
  "externalUserId": "437568",
  "successUrl": "https://example.com/success",
  "failUrl": "https://example.com/fail",
  "callbackUrl": "https://example.com/webhooks/payments",
  "extraParams": "EWALLET::TNG",
  "additional": {
    "bank": "0022"
  },
  "customer": {
    "lastName": "Rahman",
    "firstName": "Amir",
    "email": "amir.rahman@example.com",
    "phone": "0123456789"
  }
}

Ответ

В ответе возвращается стандартный объект заказа. Заказ создаётся со статусом CREATED; перенаправьте плательщика на paymentLink, чтобы он завершил оплату.

Поля объекта заказа

Если плательщик оплатил меньше суммы заказа, заказ всё равно переходит в статус COMPLETED, а поле amount в объекте заказа обновляется до фактически полученной суммы. Сверяйте её с ожидаемой перед выполнением заказа.

Следующие шаги

На этой странице