Setup Tng Ewallet logo

Setup Tng Ewallet

Community
afu-it
setup-tng-ewallet

Set up, build, debug, review, and explain Touch 'n Go eWallet (TNG Digital, TNGD) payment integrations using official TNGD Mini Program Open API docs and the TNGD WooCommerce plugin source, covering /v1/payments/pay cashier and agreement payments, my.tradePay, notifyPayment callbacks, inquiryPayment, refund and inquiryRefund, applyToken/prepare/cancelToken auto debit, RSA256 request and response signatures, Alipay+ style web acquiring (order create/query/refund), sandbox vs production credentials, SFTP settlement files, and partner onboarding. Use when working with Touch 'n Go eWallet, TNG eWallet, TNGD mini programs, TNG cashier redirect, MYR e-wallet checkout, auto debit, payment notification handling, refunds, reconciliation, or production readiness.

Overview

Publisherafu-it
Repositorymalaysia-payment-gateway
Skill namesetup-tng-ewallet
Stars
74
Forks
11
Bundled files
5
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 5 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by afu-it on GitHub. Read the source before you install it.

Installation

Install the Setup Tng Ewallet AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/afu-it/malaysia-payment-gateway/tree/main/setup-tng-ewallet
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/afu-it/malaysia-payment-gateway.git /tmp/malaysia-payment-gateway
mkdir -p .claude/skills
cp -r /tmp/malaysia-payment-gateway/setup-tng-ewallet .claude/skills/setup-tng-ewallet
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Setup Tng Ewallet in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Setup Tng Ewallet on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Setup Tng Ewallet is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Touch 'n Go eWallet (TNG Digital)

Use this skill for direct Touch 'n Go eWallet merchant integrations with TNG Digital Sdn Bhd (TNGD).

Source

Read references/tng-ewallet-api.md before giving factual API guidance or writing integration code. It holds the Mini Program Open API: message structure, RSA256 signing and verification, endpoint catalogue, full field tables for pay, inquiryPayment, notifyPayment, refund, inquiryRefund, authorization and user info APIs, data dictionary, result codes, my.tradePay and my.getAuthCode, and the SFTP settlement file.

Read references/tng-ewallet-web-acquiring.md when the merchant wants a website checkout (no mini program). It documents the alipayplus.acquiring.* API as implemented by the TNGD WooCommerce plugin, the only public source for that flow, and lists its gaps.

Read references/account-setup.md for onboarding, credentials, sandbox vs production, env vars, settlement, and pricing links.

Read references/source-map.md to pick the right official page and to see coverage and what is partner-only.

Core Workflow

  1. Identify the surface: TNGD Mini Program (Open API + my.tradePay), website or app checkout (web acquiring API), auto debit (agreement pay), or no-code (Payment Link, QR). No-code needs no API work.
  2. Confirm onboarding is done. TNGD issues Client-Id, Partner ID (Merchant ID), product code, TNGD public key, API host, and SFTP access by email after sandbox UAT. There is no self-serve API key page.
  3. Generate an RSA key pair; give TNGD the public key; keep the private key server-side.
  4. Create a local pending payment with a unique paymentRequestId (mini program) or merchantTransId (web) before calling TNGD.
  5. Call the create API server-side with a signed request. Verify the response signature with the TNGD public key.
  6. Mini program: pass actionForm.redirectionUrl to my.tradePay({ paymentUrl }). Web: redirect the browser to checkoutUrl.
  7. Treat my.tradePay result codes and the browser return URL as UX only.
  8. Handle the payment notification: verify the signature, check IDs and amount, acknowledge with a signed resultStatus: "S" response at once, then process async and idempotently.
  9. If no final notification arrives, query status (inquiryPayment or order.query). Never settle from U or PROCESSING.
  10. Reconcile daily against the T+1 SFTP settlement CSV.

Core Facts

  • Open API URL pattern: https://{host}/acl/api/{restful_path}, for example /v1/payments/pay. TNGD assigns the host; production endpoints are sent by email.
  • Every Open API call is POST with JSON body and headers Client-Id, Request-Time (RFC3339, millisecond precision), Signature.
  • Signature header: Signature: algorithm=RSA256, keyVersion=<n>, signature=<value>. RSA256 (SHA256withRSA) is default; ECC224 is also listed.
  • String to sign: POST <HTTP_URI>\n<Client-Id>.<Request-Time>.<HTTP_BODY>. Responses are verified with <Client-Id>.<Response-Time>.<HTTP_BODY> and the TNGD public key.
  • Signing is mandatory for all requests and responses, including your acknowledgement of notifyPayment.
  • Amounts are {currency, value} with value a string integer in the smallest unit (sen). RM100.00 is "10000".
  • Cashier payment: productCode 51051000101000100001, paymentFactor.isCashierPayment: true. Agreement pay: productCode 51051000101000100031, paymentFactor.isAgreementPay: true, paymentAuthCode = access token.
  • resultStatus: S success, F failed, U unknown, A accepted (follow actionForm).
  • inquiryPayment paymentStatus: SUCCESS, FAIL, PROCESSING, CANCELLED. Poll every 5 s for up to 1 minute.
  • my.tradePay result codes: 9000 success, 8000 processing, 4000 failed, 6001 user cancel, 6002 network error, 6004 unknown.
  • Mini program calls need extendInfo with customerBelongsTo (for example "{\"customerBelongsTo\":\"TNG\"}").
  • Idempotency keys: partnerId + paymentRequestId for pay, partnerId + refundRequestId for refund.
  • Settlement is T+1 to the bank account given at onboarding; CSV MERCHANT_SETTLEMENT_<PartnerID>_<yyyymmdd> is on SFTP at 9 AM T+1.
  • Web acquiring sandbox base (plugin default): https://api-sd.tngdigital.com.my; paths /alipayplus/acquiring/order/create.htm, /order/query.htm, /order/refund.htm, /refund/query.htm.

Critical Rules

  • Keep the merchant private key, client secret, and SFTP password server-side only.
  • Sign the exact bytes you send. Serialize the body once and send that same string.
  • Verify every TNGD response and notification signature with the TNGD public key for the same environment before trusting it.
  • Never mark paid from my.tradePay 9000, paymentReturnUrl, or the web PAY_RETURN redirect alone.
  • A U result is not a failure. Do not fail, refund offline, or re-create the payment; query or wait for the notification.
  • notifyPayment acknowledgement must return S as soon as the message is received; do the business work asynchronously. Non-S triggers retries and duplicates.
  • Settle only when paymentId/acquirementId, your request ID, amount, currency MYR, and partner ID all match the stored pending payment.
  • Partial refunds are allowed; total refunded must not exceed the payment. Use a new refundRequestId per refund and keep it for inquiry.
  • Do not invent the production host, notify URL registration, or notification headers; ask TNGD where docs are silent.
  • The WooCommerce plugin's notification handler does not verify signatures. Do not copy that gap.

Completion Criteria

A TNG eWallet integration is done only when:

  1. Create, query, and refund calls run server-side with correct Client-Id, Request-Time, and RSA256 Signature.
  2. Response signatures are verified with the TNGD public key; failures are rejected and logged.
  3. The notification endpoint verifies the signature, acks with a signed S response, and processes idempotently.
  4. Amount and currency are checked in sen against the stored order before marking paid.
  5. A status inquiry job covers missed notifications and never settles U/PROCESSING.
  6. Refund flow stores refundRequestId, handles U with inquiryRefund, and blocks over-refund.
  7. Tests cover bad signature, duplicate notification, wrong amount, U result, expired order, and success.
  8. Config documents TNG_CLIENT_ID, TNG_PARTNER_ID, TNG_PRIVATE_KEY, TNG_PUBLIC_KEY, API host, notify URL, and sandbox/live separation.

Loophole Review Loop

When asked whether a TNG eWallet strategy is "100% confident", run this loop until no factual gaps remain:

  1. List trust boundaries: mini program or browser, my.tradePay result, return URL, merchant backend, TNGD Open API, notification receiver, key store, database, refund job, SFTP settlement.
  2. Check bypasses: forged notification, unsigned or wrongly signed body, body re-serialized after signing, wrong environment key, sandbox/live mix, wrong amount unit (ringgit vs sen), reused paymentRequestId with different data (REPEAT_REQ_INCONSISTENT), U treated as failure, duplicate notification, notification acked only after processing, expired order paid late, over-refund, refund U refunded offline.
  3. Add fixes: server-side signing, exact-byte signing, response and notification verification, strict ID/amount/currency checks, durable event log, idempotent settlement, inquiry fallback, daily CSV reconciliation.
  4. Re-read the relevant sections of references/tng-ewallet-api.md or references/tng-ewallet-web-acquiring.md.
  5. State remaining uncertainty: production host, notify URL setup for web acquiring, exact notification headers, customerBelongsTo values, key version, rate limits, and anything TNGD only shares in its partner Postman pack.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Setup Tng Ewallet AI skill do?

Set up, build, debug, review, and explain Touch 'n Go eWallet (TNG Digital, TNGD) payment integrations using official TNGD Mini Program Open API docs and the TNGD WooCommerce plugin source, covering /v1/payments/pay cashier and agreement payments, my.tradePay, notifyPayment callbacks, inquiryPayment, refund and inquiryRefund, applyToken/prepare/cancelToken auto debit, RSA256 request and response signatures, Alipay+ style web acquiring (order create/query/refund), sandbox vs production credentials, SFTP settlement files, and partner onboarding. Use when working with Touch 'n Go eWallet, TNG...

Why use Setup Tng Ewallet on TypingMind?

Because you install it once and use it with any model. Setup Tng Ewallet is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Setup Tng Ewallet in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/afu-it/malaysia-payment-gateway/tree/main/setup-tng-ewallet. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Setup Tng Ewallet?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Setup Tng Ewallet?

As many as you like. As long as a model supports skills, you can use Setup Tng Ewallet with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Setup Tng Ewallet AI skill free?

It is published on GitHub by afu-it. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇