Skip to content

QR PromptPay - Read, Write & Validate (EMVCo)

License

Notifications You must be signed in to change notification settings

veeravat/PromptPay

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Prompt Pay (EMVCo)

āļ•āļīāļ”āļ•āļąāđ‰āļ‡

āļ­āļĒāļēāļāđ€āļ­āļēāđ„āļ›āđƒāļŠāđ‰āļāđ‡āļ•āļīāļ”āļ•āļąāđ‰āļ‡āļœāđˆāļēāļ™ nuget āđ„āļ”āđ‰āđ€āļĨāļĒ āļŦāļĢāļ·āļ­āļˆāļ°āđƒāļŠāđ‰ .NET CLI āļāđ‡āđ„āļ”āđ‰āđ€āļŠāđˆāļ™āļāļąāļ™āļ‚āļ­āļĢāļąāļš

dotnet add package Saladpuk.PromptPay

āđƒāļ„āļĢāļ­āļĒāļēāļāđ€āļ­āļēāđ„āļ›āļ›āļđāđ‰āļĒāļĩāđ‰āļ›āļđāđ‰āļĒāļģāļ­āļ°āđ„āļĢāļāđ‡āļ•āļēāļĄāļŠāļšāļēāļĒ āļ–āđ‰āļēāļ—āļģāđāļĨāđ‰āļ§āļ”āļĩāļŦāļĢāļ·āļ­āđ€āļˆāļ­āļˆāļļāļ”āļœāļīāļ”āļāđ‡āļāļēāļ pull-request āđ€āļ‚āđ‰āļēāļĄāļēāļ”āđ‰āļ§āļĒāļˆāļ°āđ€āļ›āđ‡āļ™āļ›āļĢāļ°āļ„āļļāļ“āļĄāļēāļ āđ‚āļ„āđ‰āļ”āļ•āļąāļ§āļ™āļĩāđ‰āđƒāļŠāđ‰ .NET Standard 2.0 āļ™āļ°āļˆāđŠāļ°

āļĄāļĩāļ„āļģāļ­āļ˜āļīāļšāļēāļĒāđ€āļ›āđ‡āļ™āļ āļēāļĐāļēāđ„āļ—āļĒ āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļ™āļąāļāļžāļąāļ’āļ™āļēāļŠāļēāļ§āđ„āļ—āļĒāļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđ„āļ”āđ‰āļ‡āđˆāļēāļĒ

intellisense

āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™

QR āļ•āļēāļĄāļĄāļēāļ•āļĢāļāļēāļ™āļ‚āļ­āļ‡ EMVCo āđ„āļ”āđ‰āđāļšāđˆāļ‡āđ„āļ§āđ‰ 2 āļĨāļąāļāļĐāļ“āļ°āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ„āļ·āļ­

  1. Static QR āđ€āļ›āđ‡āļ™ QR āļ›āļĢāļ°āđ€āļ āļ—āđƒāļŠāđ‰āļˆāđˆāļēāļĒāđ€āļ‡āļīāļ™āđ„āļ”āđ‰āļŦāļĨāļēāļĒāļ„āļĢāļąāđ‰āļ‡ (āđƒāļŠāđ‰āļ‹āđ‰āļģāđ„āļ”āđ‰)
  2. Dynamic QR āđ€āļ›āđ‡āļ™ QR āļ›āļĢāļ°āđ€āļ āļ—āļˆāđˆāļēāļĒāđ€āļ‡āļīāļ™āđ„āļ”āđ‰āđ€āļžāļĩāļĒāļ‡āļ„āļĢāļąāđ‰āļ‡āđ€āļ”āļĩāļĒāļ§āđāļĨāđ‰āļ§āļ—āļīāđ‰āļ‡ (āđƒāļŠāđ‰āļ‹āđ‰āļģāđ„āļĄāđˆāđ„āļ”āđ‰)

āļŠāļģāļŦāļĢāļąāļšāđ‚āļ„āđ‰āļ”āđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ QR āđāļ•āđˆāļĨāļ°āļĢāļđāļ›āđāļšāļšāļāđ‡āļ•āļēāļĄāļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡āļ™āļĩāđˆāđāļŦāļĨāļ°

// Static QR
IPromptPayBuilder builder = PPay.StaticQR;

// Dynamic QR
IPromptPayBuilder builder = PPay.DynamicQR;

āļ•āļąāļ§āđ‚āļ„āđ‰āļ”āļ—āļĩāđˆāđ€āļ‚āļĩāļĒāļ™āđ„āļ§āđ‰āđ„āļ”āđ‰āđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢ āļ–āļ­āļ”āļ„āļ§āļēāļĄāļŦāļĄāļēāļĒ āļ‚āļ­āļ‡ EMVCo āđāļĨāļ° PromptPay āđ€āļ­āļēāđ„āļ§āđ‰āļ”āđ‰āļ§āļĒ āđ‚āļ”āļĒāļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļ‡āļēāļ™āļ•āļēāļĄāļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡

// āļ•āļąāļ§āļ­āđˆāļēāļ™ QR āļ•āļēāļĄāļĄāļēāļ•āļĢāļāļēāļ™ EMVCo āđāļĨāļ° PromptPay
IPromptPayQrReader reader = PPay.Reader;

āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ QR

1.āļŠāļĢāđ‰āļēāļ‡ QR āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļŠāļģāļŦāļĢāļąāļšāļšāļļāļ„āļ„āļĨāļ—āļąāđˆāļ§āđ„āļ› (Credit Transfer - Tag 29)

āđ€āļ›āđ‡āļ™āļāļēāļĢāđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ›āļĢāļ°āļŠāļēāļŠāļ™āļ—āļąāđˆāļ§āđ„āļ›āđ„āļĄāđˆāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ˜āļļāļĢāļāļīāļˆāļŦāļĢāļ·āļ­āļšāļĢāļīāļĐāļąāļ—āđƒāļ”āđ† āđ‚āļ”āļĒāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ QR āļ›āļĢāļ°āđ€āļ āļ—āļ™āļĩāđ‰ āļˆāļ°āļ•āđ‰āļ­āļ‡āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļœāđˆāļēāļ™āđ€āļĄāļ˜āļ­āļ” CreateCreditTransferQrCode() āļ•āļēāļĄāđ‚āļ„āđ‰āļ”āļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡āļ™āļĩāđ‰

// āļŠāļĢāđ‰āļēāļ‡ QR āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļŠāļģāļŦāļĢāļąāļšāļšāļļāļ„āļ„āļĨāļ—āļąāđˆāļ§āđ„āļ›
string qr = PPay.StaticQR.CreateCreditTransferQrCode();

āļāļēāļĢāļĢāļ°āļšāļļāļœāļđāđ‰āļĢāļąāļšāđ€āļ‡āļīāļ™

āļ•āļēāļĄāļĄāļēāļ•āļĢāļāļēāļ™āļ‚āļ­āļ‡āļ˜āļ™āļēāļ„āļēāļĢāđāļŦāđˆāļ‡āļ›āļĢāļ°āđ€āļ—āļĻāđ„āļ—āļĒ āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļĢāļ°āļšāļļāļœāļđāđ‰āļĢāļąāļšāđ€āļ‡āļīāļ™āđ„āļ”āđ‰ 4 āļ§āļīāļ˜āļĩāļ„āļ·āļ­ āđ€āļšāļ­āļĢāđŒāļĄāļ·āļ­āļ–āļ·āļ­, āđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļ›āļĢāļ°āļŠāļēāļŠāļ™, āđ€āļĨāļ‚āļšāļąāļāļŠāļĩāļ˜āļ™āļēāļ„āļēāļĢ āđāļĨāļ° e-wallet āļ•āļēāļĄāđ‚āļ„āđ‰āļ”āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡āļ™āļĩāđ‰

  1. āļĢāļ°āļšāļļāļœāļđāđ‰āļĢāļąāļšāđ€āļ‡āļīāļ™āļ”āđ‰āļ§āļĒ āđ€āļšāļ­āļĢāđŒāļĄāļ·āļ­āļ–āļ·āļ­
// āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ āđ€āļšāļ­āļĢāđŒāļĄāļ·āļ­āļ–āļ·āļ­ 091-418-5401 (āļˆāļģāļ™āļ§āļ™āđ€āļ‡āļīāļ™āļ—āļĩāđˆāļˆāļ°āđ‚āļ­āļ™āļœāļđāđ‰āđƒāļŠāđ‰āļ•āđ‰āļ­āļ‡āļāļĢāļ­āļāđ€āļ­āļ‡)
string qr = PPay.StaticQR.MobileNumber("0914185401").CreateCreditTransferQrCode();
  1. āļĢāļ°āļšāļļāļœāļđāđ‰āļĢāļąāļšāđ€āļ‡āļīāļ™āļ”āđ‰āļ§āļĒ āđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļ›āļĢāļ°āļŠāļēāļŠāļ™
// āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ āđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļ›āļĢāļ°āļŠāļēāļŠāļ™ 0-0000-00000-00-0 (āļˆāļģāļ™āļ§āļ™āđ€āļ‡āļīāļ™āļ—āļĩāđˆāļˆāļ°āđ‚āļ­āļ™āļœāļđāđ‰āđƒāļŠāđ‰āļ•āđ‰āļ­āļ‡āļāļĢāļ­āļāđ€āļ­āļ‡)
string qr = PPay.StaticQR.NationalId("0000000000000").CreateCreditTransferQrCode();
  1. āļĢāļ°āļšāļļāļœāļđāđ‰āļĢāļąāļšāđ€āļ‡āļīāļ™āļ”āđ‰āļ§āļĒ āđ€āļĨāļ‚āļšāļąāļāļŠāļĩāļ˜āļ™āļēāļ„āļēāļĢ
// āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ āđ€āļĨāļ‚āļšāļąāļāļŠāļĩāļ˜āļ™āļēāļ„āļēāļĢ 0000000000 (āļˆāļģāļ™āļ§āļ™āđ€āļ‡āļīāļ™āļ—āļĩāđˆāļˆāļ°āđ‚āļ­āļ™āļœāļđāđ‰āđƒāļŠāđ‰āļ•āđ‰āļ­āļ‡āļāļĢāļ­āļāđ€āļ­āļ‡)
string qr = PPay.StaticQR.BankAccount("000000000000000").CreateCreditTransferQrCode();
  1. āļĢāļ°āļšāļļāļœāļđāđ‰āļĢāļąāļšāđ€āļ‡āļīāļ™āļ”āđ‰āļ§āļĒ e-wallet
// āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ e-Wallet Id 000000000000000 (āļˆāļģāļ™āļ§āļ™āđ€āļ‡āļīāļ™āļ—āļĩāđˆāļˆāļ°āđ‚āļ­āļ™āļœāļđāđ‰āđƒāļŠāđ‰āļ•āđ‰āļ­āļ‡āļāļĢāļ­āļāđ€āļ­āļ‡)
string qr = PPay.StaticQR.EWallet("000000000000000").CreateCreditTransferQrCode();

āļāļēāļĢāļāļģāļŦāļ™āļ”āļˆāļģāļ™āļ§āļ™āđ€āļ‡āļīāļ™āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļˆāđˆāļēāļĒ

āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡ QR āļ—āļĩāđˆāļĄāļĩāļāļēāļĢāļāļģāļŦāļ™āļ”āđ€āļ‡āļīāļ™āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļˆāđˆāļēāļĒāđ€āļ›āđ‡āļ™āļ„āđˆāļēāļ•āļēāļĒāļ•āļąāļ§āđ„āļ”āđ‰āđ€āļĨāļĒ āđ‚āļ”āļĒāļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āđ€āļĄāļ˜āļ­āļ” Amount() āļ•āļēāļĄāđ‚āļ„āđ‰āļ”āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡

// āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ āđ€āļšāļ­āļĢāđŒāļĄāļ·āļ­āļ–āļ·āļ­ 091-418-5401 āļˆāļģāļ™āļ§āļ™ 50 āļšāļēāļ—
string qr = PPay.StaticQR.MobileNumber("0914185401").Amount(50).CreateCreditTransferQrCode();

// āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ āđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļ›āļĢāļ°āļŠāļēāļŠāļ™ 0-0000-00000-00-0 āļˆāļģāļ™āļ§āļ™ 50 āļšāļēāļ—
string qr = PPay.StaticQR.NationalId("0000000000000").Amount(50).CreateCreditTransferQrCode();


// āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ āđ€āļĨāļ‚āļšāļąāļāļŠāļĩāļ˜āļ™āļēāļ„āļēāļĢ 0000000000 āļˆāļģāļ™āļ§āļ™ 50 āļšāļēāļ—
string qr = PPay.StaticQR.BankAccount("000000000000000").Amount(50).CreateCreditTransferQrCode();

// āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ e-Wallet Id 000000000000000 āļˆāļģāļ™āļ§āļ™ 50 āļšāļēāļ—
string qr = PPay.StaticQR.EWallet("000000000000000").Amount(50).CreateCreditTransferQrCode();

āļŠāļģāļŦāļĢāļąāļšāļ„āļ™āļ—āļĩāđˆāļ­āļĒāļēāļāļŠāļĢāđ‰āļēāļ‡ QR āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĢāļđāđ‰āđ€āļĢāļ·āđˆāļ­āļ‡āļ­āļ°āđ„āļĢāđ€āļĨāļĒāļāđ‡āļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļ‡āļēāļ™āđāļšāļšāļ™āļĩāđ‰āđ„āļ”āđ‰

// āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ āđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļ›āļĢāļ°āļŠāļēāļŠāļ™ 0-0000-00000-00-0
string qr = PPay.StaticQR
    .CreateCreditTransferQrCode(new CreditTransfer
    {
        NationalIdOrTaxId = "0000000000000"
    });
Console.WriteLine($"Credit Transfer (PID): {creditTransferQR2}");

āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄ

āļāļĢāļ“āļĩāļ—āļĩāđˆāđ€āļ›āđ‡āļ™ QR āļ›āļĢāļ°āđ€āļ āļ— āļĢāđ‰āļēāļ™āđ€āļ›āđ‡āļ™āļœāļđāđ‰āđāļŠāļ”āļ‡ QR āđƒāļŦāđ‰āļĨāļđāļāļ„āđ‰āļēāļŠāđāļāļ™ āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ”āđ‚āļ”āļĒāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āđ€āļĄāļ˜āļ­āļ” MerchantPresentedQR()

string qr = PPay.StaticQR.MerchantPresentedQR().CreateCreditTransferQrCode();

āļāļĢāļ“āļĩāļ—āļĩāđˆāđ€āļ›āđ‡āļ™ QR āļ›āļĢāļ°āđ€āļ āļ— āļĨāļđāļāļ„āđ‰āļēāđ€āļ›āđ‡āļ™āļœāļđāđ‰āđāļŠāļ”āļ‡ QR Code āđƒāļŦāđ‰āļĢāđ‰āļēāļ™āļ„āđ‰āļēāļŠāđāļāļ™ āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ”āđ‚āļ”āļĒāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āđ€āļĄāļ˜āļ­āļ” CustomerPresentedQR()

string qr = PPay.StaticQR.CustomerPresentedQR().CreateCreditTransferQrCode();

2.āļŠāļĢāđ‰āļēāļ‡ QR āļŠāļģāļŦāļĢāļąāļšāļ˜āļļāļĢāļāļīāļˆ (Bill Payment - Tag 30)

āđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ QR āļŠāļģāļŦāļĢāļąāļšāđ€āļĢāļĩāļĒāļāđ€āļāđ‡āļšāđ€āļ‡āļīāļ™āļˆāļēāļ āļĢāđ‰āļēāļ™āļ„āđ‰āļē/āļšāļĢāļīāļĐāļąāļ— āđ‚āļ”āļĒāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ QR āļ›āļĢāļ°āđ€āļ āļ—āļ™āļĩāđ‰ āļˆāļ°āļ•āđ‰āļ­āļ‡āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļœāđˆāļēāļ™āđ€āļĄāļ˜āļ­āļ” CreateBillPaymentQrCode() āļ•āļēāļĄāđ‚āļ„āđ‰āļ”āļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡āļ™āļĩāđ‰

// āļŠāļĢāđ‰āļēāļ‡ QR āļŠāļģāļŦāļĢāļąāļšāļ˜āļļāļĢāļāļīāļˆ
string qr = PPay.StaticQR.CreateBillPaymentQrCode();

āļāļēāļĢāļĢāļ°āļšāļļāļœāļđāđ‰āļĢāļąāļšāđ€āļ‡āļīāļ™

āļ•āļēāļĄāļĄāļēāļ•āļĢāļāļēāļ™āļ‚āļ­āļ‡āļ˜āļ™āļēāļ„āļēāļĢāđāļŦāđˆāļ‡āļ›āļĢāļ°āđ€āļ—āļĻāđ„āļ—āļĒ āļ•āļąāļ§ QR āļ›āļĢāļ°āđ€āļ āļ—āļ™āļĩāđ‰āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ”āļœāļđāđ‰āļĢāļąāļšāđ€āļ‡āļīāļ™āđ„āļ”āđ‰ 2 āļ§āļīāļ˜āļĩāļ„āļ·āļ­ āļĢāļŦāļąāļŠāļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļ›āļĢāļ°āļŠāļēāļŠāļ™ āļŦāļĢāļ·āļ­ āđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļœāļđāđ‰āđ€āļŠāļĩāļĒāļ āļēāļĐāļĩ āļ•āļēāļĄāļ”āđ‰āļ§āļĒāļĢāļŦāļąāļŠāļĢāđ‰āļēāļ™āļŠāļēāļ‚āļē (suffix) āļ•āđˆāļ­āļ—āđ‰āļēāļĒ 2 āļ•āļąāļ§ āđāļĨāļ°āļĢāļŦāļąāļŠāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āđ€āļžāļ·āđˆāļ­āđ€āļ­āļēāđ„āļ§āđ‰āļĒāļ·āļ™āļĒāļąāļ™āļāļąāļšāļ˜āļ™āļēāļ„āļēāļĢāļāļĢāļ“āļĩāļĄāļĩāļ›āļąāļāļŦāļē āļ•āļēāļĄāđ‚āļ„āđ‰āļ”āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡āļ™āļĩāđ‰

  1. āļĢāļ°āļšāļļāļœāļđāđ‰āļĢāļąāļšāđ€āļ‡āļīāļ™āļ”āđ‰āļ§āļĒ āļĢāļŦāļąāļŠāļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļ›āļĢāļ°āļŠāļēāļŠāļ™
// āļˆāđˆāļēāļĒāđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ āļĢāļŦāļąāļŠāļ›āļĢāļ°āļŠāļēāļŠāļ™ 0-0000-00000-00-0 āļĢāļŦāļąāļŠāļĢāđ‰āļēāļ™āļŠāļēāļ‚āļē 99 (2 āļŦāļĨāļąāļ)
// āļĢāļŦāļąāļŠāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ 1: 1234, āļĢāļŦāļąāļŠāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ 2: 5678
string qr = PPay.StaticQR
    .NationalId("0000000000000")
    .BillerSuffix("99")
    .BillRef1("1234")
    .BillRef2("5678")
    .CreateBillPaymentQrCode();
  1. āļĢāļ°āļšāļļāļœāļđāđ‰āļĢāļąāļšāđ€āļ‡āļīāļ™āļ”āđ‰āļ§āļĒ āđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļœāļđāđ‰āđ€āļŠāļĩāļĒāļ āļēāļĐāļĩ
// āļˆāđˆāļēāļĒāđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ āđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļœāļđāđ‰āđ€āļŠāļĩāļĒāļ āļēāļĐāļĩ 0-0000-00000-00-0 āļĢāļŦāļąāļŠāļĢāđ‰āļēāļ™āļŠāļēāļ‚āļē 99 (2 āļŦāļĨāļąāļ)
// āļĢāļŦāļąāļŠāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ 1: 1234, āļĢāļŦāļąāļŠāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ 2: 5678 (āļˆāļģāļ™āļ§āļ™āđ€āļ‡āļīāļ™āļ—āļĩāđˆāļˆāļ°āđ‚āļ­āļ™āļœāļđāđ‰āđƒāļŠāđ‰āļ•āđ‰āļ­āļ‡āļāļĢāļ­āļāđ€āļ­āļ‡)
string qr = PPay.StaticQR
    .TaxId("000000000000099")
    .BillerSuffix("99")
    .BillRef1("1234")
    .BillRef2("5678")
    .CreateBillPaymentQrCode();

āļāļēāļĢāļāļģāļŦāļ™āļ”āļˆāļģāļ™āļ§āļ™āđ€āļ‡āļīāļ™āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļˆāđˆāļēāļĒ

āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡ QR āļ—āļĩāđˆāļĄāļĩāļāļēāļĢāļāļģāļŦāļ™āļ”āđ€āļ‡āļīāļ™āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļˆāđˆāļēāļĒāđ€āļ›āđ‡āļ™āļ„āđˆāļēāļ•āļēāļĒāļ•āļąāļ§āđ„āļ”āđ‰āđ€āļĨāļĒ āđ‚āļ”āļĒāļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āđ€āļĄāļ˜āļ­āļ” Amount() āļ•āļēāļĄāđ‚āļ„āđ‰āļ”āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡

// āļˆāđˆāļēāļĒāđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ āđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļœāļđāđ‰āđ€āļŠāļĩāļĒāļ āļēāļĐāļĩ 0-0000-00000-00-0 āļĢāļŦāļąāļŠāļĢāđ‰āļēāļ™āļŠāļēāļ‚āļē 99 (2 āļŦāļĨāļąāļ)
// āļĢāļŦāļąāļŠāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ 1: 1234, āļĢāļŦāļąāļŠāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ 2: 5678 āļˆāļģāļ™āļ§āļ™ 50 āļšāļēāļ—
string qr = PPay.StaticQR
    .TaxId("000000000000099")
    .BillerSuffix("99")
    .BillRef1("1234")
    .BillRef2("5678")
    .Amount(50)
    .CreateBillPaymentQrCode();

āļŠāļģāļŦāļĢāļąāļšāļ„āļ™āļ—āļĩāđˆāļ­āļĒāļēāļāļŠāļĢāđ‰āļēāļ‡ QR āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĢāļđāđ‰āđ€āļĢāļ·āđˆāļ­āļ‡āļ­āļ°āđ„āļĢāđ€āļĨāļĒāļāđ‡āļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļ‡āļēāļ™āđāļšāļšāļ™āļĩāđ‰āđ„āļ”āđ‰

// āļˆāđˆāļēāļĒāđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļ—āļĩāđˆ āđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļœāļđāđ‰āđ€āļŠāļĩāļĒāļ āļēāļĐāļĩ 0-0000-00000-00-0 āļĢāļŦāļąāļŠāļĢāđ‰āļēāļ™āļŠāļēāļ‚āļē 99 (2 āļŦāļĨāļąāļ)
// āļĢāļŦāļąāļŠāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ 1: 1234, āļĢāļŦāļąāļŠāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ 2: 5678 (āļˆāļģāļ™āļ§āļ™āđ€āļ‡āļīāļ™āļ—āļĩāđˆāļˆāļ°āđ‚āļ­āļ™āļœāļđāđ‰āđƒāļŠāđ‰āļ•āđ‰āļ­āļ‡āļāļĢāļ­āļāđ€āļ­āļ‡)
string qr = PPay.DynamicQR
    .CreateBillPaymentQrCode(new BillPayment
    {
        BillerId = "000000000000099",
        Suffix = "02",
        Reference1 = "1234",
        Reference2 = "5678",
    });

āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄ

āļāļĢāļ“āļĩāļ—āļĩāđˆāđ€āļ›āđ‡āļ™ QR āļ›āļĢāļ°āđ€āļ āļ— āđƒāļŠāđ‰āļ āļēāļĒāđƒāļ™āļ›āļĢāļ°āđ€āļ—āļĻ āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ”āđ‚āļ”āļĒāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āđ€āļĄāļ˜āļ­āļ” DomesticMerchant()

string qr = PPay.StaticQR.DomesticMerchant().CreateBillPaymentQrCode();

āļāļĢāļ“āļĩāļ—āļĩāđˆāđ€āļ›āđ‡āļ™ QR āļ›āļĢāļ°āđ€āļ āļ— āđƒāļŠāđ‰āļ‚āđ‰āļēāļĄāļ›āļĢāļ°āđ€āļ—āļĻ āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ”āđ‚āļ”āļĒāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āđ€āļĄāļ˜āļ­āļ” CrossBorderMerchant()

string qr = PPay.StaticQR.CrossBorderMerchant().CreateBillPaymentQrCode();

āļ•āļąāļ§āļ–āļ­āļ”āļ„āļ§āļēāļĄāļŦāļĄāļēāļĒ QR

āđƒāļ™āļāļĢāļ“āļĩāļ—āļĩāđˆāđ€āļĢāļēāđ„āļ”āđ‰āļĢāļąāļš QR code āļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļĒāļēāļ§āđ†āđ€āļ‚āđ‰āļēāļĄāļē āđāļĨāđ‰āļ§āđ€āļĢāļēāļ•āđ‰āļ­āļ‡āļāļēāļĢāļĢāļđāđ‰āļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļ‚āļ­āļ‡āļĄāļąāļ™ āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļ‡āļēāļ™āļ•āļąāļ§ QR Reader āđ„āļ”āđ‰āļ”āđ‰āļ§āļĒāļ„āļģāļŠāļąāđˆāļ‡āļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡āļ™āļĩāđ‰ (āļ„āļģāļŠāļąāđˆāļ‡āļ™āļĩāđ‰āļĢāļ­āļšāļĢāļąāļšāļĄāļēāļ•āļĢāļāļēāļ™ EMVCo āđāļĨāļ° PromptPay)

// QR āđ‚āļ­āļ™āđ€āļ‡āļīāļ™āļžāļĢāđ‰āļ­āļĄāđ€āļžāļĒāđŒāđ„āļ›āļĒāļąāļ‡āđ€āļšāļ­āļĢāđŒāđ‚āļ—āļĢ 0914185401 āļˆāļģāļ™āļ§āļ™āđ€āļ‡āļīāļ™ 50 āļšāļēāļ—
string qr = "00020101021229370016A000000677010111011300669141854015303764540550.005802TH630401F8";
IPromptPayQrInfo model = PPay.Reader.ReadQrPromptPay(qr);

āļœāļĨāļĨāļąāļžāļ—āđŒ

{
    "Segments": 
    [
        {
            "RawValue": "000201",
            "Id": "00",
            "Length": "02",
            "Value": "01",
            "IdByConvention": 0
        },
        {
            "RawValue": "010212",
            "Id": "01",
            "Length": "02",
            "Value": "12",
            "IdByConvention": 1
        },
        {
            "RawValue": "29370016A00000067701011101130066914185401",
            "Id": "29",
            "Length": "37",
            "Value": "0016A00000067701011101130066914185401",
            "IdByConvention": 2
        },
        {
            "RawValue": "5303764",
            "Id": "53",
            "Length": "03",
            "Value": "764",
            "IdByConvention": 53
        },
        {
            "RawValue": "540550.00",
            "Id": "54",
            "Length": "05",
            "Value": "50.00",
            "IdByConvention": 54
        },
        {
            "RawValue": "5802TH",
            "Id": "58",
            "Length": "02",
            "Value": "TH",
            "IdByConvention": 58
        },
        {
            "RawValue": "630401F8",
            "Id": "63",
            "Length": "04",
            "Value": "01F8",
            "IdByConvention": 63
        }
    ],
    "PayloadFormatIndicator": "01",
    "PointOfInitiationMethod": "12",
    "MerchantAccountInformation": "0016A00000067701011101130066914185401",
    "MerchantCategoryCode": null,
    "TransactionCurrency": "764",
    "TransactionAmount": "50.00",
    "TipOrConvenienceIndicator": null,
    "ValueOfConvenienceFeeFixed": null,
    "ValueOfConvenienceFeePercentage": null,
    "CountryCode": "TH",
    "MerchantName": null,
    "MerchantCity": null,
    "PostalCode": null,
    "AdditionalData": null,
    "CRC": "01F8",
    "MerchantInformationLanguageTemplate": null,
    "RFU": null,
    "Reusable": true,
    "Currency": "THB",
    "CreditTransfer": {
        "AID": "A000000677010111",
        "MobileNumber": "66914185401",
        "NationalIdOrTaxId": null,
        "EWalletId": null,
        "BankAccount": null,
        "OTA": null,
        "CustomerPresentedQR": false
    },
    "BillPayment": null
}

āļ­āđ‰āļēāļ‡āļ­āļīāļ‡

āļ•āļąāļ§āļŠāđˆāļ§āļĒāđƒāļ™āļāļēāļĢ āļ­āđˆāļēāļ™ āđāļĨāļ° āļŠāļĢāđ‰āļēāļ‡ QR Prompt Pay āļ•āļēāļĄāļĄāļēāļ•āļĢāļāļēāļ™āļ‚āļ­āļ‡āļ˜āļ™āļēāļ„āļēāļĢāđāļŦāđˆāļ‡āļ›āļĢāļ°āđ€āļ—āļĻāđ„āļ—āļĒ BOT (Bank of Thailand) āđ‚āļ”āļĒāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āļˆāļēāļāđ€āļ­āļāļŠāļēāļĢāļŠāļģāļ„āļąāļ 3 āļ•āļąāļ§āļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡āļ™āļĩāđ‰

  1. Thai QR Code - Payment Standard
  2. ENVCo Consumer Presented Mode
  3. EMVCo Merchant Presented Mode

Progress

Feature āļŠāļ–āļēāļ™āļ° āļŦāļĄāļēāļĒāđ€āļŦāļ•āļļ
āļŠāļĢāđ‰āļēāļ‡ Bill Payment āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰ āđ€āļ—āļŠāđ€āļ„āļŠāļĒāļąāļ‡āđ„āļĄāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļžāļ­
āļŠāļĢāđ‰āļēāļ‡ Transfer with PromptPay ID āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰ āđ€āļ—āļŠāđ€āļ„āļŠāļĒāļąāļ‡āđ„āļĄāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļžāļ­ + āļ•āļąāļ”āđ€āļšāļ­āļĢāđŒāđ‚āļ—āļĢāļāļēāļāđ†āđ„āļ›āļāđˆāļ­āļ™
āļ–āļ­āļ”āļ„āļ§āļēāļĄāļŦāļĄāļēāļĒ QR āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰ āđ€āļ—āļŠāđ€āļ„āļŠāļĒāļąāļ‡āđ„āļĄāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļžāļ­ + āļĒāļąāļ‡āļ–āļ­āļ”āđ„āļĄāđˆāļ„āļĢāļšāļ—āļļāļāļŸāļīāļĨāļ”āđŒ
Validators & Suggestion āļĒāļąāļ‡āđ„āļĄāđˆāđ„āļ”āđ‰āļ—āļģ

About

QR PromptPay - Read, Write & Validate (EMVCo)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%