This page provides sample code for creating REST clients for various popular programming languages.

1. REST client code sample in JVM using JAVA

In this tutorial, we show how to create a RESTful Java client with Java built-in HTTP client library. It’s simple to use and good enough to perform basic operations for REST service.

 Java client to send a “POST” request to PAGA getTransactionDetails method on the merchant restful API, with json string will be as simple as below.

package restfulclient.main;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.MessageDigest;
public class RestClient {
	public static void main(String[] args) {
		try {
			URL url = new URL("http://www.mypaga.com/paga-webservices/merchant-rest/getTransactionDetails");
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
				conn.setRequestProperty("Content-Type", "application/json");
				conn.setRequestProperty("principal", "AA6EEB78-BD92-4D0B-A87D-E3DB46C53B70"); //business organization publicId
				conn.setRequestProperty("credentials", "password"); //business organization password
				StringBuilder sBuilder = new StringBuilder();
				sBuilder.append("09012939283"); //referenceNumber param value
				sBuilder.append("0123"); //business organization api-key
				conn.setRequestProperty("hash", RestClientTest.hashSHA512(sBuilder.toString(), 1000, true).toString());
				//input should be the data formatted as a JSON.
				String input = "{\"referenceNumber\":\"09012939283\"}"; 
				OutputStream os = conn.getOutputStream();
			if (conn.getResponseCode() != 201 && conn.getResponseCode() != 200) {
				throw new RuntimeException("Failed : HTTP error code : "
					+ conn.getResponseCode());
			BufferedReader br = new BufferedReader(new InputStreamReader(
			String output;
			System.out.println("Output from Server .... \n");
			while ((output = br.readLine()) != null) {
		  } catch (MalformedURLException e) {
		  } catch (IOException e) {
	//hash sha-512 with some iterations
	public static Object hashSHA512(String message, int iterations, boolean returnHex) {
		try {
			MessageDigest mda = MessageDigest.getInstance("SHA-512");
			byte [] digest = mda.digest(message.getBytes());
			for(int i = 0; i < iterations - 1; i++) {
				digest = mda.digest(digest);
			if(returnHex) {
				return new String(Hex.encodeHex(digest));
			} else {
				return digest;
		} catch(Exception e) {
			return null;

On this page:

2. REST client code sample using PHP

PHP client to send a “POST” request to PAGA buy Airtime API, with json string will be as below.

    $url = "http://www.mypaga.com/paga-webservices/merchant-rest/secured/getTransactionDetails";
	$postdata = "{\"referenceNumber\":\"0012939283\"}"; 
	//hash with sha-512 1000 times 
	//appended param values referenceNumber and merchant api key
       $hash = hash('sha512', "0012939283"."0123");
    	for ($i=1; $i<1000; $i++) {
       	$hash = hash('sha512', pack("H*", $hash));
       $opts = array(
        	"http" => array(
        	"method" => "POST",
        	"header" => "Content-Type: application/json\r\nprincipal: 757E1F82-C5C1-4883-B891-C888293F2F00\r\ncredentials: pa55w@rd \r\nhash:".$hash,
        	"content" => $postdata
    $context = stream_context_create($opts);
    $response =  json_decode(file_get_contents($url, false, $context));
    echo $result;


3. REST client code sample in .NET using C#

.NET client to send a “POST” request to PAGA buy Airtime API, with json string will be as simple as below.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.IO;
using System.Net; 
namespace RESTfulClient
    public class Program
		public static void Main(string[] args)
            // We use the HttpUtility class from the System.Web namespace   
            Uri address = new Uri("http://www.mypaga.com/paga-webservices/merchant-rest/registerCustomer");
            // Create the web request  
            HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
            // Set type to POST  
            request.Method = "POST";
            request.ContentType = "application/json";
            request.Headers.Add("principal", "757E1F82-C5C1-4883-B891-C888293F2F00");
            request.Headers.Add("credentials", "pa55w@rd");
            //Get sha512 hash of the appended param values referenceNumber and api key with 1000 iterations
            String hash = GetSha512("0012939283" + "0123", 1000);
            //add hash header params
            request.Headers.Add("hash", hash);
            // Create the data we want to send  
            String data = "{\"referenceNumber\":\"0012939283\"}"; 
            // Create a byte array of the data we want to send  
            byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());
            // Set the content length in the request headers  
            request.ContentLength = byteData.Length;
            // Write data  
            using (Stream postStream = request.GetRequestStream())
                postStream.Write(byteData, 0, byteData.Length);
            // Get response  
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                // Get the response stream  
                StreamReader reader = new StreamReader(response.GetResponseStream());
                // Console application output  
		//Get sha512 hash with certain iterations
        public static String GetSha512(string text, long iterations)
            string hash = "";
            SHA512 alg = SHA512.Create();
            byte[] result = alg.ComputeHash(Encoding.UTF8.GetBytes(text));
            for (long i = 1; i < iterations - 1; i++)
                result = alg.ComputeHash(result);
            hash = BitConverter.ToString(result).Replace("-","");
            return hash;


Related articles

Related articles appear here based on the labels you select. Click to edit the macro and add or change labels.

Related issues