Skip to content

Merchant 3D Model Complete Payment API

Açıklama: 3D ödeme isteğinde "payment_completed_by" : "merchant" gönderilip kart doğrulaması yapıldıktan sonra ilgili tutarın karttan çekilmesi için completePayment API çağırılmalıdır. Kart doğrulandıktan sonra 15 dakika içerisinde completePayment API çağrılmaz ise otomatik olarak işlem başarısız olur.

Kart doğrulaması paySmart3D yönlendirmesinden MdStatus değeriyle kontrol edilir,

MdStatus = 1 ( Kart Doğrulandı )

MdStatus = 0 ( Kart Doğrulanmadı )

URL: /payment/complete

Test Sunucusu: https://test.vepara.com.tr/ccpayment/payment/complete

Canlı Sunucusu: https://app.vepara.com.tr/ccpayment/payment/complete

Method: POST

REQUEST BODY SCHEMA

json
{
  "type": "object",
  "properties": {
    "merchant_key": {
      "type": "string",
      "description": "Vepara tarafından sağlanan üye işyerinin benzersiz anahtarıdır."
    },
    "invoice_id": {
      "type": "string",
      "description": "Ödeme yapılacak sepetin sipariş numarası, benzersiz göndermeye dikkat edin"
    },
    "order_id": {
      "type": "string",
      "description": "Ödeme yapıldıktan sonra gelen sipariş numarası"
    },
    "status": {
       "type": "string",
       "description": "Ödeme durumu" 
    },
    "hash_key": {
      "type": "string",
      "description": "işlemin bankaya ulaşmadan, kullanıcının ödemeyle ilgili değişiklikler yapamamasını ve ödemenin güvenli olarak tamamlanmasını sağlamaktadır. Aşağıda verilen hash anahtarını yazmak için kullanılan algoritma için tıklayınız veya sağ taraftaki PHP sekmesinden örneğini inceleyiniz."
    } 
  },
  "required": ["merchant_key"],
  "required": ["invoice_id"],
  "required": ["order_id"],
  "required": ["status"],
  "required": ["hash_key"],
}

RESPONSE BODY

200 Başarılı Sonuç
json
{
    "status_code": 100,
    "status_description": "Payment Successfully Completed",
    "data": {
        "order_no": 166254527653758,
        "order_id": 166254527653758,
        "invoice_id": "9a197ed9-cfaf-4456-b0fc-da74a95f461c",
        "status_code": 100,
        "status_description": "Payment Successfully Completed",
        "credit_card_no": "557023****7463",
        "transaction_type": "Auth",
        "payment_status": 1,
        "payment_method": 1,
        "error_code": 100,
        "error": "Payment Successfully Completed",
        "auth_code": 287679,
        "status": "Completed",
        "hash_key": "c98d63c4ba1952c9:19e8:94Z0B48k__V5pCWIXlov3xbDKmM8beaNE3Lk4v3Yu5A1wfdPulFnDsJgFKJX+2gOqA2AfjcRExhYIuWCF3A4LireIUkv26kozmIHc0gjbwIY="
    }
}
400 Başarısız Sonuç
json
{
    "status_code": 31,
    "status_description": "Pending sale not found against order_id 166246147223278",
    "data": {
        "invoice_id": "f6a2a107-088f-4169-875f-8a6f30cf4ff2",
        "order_id": 166246147223278
    }
}

Hash-Key Oluşturma

Request Body Scheme
json
{
  "type": "object",
  "properties": {
    "merchant_key" : {
        "type": "string",
        "description": "Vepara tarafından sağlanan üye işyerinin benzersiz anahtarıdır."
    },
    "invoice_id": {
      "type": "string",
      "description": "Ödeme yapılacak sepetin fatura numarası, benzersiz göndermeye dikkat edin"
    },
    "order_id": {
      "type": "string",
      "description": "Vepara tarafından ödeme sonrası sağlanan sipariş numarası"
    },
    "status": {
      "type": "string",
      "description": "status “complete” veya “cancel” olabilir."
    },
    "app_secret": {
      "type": "string",
      "description": "app_secret üye işyerine verilen benzersiz ve gizli bir anahtardır."
    },
  },
  "required": ["merchant_key"],
  "required": ["invoice_id"],
  "required": ["order_id"],
  "required": ["status"],
  "required": ["app_secret"],
}

RESPONSE BODY

200 Başarılı Sonuç
json
{
  "Hash Key": "fd11c23d8e654717:88c8:hgHyeat3CAXK+1k6MC09m9rlfQ31Z6Bnd1ElcGxVAq9oYAmCWfTl+73TnuQ0SBjleoOujI2NUv8SRb8jprForFMSUvpPPvn+dnPXMqNi2hA="
}

Hash Key Oluşturma Kod Örnekleri

PHP Örneği
php
function generateConfrimPaymentHashKey($merchant_key, $invoice_id,$order_id, $status, $app_secret)
{
  $data = $merchant_key . '|' . $invoice_id . '|' . $order_id . '|' .$status;
  $iv = substr(sha1(mt_rand()), 0, 16);
  $password = sha1($app_secret);
  $salt = substr(sha1(mt_rand()), 0, 4);
  $saltWithPassword = hash('sha256', $password . $salt);
  $encrypted = openssl_encrypt(
  "$data", 'aes-256-cbc', "$saltWithPassword", null, $iv
  );
  $msg_encrypted_bundle = "$iv:$salt:$encrypted";
  $msg_encrypted_bundle = str_replace('/', '__', $msg_encrypted_bundle);
  return $msg_encrypted_bundle;
}
Ruby Örneği
ruby
require 'openssl'
require 'digest/sha1'
require 'digest/sha256'

def generate_confirm_payment_hash_key(merchant_key, invoice_id, order_id, status, app_secret_getter)
  # appSecret'i güvenli bir şekilde al
  app_secret = app_secret_getter.call

  # Verileri birleştir
  data = "#{merchant_key}|#{invoice_id}|#{order_id}|#{status}"

  # Rastgele IV ve salt oluştur (daha güvenli rastgelelik için OpenSSL::Random kullan)
  iv = OpenSSL::Random.random_bytes(16)
  salt = OpenSSL::Random.random_bytes(4)

  # appSecret'i salt ile hashle
  salt_with_password = Digest::SHA256.hexdigest(app_secret + salt.unpack('H*').first)

  # AES-256 CBC ile veriyi şifrele
  cipher = OpenSSL::Cipher.new('aes-256-cbc')
  cipher.encrypt
  cipher.key = salt_with_password
  cipher.iv = iv
  encrypted_data = cipher.update(data) + cipher.final

  # IV, salt ve şifrelenmiş veriyi birleştir
  msg_encrypted_bundle = "#{iv.unpack('H*').first}:#{salt.unpack('H*').first}:#{encrypted_data.unpack('H*').first}"

  # '/' karakterini daha güvenli bir ayraçla değiştir
  msg_encrypted_bundle.gsub!('/', '__')

  msg_encrypted_bundle
end

# Örnek kullanım (app_secret_getter güvenli bir şekilde anahtar alır diye varsayarak)
def get_app_secret
  # appSecret'i güvenli bir şekilde alma mantığınızı buraya yazın (örneğin, ortam değişkenlerinden)
  ENV['APP_SECRET']
end

merchant_key = 'your_merchant_key'
invoice_id = '12345'
order_id = 'ABC123'
status = 'success'

encrypted_hash = generate_confirm_payment_hash_key(merchant_key, invoice_id, order_id, status, method(:get_app_secret))

puts encrypted_hash
Python Örneği
python
import os
from hashlib import sha256
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad

def generateConfrimPaymentHashKey(merchant_key, invoice_id, order_id, status, app_secret_getter):
  
  app_secret = app_secret_getter()
  data = f"{merchant_key}|{invoice_id}|{order_id}|{status}"

  iv = get_random_bytes(16)
  salt = get_random_bytes(16)

  salt_with_password = sha256(app_secret.encode() + salt).hexdigest()

  cipher = AES.new(salt_with_password.encode(), AES.MODE_CBC, iv)
  ciphertext = cipher.encrypt(pad(data.encode('utf-8'), AES.block_size))
  encrypted_data = ciphertext.hex()

  msg_encrypted_bundle = f"{iv.hex()},{salt.hex()},{encrypted_data}"

  return msg_encrypted_bundle.replace('/', '__')

# Example usage (assuming app_secret_getter fetches the secret key securely)
def get_app_secret():
  # Implement logic to fetch appSecret securely (e.g., from environment variables)
  return os.environ.get('APP_SECRET')

merchant_key = 'your_merchant_key'
invoice_id = '12345'
order_id = 'ABC123'
status = 'success'

encrypted_hash = generateConfrimPaymentHashKey(merchant_key, invoice_id, order_id, status, get_app_secret)
print(encrypted_hash)
Nodejs Örneği
javascript
        
const crypto = require('crypto'); 

function generateConfrimPaymentHashKey(merchantKey, invoiceId, orderId, status, appSecret) {
  
  const data = `${merchantKey}|${invoiceId}|${orderId}|${status}`;
  const iv = crypto.randomBytes(16).toString('hex');
  const salt = crypto.randomBytes(16).toString('hex');
  const saltWithPassword = crypto.createHash('sha256').update(appSecret + salt).digest('hex');
  const cipher = crypto.createCipheriv('aes-256-cbc', saltWithPassword, Buffer.from(iv, 'hex'));
  cipher.setAutoPadding(true); 
  const encrypted = cipher.update(data, 'utf8', 'hex') + cipher.final('hex');
  const msgEncryptedBundle = `${iv}:${salt}:${encrypted}`;
  return msgEncryptedBundle.replace('/', '__');
}

const merchantKey = 'your_merchant_key';
const invoiceId = '12345';
const orderId = 'ABC123';
const status = 'complete';
const appSecret = 'your_app_secret';
const encryptedHash = generateConfrimPaymentHashKey(merchantKey, invoiceId, orderId, status, getAppSecret);
console.log(encryptedHash);
C# Örneği
c#


using System;
using System.Security.Cryptography;
using System.Text;
using System.Linq;

public class HashGenerator
{
    public string GenerateHashKey(string merchant_key, string invoice_id, string order_id, string status, string app_secret)
    {
        string data = merchant_key + "|" + invoice_id + "|" + order_id + "|" + status;

        Random mt_rand = new Random();

        string iv = Sha1Hash(mt_rand.Next().ToString()).Substring(0, 16);

        string password = Sha1Hash(app_secret);

        string salt = Sha1Hash(mt_rand.Next().ToString()).Substring(0, 4);

        string saltWithPassword = "";

        using (SHA256 sha256Hash = SHA256.Create())
        {
            saltWithPassword = GetHash(sha256Hash, password + salt);
        }

        string encrypted = Encryptor(data, saltWithPassword.Substring(0, 32), iv);

        string msg_encrypted_bundle = iv + ":" + salt + ":" + encrypted;
        msg_encrypted_bundle = msg_encrypted_bundle.Replace("/", "__");

        return msg_encrypted_bundle;
    }

    
    private string GetHash(HashAlgorithm hashAlgorithm, string input)
    {
        byte[] data = hashAlgorithm.ComputeHash(Encoding.UTF8.GetBytes(input));
        var sBuilder = new StringBuilder();

        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }

        return sBuilder.ToString();
    }

    private string Sha1Hash(string password)
    {
        return string.Join("", SHA1CryptoServiceProvider.Create().ComputeHash(Encoding.UTF8.GetBytes(password)).Select(x => x.ToString("x2")));
    }

    private string Encryptor(string TextToEncrypt, string strKey, string strIV)
    {
        byte[] PlainTextBytes = System.Text.Encoding.UTF8.GetBytes(TextToEncrypt);

        AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider();
        aesProvider.BlockSize = 128;
        aesProvider.KeySize = 256;
        aesProvider.Key = System.Text.Encoding.UTF8.GetBytes(strKey);
        aesProvider.IV = System.Text.Encoding.UTF8.GetBytes(strIV);
        aesProvider.Padding = PaddingMode.PKCS7;
        aesProvider.Mode = CipherMode.CBC;

        ICryptoTransform cryptoTransform = aesProvider.CreateEncryptor(aesProvider.Key, aesProvider.IV);
        byte[] EncryptedBytes = cryptoTransform.TransformFinalBlock(PlainTextBytes, 0, PlainTextBytes.Length);

        return Convert.ToBase64String(EncryptedBytes);
    }
    public static void Main(string[] args)
    {
        HashGenerator hashGenerator = new HashGenerator(); // HashGenerator sınıfından bir nesne oluşturun
    string hashKey = hashGenerator.GenerateHashKey("$2y$10$w/ODdbTmfubcbUCUq/ia3OoJFMUmkM1UVNBiIQIuLfUlPmaLUT1he", "Vepara-INVOICE-2", "VP12313356446464646", "Complete","217071ea9f3f2e9b695d8f0039024e64");

    Console.WriteLine("Hash Key:"+ hashKey);
    }
}

Kod Örnekleri

PHP Örneği
php
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://test.vepara.com.tr/ccpayment/payment/complete',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "merchant_key": "$2y$10$HmRgYosneqcwHj.UH7upGuyCZqpQ1ITgSMj9Vvxn.t6f.Vdf2SQFO",
    "invoice_id": "Cs2Ghy621dsa42f1D2",
    "order_id": 166254527653758,
    "status": "complete",
    "hash_key": "36a50210c8b2f19e:11629:eHBA0moN6bZAOSfVC6g9uapUAt1/zxnxko9x4uP73/TsqrQM+cCYSekMi/VnqMgjx3GpZLpBu5GW1BDIOyxigKz3oqBFQwItyA31S5bhHe5Q3rWLe9WBStaiDnFbWYfWbBL8p7BKlbKZKDCtDHQ41B+4PEIPhdpNCeihKmE2fto="
}',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxOSIsImp0aSI6ImJlNjNlZmJhZjJiNDc5NmRkMzI2ZjhhNTcxM2ZhNjVkYjcyMTU2Yzk3NmUxNzIxZTZmYTVjMmY5YWYyNzNhMmMxYTJkMDJiMTcwZGVmOWFlIiwiaWF0IjoxNjk0NTI3OTk2LjIyNTgsIm5iZiI6MTY5NDUyNzk5Ni4yMjU4LCJleHAiOjE2OTQ1MzUxOTYuMjE3NSwic3ViIjoiNiIsInNjb3BlcyI6W119.jj4eNr04wJBQyCugzlf04k_Bs-b0zcwpw0RYwAse_lEtpF6hXIMlsZVtyZOO4F68MhUTQszlMGKaBhosWnAnmefSK9dEbM4LqRdixS9qjKSYKnkJB840cgzv7QzM2ripJ8X-Qi_0YnfzpKphYylKWFDOX31CbXeT8GvHFIx4ZmqWREmADMEmVdklyvmCnGgDVzzyMg_suYTJ_IqqCmgf-hnkS7GDjlSqZc0o1YU7JjSOCx8V3szgKJg8Ey0S7SH2tJ1kBCihe_5lLlrOiMSrzSFHr55M0r1E5mund2RSJ4N0LE_nJjdiy-9wpZ9Bn2YTyZzrPHXsX-odc3gEW8ixSxEw_atX2I0041V9TtJnQeld3tyJofpI7xTCBto0Igj2afLm_JOc1_3kpuhLz0thvHGsf_knGzhljTtsk2JAnrdNpr9fqRkRLjvpfs8gjD1EvvwASmdMEK2yVecQmfFolca6eXBnMQTJMUn9cfi4ZBK5DnckSn5C-4-FDpHEWpH-twJbCmmR0Atnm-wYM557PQLETaLjB-Jauxm4XfHFoeMWTUbL3DbywysNVqI-8l3QQglIjSpAKRe2m74tlb-SF-06Yybm9Fx_a6vBzY5zdLeiJD4R9GMHw5vOVdKupSfSQ2sg1kvlzO0cV8W_AVUtxuBQNchbGfgrjzEeN5-wIZ4'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
Ruby Örneği
ruby
require "uri"
require "json"
require "net/http"

url = URI("https://test.vepara.com.tr/ccpayment/payment/complete")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxOSIsImp0aSI6ImJlNjNlZmJhZjJiNDc5NmRkMzI2ZjhhNTcxM2ZhNjVkYjcyMTU2Yzk3NmUxNzIxZTZmYTVjMmY5YWYyNzNhMmMxYTJkMDJiMTcwZGVmOWFlIiwiaWF0IjoxNjk0NTI3OTk2LjIyNTgsIm5iZiI6MTY5NDUyNzk5Ni4yMjU4LCJleHAiOjE2OTQ1MzUxOTYuMjE3NSwic3ViIjoiNiIsInNjb3BlcyI6W119.jj4eNr04wJBQyCugzlf04k_Bs-b0zcwpw0RYwAse_lEtpF6hXIMlsZVtyZOO4F68MhUTQszlMGKaBhosWnAnmefSK9dEbM4LqRdixS9qjKSYKnkJB840cgzv7QzM2ripJ8X-Qi_0YnfzpKphYylKWFDOX31CbXeT8GvHFIx4ZmqWREmADMEmVdklyvmCnGgDVzzyMg_suYTJ_IqqCmgf-hnkS7GDjlSqZc0o1YU7JjSOCx8V3szgKJg8Ey0S7SH2tJ1kBCihe_5lLlrOiMSrzSFHr55M0r1E5mund2RSJ4N0LE_nJjdiy-9wpZ9Bn2YTyZzrPHXsX-odc3gEW8ixSxEw_atX2I0041V9TtJnQeld3tyJofpI7xTCBto0Igj2afLm_JOc1_3kpuhLz0thvHGsf_knGzhljTtsk2JAnrdNpr9fqRkRLjvpfs8gjD1EvvwASmdMEK2yVecQmfFolca6eXBnMQTJMUn9cfi4ZBK5DnckSn5C-4-FDpHEWpH-twJbCmmR0Atnm-wYM557PQLETaLjB-Jauxm4XfHFoeMWTUbL3DbywysNVqI-8l3QQglIjSpAKRe2m74tlb-SF-06Yybm9Fx_a6vBzY5zdLeiJD4R9GMHw5vOVdKupSfSQ2sg1kvlzO0cV8W_AVUtxuBQNchbGfgrjzEeN5-wIZ4"
request.body = JSON.dump({
  "merchant_key": "$2y$10$HmRgYosneqcwHj.UH7upGuyCZqpQ1ITgSMj9Vvxn.t6f.Vdf2SQFO",
  "invoice_id": "Cs2Ghy621dsa42f1D2",
  "order_id": 166254527653758,
  "status": "complete",
  "hash_key": "36a50210c8b2f19e:11629:eHBA0moN6bZAOSfVC6g9uapUAt1/zxnxko9x4uP73/TsqrQM+cCYSekMi/VnqMgjx3GpZLpBu5GW1BDIOyxigKz3oqBFQwItyA31S5bhHe5Q3rWLe9WBStaiDnFbWYfWbBL8p7BKlbKZKDCtDHQ41B+4PEIPhdpNCeihKmE2fto="
})

response = https.request(request)
puts response.read_body
Python Örneği
python
import requests
import json

url = "https://test.vepara.com.tr/ccpayment/payment/complete"

payload = json.dumps({
  "merchant_key": "$2y$10$HmRgYosneqcwHj.UH7upGuyCZqpQ1ITgSMj9Vvxn.t6f.Vdf2SQFO",
  "invoice_id": "Cs2Ghy621dsa42f1D2",
  "order_id": 166254527653758,
  "status": "complete",
  "hash_key": "36a50210c8b2f19e:11629:eHBA0moN6bZAOSfVC6g9uapUAt1/zxnxko9x4uP73/TsqrQM+cCYSekMi/VnqMgjx3GpZLpBu5GW1BDIOyxigKz3oqBFQwItyA31S5bhHe5Q3rWLe9WBStaiDnFbWYfWbBL8p7BKlbKZKDCtDHQ41B+4PEIPhdpNCeihKmE2fto="
})
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxOSIsImp0aSI6ImJlNjNlZmJhZjJiNDc5NmRkMzI2ZjhhNTcxM2ZhNjVkYjcyMTU2Yzk3NmUxNzIxZTZmYTVjMmY5YWYyNzNhMmMxYTJkMDJiMTcwZGVmOWFlIiwiaWF0IjoxNjk0NTI3OTk2LjIyNTgsIm5iZiI6MTY5NDUyNzk5Ni4yMjU4LCJleHAiOjE2OTQ1MzUxOTYuMjE3NSwic3ViIjoiNiIsInNjb3BlcyI6W119.jj4eNr04wJBQyCugzlf04k_Bs-b0zcwpw0RYwAse_lEtpF6hXIMlsZVtyZOO4F68MhUTQszlMGKaBhosWnAnmefSK9dEbM4LqRdixS9qjKSYKnkJB840cgzv7QzM2ripJ8X-Qi_0YnfzpKphYylKWFDOX31CbXeT8GvHFIx4ZmqWREmADMEmVdklyvmCnGgDVzzyMg_suYTJ_IqqCmgf-hnkS7GDjlSqZc0o1YU7JjSOCx8V3szgKJg8Ey0S7SH2tJ1kBCihe_5lLlrOiMSrzSFHr55M0r1E5mund2RSJ4N0LE_nJjdiy-9wpZ9Bn2YTyZzrPHXsX-odc3gEW8ixSxEw_atX2I0041V9TtJnQeld3tyJofpI7xTCBto0Igj2afLm_JOc1_3kpuhLz0thvHGsf_knGzhljTtsk2JAnrdNpr9fqRkRLjvpfs8gjD1EvvwASmdMEK2yVecQmfFolca6eXBnMQTJMUn9cfi4ZBK5DnckSn5C-4-FDpHEWpH-twJbCmmR0Atnm-wYM557PQLETaLjB-Jauxm4XfHFoeMWTUbL3DbywysNVqI-8l3QQglIjSpAKRe2m74tlb-SF-06Yybm9Fx_a6vBzY5zdLeiJD4R9GMHw5vOVdKupSfSQ2sg1kvlzO0cV8W_AVUtxuBQNchbGfgrjzEeN5-wIZ4'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
Nodejs Örneği
javascript
const axios = require('axios');
let data = JSON.stringify({
  "merchant_key": "$2y$10$HmRgYosneqcwHj.UH7upGuyCZqpQ1ITgSMj9Vvxn.t6f.Vdf2SQFO",
  "invoice_id": "Cs2Ghy621dsa42f1D2",
  "order_id": 166254527653758,
  "status": "complete",
  "hash_key": "36a50210c8b2f19e:11629:eHBA0moN6bZAOSfVC6g9uapUAt1/zxnxko9x4uP73/TsqrQM+cCYSekMi/VnqMgjx3GpZLpBu5GW1BDIOyxigKz3oqBFQwItyA31S5bhHe5Q3rWLe9WBStaiDnFbWYfWbBL8p7BKlbKZKDCtDHQ41B+4PEIPhdpNCeihKmE2fto="
});

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://test.vepara.com.tr/ccpayment/payment/complete',
  headers: { 
    'Content-Type': 'application/json', 
    'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxOSIsImp0aSI6ImJlNjNlZmJhZjJiNDc5NmRkMzI2ZjhhNTcxM2ZhNjVkYjcyMTU2Yzk3NmUxNzIxZTZmYTVjMmY5YWYyNzNhMmMxYTJkMDJiMTcwZGVmOWFlIiwiaWF0IjoxNjk0NTI3OTk2LjIyNTgsIm5iZiI6MTY5NDUyNzk5Ni4yMjU4LCJleHAiOjE2OTQ1MzUxOTYuMjE3NSwic3ViIjoiNiIsInNjb3BlcyI6W119.jj4eNr04wJBQyCugzlf04k_Bs-b0zcwpw0RYwAse_lEtpF6hXIMlsZVtyZOO4F68MhUTQszlMGKaBhosWnAnmefSK9dEbM4LqRdixS9qjKSYKnkJB840cgzv7QzM2ripJ8X-Qi_0YnfzpKphYylKWFDOX31CbXeT8GvHFIx4ZmqWREmADMEmVdklyvmCnGgDVzzyMg_suYTJ_IqqCmgf-hnkS7GDjlSqZc0o1YU7JjSOCx8V3szgKJg8Ey0S7SH2tJ1kBCihe_5lLlrOiMSrzSFHr55M0r1E5mund2RSJ4N0LE_nJjdiy-9wpZ9Bn2YTyZzrPHXsX-odc3gEW8ixSxEw_atX2I0041V9TtJnQeld3tyJofpI7xTCBto0Igj2afLm_JOc1_3kpuhLz0thvHGsf_knGzhljTtsk2JAnrdNpr9fqRkRLjvpfs8gjD1EvvwASmdMEK2yVecQmfFolca6eXBnMQTJMUn9cfi4ZBK5DnckSn5C-4-FDpHEWpH-twJbCmmR0Atnm-wYM557PQLETaLjB-Jauxm4XfHFoeMWTUbL3DbywysNVqI-8l3QQglIjSpAKRe2m74tlb-SF-06Yybm9Fx_a6vBzY5zdLeiJD4R9GMHw5vOVdKupSfSQ2sg1kvlzO0cV8W_AVUtxuBQNchbGfgrjzEeN5-wIZ4'
  },
  data : data
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});
C# Örneği
c#
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://test.vepara.com.tr/ccpayment/payment/complete");
request.Headers.Add("Authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxOSIsImp0aSI6ImJlNjNlZmJhZjJiNDc5NmRkMzI2ZjhhNTcxM2ZhNjVkYjcyMTU2Yzk3NmUxNzIxZTZmYTVjMmY5YWYyNzNhMmMxYTJkMDJiMTcwZGVmOWFlIiwiaWF0IjoxNjk0NTI3OTk2LjIyNTgsIm5iZiI6MTY5NDUyNzk5Ni4yMjU4LCJleHAiOjE2OTQ1MzUxOTYuMjE3NSwic3ViIjoiNiIsInNjb3BlcyI6W119.jj4eNr04wJBQyCugzlf04k_Bs-b0zcwpw0RYwAse_lEtpF6hXIMlsZVtyZOO4F68MhUTQszlMGKaBhosWnAnmefSK9dEbM4LqRdixS9qjKSYKnkJB840cgzv7QzM2ripJ8X-Qi_0YnfzpKphYylKWFDOX31CbXeT8GvHFIx4ZmqWREmADMEmVdklyvmCnGgDVzzyMg_suYTJ_IqqCmgf-hnkS7GDjlSqZc0o1YU7JjSOCx8V3szgKJg8Ey0S7SH2tJ1kBCihe_5lLlrOiMSrzSFHr55M0r1E5mund2RSJ4N0LE_nJjdiy-9wpZ9Bn2YTyZzrPHXsX-odc3gEW8ixSxEw_atX2I0041V9TtJnQeld3tyJofpI7xTCBto0Igj2afLm_JOc1_3kpuhLz0thvHGsf_knGzhljTtsk2JAnrdNpr9fqRkRLjvpfs8gjD1EvvwASmdMEK2yVecQmfFolca6eXBnMQTJMUn9cfi4ZBK5DnckSn5C-4-FDpHEWpH-twJbCmmR0Atnm-wYM557PQLETaLjB-Jauxm4XfHFoeMWTUbL3DbywysNVqI-8l3QQglIjSpAKRe2m74tlb-SF-06Yybm9Fx_a6vBzY5zdLeiJD4R9GMHw5vOVdKupSfSQ2sg1kvlzO0cV8W_AVUtxuBQNchbGfgrjzEeN5-wIZ4");
var content = new StringContent("{\r\n    \"merchant_key\": \"$2y$10$HmRgYosneqcwHj.UH7upGuyCZqpQ1ITgSMj9Vvxn.t6f.Vdf2SQFO\",\r\n    \"invoice_id\": \"Cs2Ghy621dsa42f1D2\",\r\n    \"order_id\": 166254527653758,\r\n    \"status\": \"complete\",\r\n    \"hash_key\": \"36a50210c8b2f19e:11629:eHBA0moN6bZAOSfVC6g9uapUAt1/zxnxko9x4uP73/TsqrQM+cCYSekMi/VnqMgjx3GpZLpBu5GW1BDIOyxigKz3oqBFQwItyA31S5bhHe5Q3rWLe9WBStaiDnFbWYfWbBL8p7BKlbKZKDCtDHQ41B+4PEIPhdpNCeihKmE2fto=\"\r\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

Vepara