Cách gọi sử dụng RESTful API Caresoft trong wordpress chi tiết

Thảo luận trong 'Mã nguồn mở Wordpress' bắt đầu bởi admin, 18/1/21.

  1. admin

    admin Phạm Công Sơn Thành viên BQT

    Tham gia ngày:
    22/5/13
    Bài viết:
    4,397
    Đã được thích:
    1,060
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Bài viết về Cách gọi sử dụng RESTful API Caresoft trong wordpress chi tiết cách cài đặt vào trong wordpress để truyền dữ liệu vào API của bên phần mềm Caresoft bằng Comment, Contact Form 7, Font liên hệ đặt hàng,... tất tần tật chỉ cần xem ví dụ và cách làm có thể làm được tất cả nhé.

    Ví dụ dưới đây mình hướng dẫn lấy dữ liệu từ Contact Form 7. Thông tin đặt hàng của khách hàng, truyền tới API của phần mềm Caresoft. Lấy ở dữ liệu của bất kỳ form nhập liệu nào tương tự.

    contact-form-7.jpg

    Bước 1: Đầu tiên các bạn phải đọc tài liệu của bên cung cấp dịch vụ API trước link ở dưới:
    Bước 2: Mình sử dụng thư viện RestClient để gọi API nên các bạn tải thư viện ở 2 trong 2 link dưới về.
    Bước 3: Tạo file itseovnajax.js để lắng nghe thao tác từ người dùng để gọi Ajax xử lý API. Và copy nội dung sau bỏ vào:
    HTML:
    (function ($) {
        $(document).ready(function () {
           //Box đặt hàng tìm tới mở cái error xem có bị lỗi gì phát sinh không?
           //đặt hàng
           // wpcf7-id-ctf7 : id của form nhập liệu của Contact Form 7, wpcf7-submit: là nút đặt mua ngay, submit ok, đồng ý
          //Lăng nghe sự kiện submit/click của người dùng, lấy thông tin người dùng nhập gửi vào Ajax truyền tới hàm PHP xử lý API
            $('[id*="wpcf7-id-ctf7"] .wpcf7-submit').on('click', function () {
                var name = $("input[name=your-name]").val();
                var email = $("input[name=your-email]").val();
                var phone = $("input[name=your-phone]").val();
                var comment = "Số lượng: ";
                comment = comment + $("input[name=your-number]").val() + " ";
                comment = comment + "Địa chỉ: " + $("input[name=your-address]").val();
                jQuery.post(
                    ajax_obj.ajax_url,
                    {
                        'action': 'PUT_ORDER_Call_Center',
                        'email' : email,
                        'phone' : phone,
                        'name' : name,
                        'comment' : comment,
                        nonce : ajax_obj.smart_nonce
                    },
                    function (response) {
                        var data = jQuery.parseJSON(response);
                        if(data.code == "ok"){
                            alert("Yêu cầu đặt hàng của bạn đã gửi thành công.");
                            $('[id*=wpcf7-id-ctf7"] .wpcf7-form')[0].reset();
                        }
                    }
                );
            });
        });
    }) (jQuery);
    
    Bước 4: Truy cập vào Function.php của themes chèn code sau xử lý lệnh PHP gọi API truyền dữ liệu tới API
    PHP:
    //API: gọi javascrip nhận file javascript thực hiện chờ đợi dữ liệu từ người dùng truyền vào file

    add_action('after_setup_theme''itseovn_theme_setup');

    if ( ! 
    function_exists'itseovn_theme_setup' ) ){
        function 
    itseovn_theme_setup(){
            
    add_action'wp_enqueue_scripts''itseovn_ajax_script');
        }
    }
    function 
    itseovn_ajax_script() {
        
    wp_enqueue_script('itseovn_ajax'get_template_directory_uri() . '/js/itseovnajax.js', array(), '1.0.0'true );
        
    wp_localize_script'itseovn_ajax''ajax_obj',
            array( 
    'ajax_url' => admin_url'admin-ajax.php' ), 'smart_nonce' => wp_create_nonce'itseovnajax-nonce' )  ) );
    }

    ///API: Nhận lệnh truyền về từ file /js/itseovnajax.js trả về
    /// wp_ajax_ và wp_ajax_nopriv_ khai báo gọi ajax của wordpress
    add_action('wp_ajax_PUT_ORDER_Call_Center''PUT_ORDER_Call_Center');
    add_action('wp_ajax_nopriv_PUT_ORDER_Call_Center''PUT_ORDER_Call_Center');

    function 
    PUT_ORDER_Call_Center(){
        
    //kiển tra xem
        
    $nonce $_POST['nonce'];
        if ( ! 
    wp_verify_nonce$nonce'itseovnajax-nonce' ) ){
            echo 
    '{ "code" : "errors"}';
            die ();
        }
        
    //Thông tin api từ bên nha cung cấp cho bạn
        //apiitseovn.com: là tên user đăng nhập tại CARESOFT, mục Amin -> Dịch Vụ -> API để tạo mới (hoặc xem hình dưới)
        
    try{
            
    $api = new RestClient([
                
    'base_url' => "https://api.caresoft.vn/apiitseovn.com/api/v1/",
                
    'headers' => ['Authorization' => 'Bearer gTuqYsnZNIELrPw''Content-Type' => 'application/json']
            ]);
        }
        catch(
    Exception $ex)
        {
            echo 
    '{ "code" : "'$ex->getMessage() .'"}';
            die ();
        }
     
        
    //Xem tài liệu CARESOFT tại đây: https://drive.google.com/file/d/1qypYqFtdT7uFodM_R64hbU98U4ztnJIC/view
        //Lấy các tham số từ Ajax truyền về, gán vào các biến truyền đi tới API
        
    $cus_name $_POST['name'];
        
    $cus_email = isset($_POST['email']) ? $_POST['email'] : '';
        
    $cus_phone $_POST['phone'];
        
    $cus_comment $_POST['comment'];

        
    //Truyền dữ liệu vào các biến của API (tùy vào nhà cung cấp API mà có các biến khác nhau, đọc tài liệu nhà cung cấp đưa để biết rõ)
       
        
    $tickets = array('ticket' => array(
                
    'ticket_subject' => 'Đặt hàng từ Nacurgo Gel (nacurgogel.com)',
                
    'ticket_comment' =>  $cus_comment,
                
    'ticket_source' => 'Web',
                
    //'assignee_id' => 1234, //ID của USER
                
    'group_id' => 6792//Nhóm, đổi thành nhóm của bạn
                
    'email' =>  $cus_email,
                
    'phone' =>  $cus_phone,
                
    'username' =>  $cus_name
            
    ));

        
    //Gửi ticket lên service
        
    try
        {
            
    $result $api->post("tickets",$tickets); //truyền dạng tickets, còn dạng khác giống vậy, đọc tài liệu bên nhà cung cấp dịch vụ API để biết thêm
            //Kiểm tra kết quả trả về từ API
            
    if($result->info->http_code == 200){
                
    //Service trả về dạng chuỗi json
                
    echo json_encode($result->decode_response());
            }
            else
            {
                echo 
    json_encode($result->decode_response());
            }
        }
        catch(
    Exception $ex)
        {
            echo 
    '{ "code" : "'$ex->getMessage() .'"}';
        }
        die ();
    }

    require(
    'includes/restclient.php'); //include thư viện gọi api của restclient
    api-cua-caresoft.jpg

    Như vậy là xong rồi, giờ hãy test dữ liệu xem đã vào chưa nhé.
     
    Cảm ơn đã xem bài:

    Cách gọi sử dụng RESTful API Caresoft trong wordpress chi tiết

  2. admin

    admin Phạm Công Sơn Thành viên BQT

    Tham gia ngày:
    22/5/13
    Bài viết:
    4,397
    Đã được thích:
    1,060
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Cách 2: sử dụng phần mềm Postman để test và tải code về add vào web ở bước 4 bên trên, áp dụng cho mọi ngôn ngữ mà các developer chuyên nghiệp thường sử dụng.

    Tải phần mềm về tại đây: https://www.postman.com/downloads/

    api-cua-caresoft-tren-postman.jpg

    Code test phần mềm Caresoftcho trường tickets.
    HTML:
    {
     "ticket": {
     "ticket_subject": "Test API caresoft",
     "ticket_comment": "Khách hàng liên hệ tại nacugol... nội dung",
     "email": "phamcongson2003@gmail.com",
     "phone": "0973002201",
     "service_id": "95035783",
     "group_id": 6792,
     "username": "Sơn test API",
     "ticket_priority": "urgent"
     }
    }
    
    api-cua-caresoft-tren-postman-send-thanh-cong.jpg

    api-cua-caresoft-tren-postman-add-to-wordpress.jpg
     
    Chỉnh sửa cuối: 19/1/21


Like và Share ủng hộ ITSEOVN