<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Azis Alvriyanto</title>
    <description>The latest articles on DEV Community by Azis Alvriyanto (@azisalvriyanto).</description>
    <link>https://dev.to/azisalvriyanto</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1834720%2Ff4ea8686-f6fd-4890-a58f-8a31d1f7132d.jpg</url>
      <title>DEV Community: Azis Alvriyanto</title>
      <link>https://dev.to/azisalvriyanto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/azisalvriyanto"/>
    <language>en</language>
    <item>
      <title>🚀 Go-QRIS: Revolutionizing QRIS Transactions with Dynamic QR Codes 💳</title>
      <dc:creator>Azis Alvriyanto</dc:creator>
      <pubDate>Wed, 25 Dec 2024 07:41:55 +0000</pubDate>
      <link>https://dev.to/azisalvriyanto/go-qris-revolutionizing-qris-transactions-with-dynamic-qr-codes-od9</link>
      <guid>https://dev.to/azisalvriyanto/go-qris-revolutionizing-qris-transactions-with-dynamic-qr-codes-od9</guid>
      <description>&lt;p&gt;The way I handle payments is evolving rapidly, with digital solutions taking center stage in creating seamless transactions. In Indonesia, QRIS (Quick Response Code Indonesian Standard) has become the backbone of many payment systems, allowing businesses to accept payments through a standardized QR code format. While QRIS is incredibly convenient, the static nature of traditional QR codes can pose challenges in dynamic business environments.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;Go-QRIS&lt;/strong&gt; steps in, an open-source project written in Go, designed to enhance the flexibility and adaptability of QRIS transactions by enabling dynamic QR codes. By addressing the limitations of static QRIS codes, Go-QRIS not only empowers businesses to better manage their payment systems but also ensures customers have a smoother and more efficient payment experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  📜 Why Go-QRIS?
&lt;/h2&gt;

&lt;p&gt;The static QRIS codes commonly used today are effective for straightforward transactions but lack the flexibility needed in scenarios where payment amounts, merchant details, or additional fees need to be customized. For example, imagine a merchant wanting to include dynamic charges such as service fees or discounts directly in their QR code. With static codes, this process is cumbersome and requires generating new QR codes each time.&lt;/p&gt;

&lt;p&gt;Go-QRIS eliminates this hassle. By converting static QR codes into dynamic ones, it allows businesses to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adjust payment details in real-time.&lt;/li&gt;
&lt;li&gt;Add or modify merchant information such as city, postal code, and terminal labels.&lt;/li&gt;
&lt;li&gt;Automatically calculate and include fees (fixed or percentage-based).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This adaptability makes Go-QRIS an invaluable tool for modern businesses looking to stay agile and customer-focused.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ How Does Go-QRIS Work?
&lt;/h2&gt;

&lt;p&gt;At its core, Go-QRIS is built with Go, a powerful programming language known for its efficiency and scalability. Its architecture is clean and modular, making it easy for developers to integrate into existing systems or build new solutions around it. The project provides an API-first approach, enabling seamless interaction with its functionalities through RESTful endpoints.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Functionalities:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic QR Code Generation&lt;/strong&gt;: Go-QRIS can convert static QRIS codes into dynamic versions, allowing for the inclusion of variables such as payment amounts, merchant city, postal codes, and more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parsing and Validation&lt;/strong&gt;: The tool provides robust QRIS parsing capabilities, ensuring the code's integrity and compliance with standards like CRC16-CCITT.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modification Tools&lt;/strong&gt;: Beyond generating QR codes, Go-QRIS allows for modifying existing QRIS codes to adapt to changing business needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer-Friendly SDK&lt;/strong&gt;: For those building custom solutions, Go-QRIS offers a developer-friendly Go library with well-documented methods for parsing, validating, and generating QRIS codes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  💌 Benefits for Businesses and Developers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  For Businesses:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Increased Flexibility&lt;/strong&gt;: Tailor QRIS codes to specific needs without creating new ones repeatedly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Customer Experience&lt;/strong&gt;: Reduce friction in payments with precise, real-time QR code customization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Efficiency&lt;/strong&gt;: Save resources by reusing dynamic QR codes instead of printing new static ones.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For Developers:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Integration&lt;/strong&gt;: Go-QRIS API and library are designed for quick and smooth implementation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Source Community&lt;/strong&gt;: Collaborate and contribute to a growing community dedicated to improving the project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;: Built with Go, the tool handles large-scale operations effortlessly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚙️ How to Get Started
&lt;/h2&gt;

&lt;p&gt;Getting started with Go-QRIS is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Clone the Repository&lt;/strong&gt;&lt;br&gt;
Start by cloning the project from GitHub:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/fyvri/go-qris.git &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;go-qris
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set Up Your Environment&lt;br&gt;
Copy the .env.example file to .env and configure it according to your needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install Dependencies&lt;br&gt;
Run &lt;code&gt;go mod tidy&lt;/code&gt; to ensure all dependencies are installed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the Application&lt;br&gt;
Launch the application locally:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run ./cmd/main.go
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Or use Docker for an isolated setup. The repository provides a detailed &lt;a href="https://github.com/fyvri/go-qris/pkgs/container/go-qris" rel="noopener noreferrer"&gt;Docker setup&lt;/a&gt; guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  Implement into Your Awesome Project
&lt;/h3&gt;

&lt;p&gt;Integrating Go-QRIS into your own application is straightforward. Here’s an example of how you can use Go-QRIS library to dynamically generate and manipulate QRIS codes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"fmt"&lt;/span&gt;

    &lt;span class="s"&gt;"github.com/fyvri/go-qris/pkg/services"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;qrisString&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="s"&gt;"000201010211y0ur4w3soMEQr15STriN6"&lt;/span&gt;
    &lt;span class="n"&gt;merchantCity&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="s"&gt;"Kota Yogyakarta"&lt;/span&gt;                    &lt;span class="c"&gt;// optional&lt;/span&gt;
    &lt;span class="n"&gt;merchantPostalCode&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="s"&gt;"55000"&lt;/span&gt;                        &lt;span class="c"&gt;// optional&lt;/span&gt;
    &lt;span class="n"&gt;paymentAmount&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="m"&gt;1337&lt;/span&gt;                                &lt;span class="c"&gt;// mandatory&lt;/span&gt;
    &lt;span class="n"&gt;paymentFeeCategory&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="s"&gt;"FIXED"&lt;/span&gt;                        &lt;span class="c"&gt;// optional, value: FIXED or PERCENT&lt;/span&gt;
    &lt;span class="n"&gt;paymentFee&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="m"&gt;666&lt;/span&gt;                                    &lt;span class="c"&gt;// optional, based on paymentFeeCategory value&lt;/span&gt;
    &lt;span class="n"&gt;terminalLabel&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="s"&gt;"Made with love by Alvriyanto Azis"&lt;/span&gt; &lt;span class="c"&gt;// optional, it works if terminal label exists in qrisString&lt;/span&gt;

    &lt;span class="n"&gt;qrisService&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;services&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewQRIS&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;qrisString&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;errs&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;qrisService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Convert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;qrisString&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;merchantCity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;merchantPostalCode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;paymentAmount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;paymentFeeCategory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;paymentFee&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;terminalLabel&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"[ FAILURE ]"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;errs&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="k"&gt;range&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;errs&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"            -"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"[ SUCCESS ]"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;qrisString&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also use the library's additional functionalities such as parsing, validating, modifying, and converting QRIS codes back to string form. Here’s a quick summary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Parse QRIS&lt;/strong&gt;: Extract QRIS details.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;qris&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;errs&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;qrisService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;qrisString&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Validate QRIS&lt;/strong&gt;: Check if the QRIS is valid.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;isValid&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;qrisService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IsValid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;qris&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Modify QRIS&lt;/strong&gt;: Dynamically update QRIS fields:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;qris&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;errs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;qrisService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Modify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;qris&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;merchantCity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;merchantPostalCode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;paymentAmount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;paymentFeeCategory&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;paymentFee&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;terminalLabel&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Convert to String&lt;/strong&gt;: Generate a QRIS string from a QRIS object.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;qrisString&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;qrisService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;qris&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A Glimpse of API
&lt;/h3&gt;

&lt;p&gt;You can experience Go-QRIS in action through its live API endpoint: &lt;a href="http://api.qris.membasuh.com" rel="noopener noreferrer"&gt;http://api.qris.membasuh.com&lt;/a&gt;. This live service provides access to the same powerful QRIS conversion, validation, and parsing functionalities described above, allowing you to integrate it into your applications or test its capabilities. Go-QRIS offers endpoints such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;POST /parse&lt;/code&gt;: Extract and interpret QRIS data for validation or customization.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"qr_string"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"000201010211y0ur4w3soMEQr15STriN6"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;POST /convert&lt;/code&gt;: Convert static QR codes to dynamic ones.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"qr_string"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"000201010211y0ur4w3soMEQr15STriN6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"merchant_city"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Kota Yogyakarta"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"merchant_postal_code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"55000"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"payment_amount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1337&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"payment_fee_category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"FIXED"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"payment_fee"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;666&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"terminal_label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Made with love by Alvriyanto Azis"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;POST /is-valid&lt;/code&gt;: Verify the validity of a QRIS code against standard protocols.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"qr_string"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"000201010211y0ur4w3soMEQr15STriN6"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The API documentation, hosted on &lt;a href="https://documenter.getpostman.com/view/6937269/2sAYJ1jMc7" rel="noopener noreferrer"&gt;Postman&lt;/a&gt;, provides detailed examples and usage instructions, making integration straightforward even for those new to Go-QRIS.&lt;/p&gt;

&lt;h2&gt;
  
  
  🍀 Real-World Applications of Go-QRIS
&lt;/h2&gt;

&lt;p&gt;The versatility of Go-QRIS makes it ideal for a wide range of use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;E-Commerce Platforms&lt;/strong&gt;: Generate dynamic QR codes for varying order amounts.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Physical Stores&lt;/strong&gt;: Include location-specific details in QR codes for better tracking and customer convenience.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Service Industries&lt;/strong&gt;: Automatically include service charges or tips in payment QR codes.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Event Ticketing&lt;/strong&gt;: Use dynamic QR codes to handle variable ticket prices or promotions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  👥 Join Go-QRIS Community
&lt;/h2&gt;

&lt;p&gt;Go-QRIS is not just a tool; it's a step toward more flexible, efficient, and scalable payment solutions. Whether you're a developer exploring new technologies or a business looking to enhance your payment systems, Go-QRIS has something for you.&lt;br&gt;
Dive into the &lt;a href="https://github.com/fyvri/go-qris" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;, explore the &lt;a href="https://documenter.getpostman.com/view/6937269/2sAYJ1jMc7" rel="noopener noreferrer"&gt;Postman API documentation&lt;/a&gt;, and start transforming your payment processes today. Together, let's push the boundaries of QRIS innovation!&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Related Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api.qris.membasuh.com" rel="noopener noreferrer"&gt;https://api.qris.membasuh.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fyvri/go-qris" rel="noopener noreferrer"&gt;https://github.com/fyvri/go-qris&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ghcr.io/fyvri/go-qris" rel="noopener noreferrer"&gt;https://ghcr.io/fyvri/go-qris&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://documenter.getpostman.com/view/6937269/2sAYJ1jMc7" rel="noopener noreferrer"&gt;https://documenter.getpostman.com/view/6937269/2sAYJ1jMc7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pkg.go.dev/github.com/fyvri/go-qris" rel="noopener noreferrer"&gt;https://pkg.go.dev/github.com/fyvri/go-qris&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>go</category>
      <category>qris</category>
      <category>payment</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
