API Pembayaran Datatrans untuk Pembayaran Aman

oleh Vincy. Terakhir diubah pada 28 September 2022.

Datatrans adalah salah satu sistem gateway pembayaran populer di Eropa untuk situs web e-commerce. Ini memberikan solusi pembayaran tanpa gesekan.

Gateway Pembayaran Datatrans sangat populer di negara-negara Eropa. Salah satu klien saya dari Jerman mengharuskan gateway pembayaran ini terintegrasi ke dalam toko online mereka.

Dalam tutorial ini, saya berbagi pengetahuan tentang mengintegrasikan Datatrans dalam aplikasi PHP. Ini akan menghemat waktu pengembang untuk melakukan penelitian dengan dokumentasi bentuk panjang.

Ada banyak opsi integrasi yang disediakan oleh gateway pembayaran ini.

  1. Redirect dan lightbox
  2. Bidang aman
  3. SDK Seluler
  4. Titik akhir API

Dalam tutorial ini, kita akan melihat opsi integrasi pertama untuk menyiapkan gateway pembayaran Datatrans. Kami telah melihat banyak contoh integrasi gateway pembayaran di PHP di artikel sebelumnya.

Contoh kerja berikut membantu untuk memahami berbagai hal dengan mudah. Sebelum melihat contoh, dapatkan merchant id dan password Datatrans. Ini akan berguna untuk tujuan otentikasi saat mengakses API pembayaran ini.

pembayaran datatrans api

Dapatkan id dan kata sandi pedagang Datatrans

Berikut langkah-langkah untuk mendapatkan merchant id dan password akun Datatrans Anda.

    1. Buka akun sandbox Datatrans dan verifikasi melalui email.
    2. Siapkan akun Anda dengan memilih nama pengguna, nama grup (Login) dan kata sandi.
    3. Setelah Mengatur itu akan menampilkan rincian berikut:
      • Kredensial masuk.
      • URL kotak pasir dari dasbor admin.
      • Id Pedagang Datatrans untuk Web, SDK Seluler.
    4. Kunjungi URL kotak pasir dan masuk menggunakan kredensial yang didapat di langkah 3.
    5. Klik Ubah Pedagang dan Pilih pedagang untuk melihat dasbor.
    6. Buka Administrasi UPP -> Keamanan untuk menyalin (Id Marchant)Nama pengguna dan Kata sandi untuk akses API.

Saat kami melihat integrasi pembayaran CCAvenue, itu juga mencantumkan beberapa langkah untuk mendapatkan id pedagang dari dasbor.

kredensial akun pedagang datatrans

Konfigurasi aplikasi

File konfigurasi ini dibuat untuk contoh ini agar kunci API digunakan di seluruh kode.

Ini mengkonfigurasi URL yang harus dipanggil oleh server DataTrans setelah pembayaran.

Config.php (Konfigurasi detail otentikasi Datatrans)

<?php
class Config {

    const WEB_ROOT = 'http://localhost/pp-article-code/data-trans/';

    const MERCHANT_ID = 'YOUR_MERCHANT_ID';

    const PASSWORD = 'YOUR_MERCHANT_DASHBOARD_PASSWORD';

    const SUCCESS_URL = Config::WEB_ROOT . 'return.php';

    const CANCEL_URL = Config::WEB_ROOT . 'return.php?status=cancelled';

    const ERROR_URL = Config::WEB_ROOT . 'return.php?status=error';
}
?>

Tampilkan opsi “Bayar sekarang”

Pertama, halaman arahan menunjukkan ubin produk dengan opsi pembayaran. Ini akan menampilkan tombol “Bayar melalui DataTrans” di browser.

Saat mengklik tombol ini, skrip AJAX akan dipanggil untuk mendapatkan id transaksi.

Halaman ini menyertakan library JavaScript Datatrans untuk memulai pembayaran dengan id transaksi.

index.php (Ubin produk dengan tombol bayar)

<HTML>
<HEAD>
<TITLE>Datatrans Payments API for Secure Payment</TITLE>
<link rel="stylesheet" type="text/css" href="https://phppot.com/php/datatrans-api-payment/css/style.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"
    integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
    crossorigin="anonymous"></script>

</HEAD>
<BODY>

    <div class="container">
        <h1>Datatrans Payments API for Secure Payment</h1>
        <div class="outer-container">
            <img src="image/camera.jpg" alt="camera image">
            <div class="inner-container">

                <p class="text-style">A6900 MirrorLess Camera</p>


                <p class="price-color-align">
                    $289.61<input type="hidden" name="amount"
                        id="amount" value="289.61" />
                </p>

                <input type="button" id="pay-now" class="pay-button"
                    value="Pay via DataTrans" onClick="initiate()" />
            </div>
        </div>
    </div>
    <script
        src="https://pay.sandbox.datatrans.com/upp/payment/js/datatrans-2.0.0.js"></script>
</BODY>
</HTML>

Dapatkan id transaksi dan lanjutkan pembayaran melalui API

Itu memulai() fungsi memposting jumlah ke file PHP untuk melakukan pembayaran Datatrans.

Akibatnya, PHP akan mengembalikan id transaksi untuk memproses pembayaran lebih lanjut.

Itu lanjutkanPembayaran() fungsi memanggil Datatrans JavaScript API untuk memulai pembayaran. Ini akan menampilkan overlay Datatrans dengan opsi kartu untuk memilih metode pembayaran.

index.php (script AJAX untuk memanggil inisiasi Datatrans)

function initiate() {
	$.ajax({
		method: "POST",
		url: "initialize-datatrans-ajax.php",
		dataType: "JSON",
		data: { "amount": $("#amount").val() }
	})
		.done(function(response) {
			if (response.responseType == 'success') {
				proceedPayment(response.transactionId);
			} else {
				alert(response.responseType + ": " + response.message);
			}
		});

};

function proceedPayment(transactionId) {
	Datatrans.startPayment({
		transactionId: transactionId,
		'opened': function() { console.log('payment-form opened'); },
		'loaded': function() { console.log('payment-form loaded'); },
		'closed': function() { console.log('payment-page closed'); },
		'error': function() { console.log('error'); }
	});
}

Lakukan transaksi pembayaran untuk mendapatkan id transaksi pembayaran Datatrans

File ini adalah endpoint PHP yang dipanggil melalui skrip AJAX untuk mendapatkan id transaksi Datatrans.

Ini memanggil DatatransPaymentLayanan untuk memposting permintaan cURL ke Datatrans API. Itu meminta untuk memulai pembayaran dan menerima id transaksi dari server Datatrans.

Keluaran ini akan dibaca dalam panggilan balik sukses AJAX untuk memulai pembayaran melalui pustaka JavaScript.

inisialisasi-datatrans-ajax.php

<?php
require_once 'DatatransPaymentService.php';
$dataTransPaymentService = new DatatransPaymentService();
$amount = $_POST["amount"];
$orderId = rand();
$result = $dataTransPaymentService->initializeTransaction($amount, $orderId);
print $result;
?>

Layanan transaksi pembayaran datatrans untuk memanggil API melalui PHP cURL

Panggilan layanan ini berisi: inisialisasiTransaksi() metode yang menyiapkan permintaan cURL di PHP ke Datatrans API.

Itu meneruskan jumlah, mata uang, dan detail lainnya ke titik akhir API untuk meminta id transaksi.

DatatransPaymentService.php

<?php

class DatatransPaymentService
{
    public function initializeTransaction($amount, $orderId)
    {
        $url="https://api.sandbox.datatrans.com/v1/transactions";

        require_once __DIR__ . '/Config.php';

        $amount = $amount * 100;

        $postFields = json_encode(array(
            'amount' => $amount,
            'currency' => "USD",
            'refno' => $orderId,
            'redirect' => [
                'successUrl' => Config::SUCCESS_URL,
                "cancelUrl" => Config::CANCEL_URL,
                "errorUrl" => Config::ERROR_URL
            ]
        ));

        $key = Config::MERCHANT_ID . ':' . Config::PASSWORD;
        $keyBase64 = base64_encode($key);

        $ch = curl_init();

        curl_setopt_array($ch, array(
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_POSTFIELDS => $postFields,
            CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
            CURLOPT_HTTPHEADER => array(
                "Authorization: Basic " . $keyBase64,
                "Content-Type: application/json"
            )
        ));

        $curlResponse = curl_exec($ch);

        $curlJSONObject = json_decode($curlResponse);

        if (empty($curlResponse)) {
            $curlError = curl_error($ch);
        } else if (! empty($curlJSONObject->error)) {
            $curlError = $curlJSONObject->error->code . ": " . $curlJSONObject->error->message;
        }
        curl_close($ch);

        if (empty($curlJSONObject->transactionId)) {
            $result = array(
                'responseType' => "Error",
                'message' => $curlError
            );
        } else {
            $result = array(
                'responseType' => "success",
                'transactionId' => $curlJSONObject->transactionId
            );
        }

        $result = json_encode($result);

        return $result;
    }
}
?>

Hubungi URL aplikasi setelah pembayaran

kembali.php

<HTML>
<HEAD>
<TITLE>Datatrans payment status notice</TITLE>
</HEAD>
<BODY>
    <div class="text-center">
<?php
if (! empty($_GET["status"])) {
    ?>
    <h1>Something wrong with the payment process!</h1>
        <p>Kindly contact admin with the reference of
	your transaction id <?php echo $_GET["datatransTrxId"]; ?></p>
<?php
} else {
    ?>
    <h1>Your order has been placed</h1>
        <p>We will contact you shortly.</p>
<?php
}
?>
</div>
</BODY>
</HTML>

Unduh

Kembali ke Atas

[ad_2]
Source link