Tôi đã tích hợp api thẻ cào điện tử từ thecao247.vn như thế nào


Posted on 06-18-2018, in Categories: done, Share-code,


Sau đây mình sẽ hướng dẫn các bạn các bước cơ bản để tích hợp vào site api thẻ cào tự động.

Những file bạn cần để tích hợp vào site của mình, đầu tiền tạo file với tên callback.php theo link đăng ký trên 247 sai link sẽ không trả đúng kết quả nhé, tất nhiên các bạn vẫn có thể tùy biến để bảo mật hơn nữa ! Copy nội dung vào file vừa tạo :

<?php
    if(isset($_POST)) {
        if(isset($_POST['api_key'], $_POST['api_secret'])) {
            echo '<pre>';
            print_r($_POST);
            echo '</pre>';
            
            require_once('config.php');
            
            if($_POST['api_key'] == $key && $_POST['api_secret'] == $secret) { //Xác thực API, tránh kẻ lạ gửi dữ liệu ảo.
                if(isset($_POST['status'])) {
                    if($_POST['status'] > 0) {
                        //Duyệt thẻ thành công
                    } else {
                        //Duyệt thẻ thất bại
                        echo $_POST['description']; //Lý do thất bại.
                    }
                }
            }
        }
    }
    
?>

 

Sau khi đã tạo xong ta cần tạo thêm file thứ hai config.php để điền thông tin api kết nối với 247 nhé :

 

<?php
    $url_charge = 'https://thecao247.vn/cardapi/charge'; //url API gạch thẻ của hệ thống, vui lòng ko đổi.
    $key = 'xxxx'; //API key, lấy từ website thecao247.vn thay vào trong cặp dấu '
    $secret = 'zzzz'; //API secret lấy từ website thecao247.vn thay vào trong cặp dấu '
?>

Thay $key và $secret theo đúng với mã mà bạn đã được tạo tích hợp trên 247 nhé .

Bước tiếp theo tạo file với tên function.php để bỏ func vào đó hoặc nếu site bạn đã có thì nên tích hợp chung rồi gọi lệnh ra để cho việc code nhẹ nhàng hơn :D, chép nội dung như sau vào file vừa tạo :

 

<?php
    function curl_post($url, $data) {
        $dataPost = '';
        
        if(is_array($data))
            $dataPost = http_build_query($data);
        else
            $dataPost = $data;
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $dataPost);
        $actual_link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
        curl_setopt($ch, CURLOPT_REFERER, $actual_link);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec($ch);
        curl_close($ch);
        
        return $result;
    }
?>

 

Cuối cùng là file index.php để hiển thị nơi mà người dùng có thể thao tác nạp tiền trên này nhớ là code lại phẩn hiển thị thông báo cho đẹp hơn nhé vì đây chỉ là code hiển thị dạng json nên các bạn có thể đặt biến rồi gọi sẽ tiện hơn và tích hợp phần cộng trừ tiền thành viên ở file này luôn cũng tiện hơn nhé :

<?php
    if(isset($_POST['submit'])) {
        if(!isset($_POST['card_type']) || !isset($_POST['card_amount']) || !isset($_POST['serial']) || !isset($_POST['pin'])) {
            $err = 'Bạn cần nhập đầy đủ thông tin';
        } else {
            $type = $_POST['card_type'];
            $amount = $_POST['card_amount'];
            $seri = $_POST['serial'];
            $pin = $_POST['pin'];
            
            if($type == '' || $amount == '' || $seri == '' || $pin == '') {
                $err = 'Bạn cần nhập đầy đủ thông tin';
            } else {
                require_once('config.php'); //gọi đến file config.php để chèn vào code.
                require_once('function.php'); //gọi đến file function.php để chèn vào code.
                
                $dataPost = array(
                    'api_key' => $key,
                    'api_secret' => $secret,
                    'card_type' => $type,
                    'card_amount' => $amount,
                    'card_serial' => $seri,
                    'card_pin' => $pin,
                    'content' => 'noi dung' //Nội dung bạn có thể điền ID User trên website bạn để nhận biết khi có kết quả gạch thẻ trả về.
                );
                
                $post = curl_post($url_charge, $dataPost);
                
                if($post == '')
                    $err = 'Lỗi hệ thống, vui lòng thử lại sau';
                else {
                    $obj = json_decode($post, false);
                    if(isset($obj->status)) {
                        if($obj->status > 0) {
                            //Gửi thẻ thành công, đợi duyệt.
                            echo '<pre>';
                            print_r($obj);
                            echo '</pre>';
                        } else {
                            //Thất bại
                            echo '<pre>';
                            print_r($obj);
                            echo '</pre>';
                        }
                    } else 
                        $err = 'Lỗi hệ thống, vui lòng thử lại sau';
                }
            }
        }
    }
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Nạp thẻ</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
</head>
<body>
    <div class="container">
        <div class="row" style="margin-top: 50px;">
            <div class="col-md-8" style="float:none;margin:0 auto;">
                <form method="POST" action="">
                    <div class="form-group">
                        <label>Loại thẻ:</label>
                        <select class="form-control" name="card_type">
                            <option value="">Chọn loại thẻ</option>
                            <option value="1">Viettel</option>
                            <option value="2">Mobifone</option>
                            <option value="4">Vinaphone</option>
                            <option value="5">Gate</option>
                            <option value="6">Zing</option>
                            <option value="7">Megacard</option>
                            <option value="8">BIT</option>
                            <option value="9">Garena</option>
                        </select>
                    </div>
                    <div class="form-group">
                        <label>Mệnh giá:</label>
                        <select class="form-control" name="card_amount">
                            <option value="">Chọn mệnh giá</option>
                            <option value="10000">10.000</option>
                            <option value="20000">20.000</option>
                            <option value="30000">30.000</option>
                            <option value="50000">50.000</option>
                            <option value="100000">100.000</option>
                            <option value="200000">200.000</option>
                            <option value="300000">300.000</option>
                            <option value="500000">500.000</option>
                        </select>
                    </div>
                    <div class="form-group">
                        <label>Số seri:</label>
                        <input type="text" class="form-control" name="serial" />
                    </div>
                    <div class="form-group">
                        <label>Mã thẻ:</label>
                        <input type="text" class="form-control" name="pin" />
                    </div>
                    <div class="form-group">
                        <?php echo (isset($err)) ? '<div class="alert alert-danger" role="alert">'.$err.'</div>' : ''; ?>
                    </div>
                    <div class="form-group">
                        <button type="submit" class="btn btn-success btn-block" name="submit">NẠP NGAY</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js" integrity="sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T" crossorigin="anonymous"></script>
</body>
</html>


Tags:

admin

"Tôi không phải là dân lập trình chuyên nghiệp bởi kinh nghiệm mà tôi có được không nhiều, hầu hết các code mà tôi đã từng edit code cũng không là bao, tôi nhận thấy mình chỉ là một người yêu thích lập trình và chia sẻ mà thôi..."


Về Tôi

ĐĂNG KÝ NHẬN TIN QUA EMAIL

Social Media Network