Hướng dẫn tích hợp thanh toán nạp thẻ sử dụng PHP

Thanh toán trực tuyến qua Visa, Paypal có lẽ cũng không còn quá xa lạ với mọi người rồi. Hôm này mình sẽ cùng các bạn tìm hiểu một công việc cũng tương tự như vậy đó là thanh toán qua nạp thẻ mà ai cũng đã từng ít nhất 10 lần làm công việc đó cho điện thoại của mình (hihi) Gần đây mình có cùng một số người bạn phát triển một ứng dụng trong đó có chức năng nạp thẻ Scoin, ban đầu thì cũng khá băn khoăn vì chưa làm nó bao giờ. Cơ mà tìm hiểu ra thì nó lại khá đơn giản, hôm này mình sẽ hướng dẫn lại các tích hợp nó lên websites bằng PHP. Giới thiệu đơn giản vậy thôi, chúng ta bắt đầu nào. Bạn cần chuẩn bị những gì ?

1. Đăng ký tài khoản kết nối API của nhà cung cấp

Ở đây việc khó khăn không phải ở việc code nó như thế nào, khó khăn là làm sao bạn tìm được một nhà cung cấp honest, họ tôn trọng mà đặt lợi ích của bạn lên hàng đầu. Cái mình đang nói chính là tỉ lệ ăn chia % đó (70/30, 95/5, ...). Vì khi lựa chọn của bạn không tốt nó sẽ ảnh hưởng trực tiếp đến lợi nhuận của bạn. Hiện nay thì có khá nhiều công ty cung cấp service này như VTC, Gamebank, Mypay...

Ở đây mình lựa chọn PAYCARD365 cho ứng dụng của mình. Sau khi bạn đăng ký dịch vụ, bạn sẽ nhận được tài khoản giúp cho việc kết nối tới API và thư viện sdk để làm việc với cổng thanh toán của họ. Chúng ta bắt đầu luôn nào, mình giả sử là bạn đã có tài khoản và sdk kết nối với cổng thanh toán của họ rồi nhé 😄

2. Tạo view nạp thẻ

Phần view này thì tùy vào thiết kế của mỗi ứng dụng bạn, ở đây mình tạo 1 form đơn giản thôi

HTML
<div style="margin: 0 auto; width: 500px;">
	<h3 style="margin-bottom: 20px;"><span class="label label-primary">Nạp thẻ cào trực tuyến</span></h3>
	<form action="index.php" method="post" id="fnapthe" name="fnapthe">
		<input  type="hidden" name="fnapthe" value="ok"/>
		<table class="table table-condensed table-bordered">
			<tbody>                        
				<tr>
					<td>Loại thẻ</td>
					<td>
						<select name="card_type_id" style="width: 390px;border: 1px solid #ccc;height: 30px;">
							<option value="1">Viettel</option>
							<option value="2">Mobiphone</option>
							<option value="3">Vinaphone</option>
							<option value="4">Gate</option>
							<option value="6">Vietnammobile</option>
							<option value="7">Megacard</option>
							<option value="8">OnCash</option>
						</select>
					</td>
				</tr>
				<tr>
					<td>Mã thẻ</td>
					<td><input type="text" value="" name="pin" style="width: 390px;border: 1px solid #ccc;height: 30px;"/></td>
				</tr>
				<tr>
					<td>Seri</td>
					<td><input type="text" value="" name="seri" style="width: 390px;border: 1px solid #ccc;height: 30px;"/></td>
				</tr>
				
			</tbody>
		</table>
		<center>
			<input class="btn btn-primary" type="submit" value="Nạp thẻ"/> 
			<div id="loading_napthe" style="display: none; float: center"> &nbsp;Xin mời chờ...</div><br>
			<div class="label label-success" id="msg_success_napthe"></div><br>
			<div class="label label-danger" id="msg_err_napthe"><?php echo $status; ?></div><br>
		</center>
	</form>
</div>

3. Kết nối API và xử lý nạp thẻ phía server

Đăng ký thông tin kết nối API + SDK

PHP
<?php
require_once dirname(__FILE__) . '/nusoap/nusoap.php';
require_once('VDCO_SOAPClient.class.php');
$urlApi = "https://**********************************************"
$username = "username****************";
$password = "password****************";
$partnerId = "partnerId***";
$mpin = "mpin***";
$email = "*****@gmail.com";
$phone = '0167******';

Xử lý dữ liệu khi nhận được thông tin submit

PHP

if (isset($_POST['fnapthe'])) {
	$TxtCard = intval($_POST['card_type_id']);
	$TxtMaThe = mysql_escape_string($_POST['pin']);
	$TxtSeri= mysql_escape_string($_POST['seri']);
    /* Check loai the */
	switch ($TxtCard) {
		case 1:
			$TxtType = 'VTT';
			break;
		case 2:
			$TxtType = 'VMS';
			break;
		case 3:
			$TxtType = 'VNP';
			break;
		case 4:
			$TxtType = 'FPT';
			break;
		case 5:
			$TxtType = 'VTC';
			break;
	}     
    $client = new VMS_Soap_Client($urlApi, $username, $password, $partnerId, $mpin);
	$target = $username . '_' . rand() . rand();
    /*Thong tin card*/
	$dataCard = $TxtSeri.':'.$TxtMaThe.'::'.$TxtType;
    /*Gưi thong tin nap the*/
	$result = $Client->doCardCharge($target, $dataCard, $email, $phone);
}

Công việc tới đây coi như đã hoàn thành, kết quả của request nạp thẻ sẽ được trả về khi gọi hàm doCardCharge(); . Việc còn lại của bạn là xử lý kết quả trả về để hiển thị cho người dùng.

Kết quả:

Cảm ơn các bạn đã đọc bài viết, nó quả đơn giản so với tiêu đề bài viết phải không =)), mình giật tít câu view ý mà =)) Rất mong bài viết có ích với bạn 😄

All Rights Reserved