API Pembayaran Datatrans untuk pembayaran yang aman

Programming

Oleh Vinci terakhir diubah pada 28 September 2022.

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

Payment gateway datatrans sangat populer di negara-negara Eropa. Salah satu klien saya dari Jerman membutuhkan gateway pembayaran ini terintegrasi ke dalam toko online mereka.

Dalam tutorial ini, saya akan berbagi pengetahuan tentang integrasi Datatrans dalam aplikasi PHP. Ini akan menghemat waktu pengembang untuk meneliti dokumen yang panjang.

Banyak opsi integrasi yang disediakan oleh gateway pembayaran ini.

  1. Pengalihan dan lightbox
  2. Alasan 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 contoh integrasi gateway pembayaran di PHP di artikel sebelumnya.

Contoh kerja berikut membantu untuk memahami berbagai hal dengan mudah. Dapatkan ID bisnis dan kata sandi Datatrans Anda sebelum Anda melihat contohnya. Ini akan berguna untuk tujuan otentikasi saat mengakses API pembayaran ini.

Transfer data API pembayaran

Dapatkan ID bisnis dan kata sandi Datatrans Anda

Langkah-langkah berikut akan mengarah ke ID Bisnis dan Kata Sandi Akun DataTrans Anda.

    1. Buka akun sandbox Datatrans dan verifikasi melalui email.
    2. Atur akun Anda dengan memilih nama pengguna, nama grup (login) dan kata sandi.
    3. Setelah pengaturan, itu akan menunjukkan detail berikut:
      • Validitas Masuk.
      • Alamat kotak pengaman dasbor manajemen.
      • ID Bisnis Datatrans untuk Web, SDK Seluler.
    4. Kunjungi alamat web Sandbox dan masuk menggunakan kredensial yang diterima di langkah 3.
    5. Klik Ubah pedagang Dan pilih penjual untuk melihat dasbor.
    6. ke Administrasi UPP -> Keamanan untuk menyalin (ID Pedagang) nama pengguna dan Kata sandi Untuk mengakses API

Saat kami melihat integrasi pembayaran CCAvenue, beberapa langkah juga tercantum untuk mendapatkan ID penjual dari dasbor.

Kredit akun bisnis datatrans

Konfigurasi program

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

Mengonfigurasi URL yang akan 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 menampilkan ubin produk dengan opsi pembayaran. Ini akan menampilkan tombol “Bayar via DataTrans” di browser.

Mengklik tombol ini akan memanggil skrip AJAX untuk mendapatkan ID transaksi.

Halaman ini berisi library JavaScript Datatrans untuk memulai pembayaran dengan ID transaksi.

index.php (ubin produk dengan tombol pembayaran)

<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 lakukan pembayaran melalui API

ini Memulai() Fungsi mengirimkan jumlah ke file PHP untuk memulai pembayaran Datatrans.

Akibatnya, PHP mengembalikan ID transaksi untuk pemrosesan pembayaran lebih lanjut.

partikel untuk objek langsung lanjutkan pembayaran () Fungsi Datatrans memanggil JavaScript API untuk memulai pembayaran. Untuk memilih metode pembayaran, ditampilkan overlay Datatrans dengan opsi kartu.

index.php (script AJAX untuk memanggil start 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 menerima ID transaksi pembayaran Datatrans

File ini merupakan endpoint PHP yang dipanggil melalui script AJAX untuk mendapatkan ID transaksi Datatrans.

panggilan Layanan Pembayaran Datatrans Untuk mengirim permintaan cURL ke Datatrans API. Permintaan memulai pembayaran dan menerima ID transaksi dari server Datatrans.

Output ini dibaca pada panggilan AJAX yang berhasil untuk memulai checkout melalui perpustakaan 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 pemanggilan API melalui PHP cURL

Ini termasuk panggilan layanan Inisialisasi Transaksi() Metode yang menyiapkan permintaan cURL di PHP ke Datatrans API.

Itu mengirim 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


Source link

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *