Paynow Developer Hub
  • DOCUMENTATION
  • ABOUT
  • HELP
  • FORUMS
  • SIGN UP / SIGN IN

›Links & Buttons

Getting Started

  • Getting started
  • Generating Integration Keys
  • Test Mode
  • Artwork and Buttons
  • PHP
  • .NET
  • Node.JS
  • Python
  • Java
  • WooCommerce
  • Gravity Forms
  • Easy Digital Downloads
  • Shopify
  • Camptix
  • Magento
  • Spring Boot

Links & Buttons

  • Simple Payment Request Button
  • Advanced Payment Request Button
  • Notification, Success & Cancel URLs
  • URL Safe Base 64 Encoding

API Reference

  • System Layout
  • Initiate a transaction
  • Express Checkout Transactions
  • Complete a Transaction
  • Status Update
  • Polling for a Status Update
  • Generating Hash
  • Validating Hash
  • Initiate a Passenger Ticket Transaction

Library Source Docs

  • PHP
  • .NET
  • Node.JS
  • Java

Notification, Success & Cancel URLs

How they work

When using a Custom Button Template to create an advanced payment request button, you have the option of entering a URL of your own that Paynow can post data to (by means of a form POST) to let you know about status updates, payment success or payment cancellation respectively.

The post is sent to the Notification URL, the client’s browser (with no extra information) will be redirected back to the Success or Cancel URL depending on transaction status.

POST Data

The data posted by Paynow to the Notification URL will include the following fields:

FieldDescriptionData TypeExample
Paynow_ReferenceThe Paynow transaction referenceText40222
Customer_NameThe name of the customerTextJohn Smith
Customer_EmailThe customer’s email addressTextcustomer@gmail.com
Customer_PhoneThe customer’s phone numberText0733123456
Transaction_AmountThe transaction amountNumeric25.00
Amount_PaidThe amount debited from the customer's accountNumeric26.30
HashA hash of the data in the form post (see Verifying the Hash Value for more information)Text81D4957A0EB18F8079D33E5
C0AF0F0F604D6F127F3C9EC9
0D09FDB9001E1197CB0B276
38348BD9FDB1ED72DA60830
6F7E050C9445BFA08AC1A71
F83F500CA59C
(extra fields)A list of any extra fields you may have set up in the custom button templateText(see table below)

Any extra fields that were setup in the Custom Button Template will be included in the form post with their key and value, If the name contains a space it will be replaced with an underscore _, for example:

FieldValue
Item_ColourRed
CaptionPay when? Pay now!
Size32

Verifying the Hash Value

It is important for the developer to re-generate a hash of the posted data and compare it to the hash supplied in the form post to ensure that the data was in fact posted from Paynow (otherwise it is possible that the data may have been spoofed by a 3rd party)

You can find the Integration Key for the payment method in Paynow by clicking edit on the template.

To generate a hash value for the message follow the steps:

  1. Concatenate the key plus the value with no space or separator in the same order they appear in the post.
  2. Append the Integration Key
  3. UTF8 encode the string, note in PHP this should not be necessary, depending on your configuration.
  4. Create a SHA512 hash of the string and output the result as upper case hexadecimal.

This value should match the hash value in the post, if not do not accept the notification.

← Advanced Payment Request ButtonURL Safe Base 64 Encoding →
  • How they work
    • POST Data
    • Verifying the Hash Value
Documentation
Getting StartedAPI ReferenceFrequently Asked QuestionsArtwork & Buttons
Libraries & Plugins
PHP.NETNode.JSPythonJava
Plugins
WooCommerceGravity FormsEasy Digital DownloadsShopify
Community
Discussion ForumsBlogs & TutorialsGithubFacebookTwitter
Paynow Zimbabwe
Copyright © 2025 Paynow Zimbabwe