Tích hợp thanh toán Việt Nam Đồng (VNĐ) vào PayPal trong WooCommerce

Nếu bạn chưa biết thì Việt Nam Đồng (VNĐ) không phải là một đơn vị tiền tệ được hỗ trợ chính thức bởi PayPal. Do đó, trong WooCommerce, nếu thiết lập đơn vị tiền tệ là VNĐ thì khách hàng sẽ không thể thanh toán được qua cổng thanh toán PayPal/Credit Standard. Để giải quyết tình trạng này, chúng ta cần phải chuyển đổi VNĐ sang 1 đơn vị tiền tệ khác được PayPal hỗ trợ, chẳng hạn như USD.

don-vi-tien-te-paypal-chinh-thuc-ho-tro-1
Cập nhật những đơn vị tiền tệ được Paypal hỗ trợ chính thức

Trong bài viết hôm nay, mình sẽ hướng dẫn cho các bạn cách kích hoạt cổng thanh toán PayPal cho VNĐ một cách đơn giản nhất.

Tham khảo thêm:

Tích hợp thanh toán Việt Nam Đồng (VNĐ) qua PayPal hoặc Credit card

Có 2 cách khác nhau để làm điều này: sử dụng code (thủ công) hoặc sử dụng plugin (tự động)

Sử dụng code (thủ công)

1. Đầu tiên, các bạn cần phải chèn đoạn code sau đây vào file functions.php của theme bạn đang sử dụng. Nếu không thạo khi làm việc với các file, bạn cũng có thể chèn nó thông qua plugin Code Snippets để tránh phát sinh lỗi và code bị xóa mất lúc nâng cấp theme.

/*Step 1 Code to use VND currency to display Viet Nam Dong in WooCommerce:*/
add_filter( 'woocommerce_currencies', 'add_vnd_currency' );  
function add_vnd_currency( $currencies ) {  
    $currencies['VND'] = __( 'Viet Nam Dong', 'woocommerce' );  
    return $currencies;  
}
/*Step 2 Code to add VND currency symbol in WooCommerce:*/
add_filter('woocommerce_currency_symbol', 'add_vnd_currency_symbol', 10, 2);  
function add_vnd_currency_symbol( $currency_symbol, $currency ) {  
    switch( $currency ) {  
        case 'VND': $currency_symbol = 'VND'; break;  
    }  
    return $currency_symbol;  
}  
add_filter( 'woocommerce_paypal_supported_currencies', 'add_vnd_paypal_valid_currency' );       
function add_vnd_paypal_valid_currency( $currencies ) {    
    array_push ( $currencies , 'VND' );  
    return $currencies;    
}   
/*Step 3 – Code to change 'VND' currency to ‘USD’ before checking out with Paypal through WooCommerce:*/
add_filter('woocommerce_paypal_args', 'convert_vnd_to_usd', 11 );  
function convert_vnd_to_usd($paypal_args){
    if ( $paypal_args['currency_code'] == 'VND'){  
        $convert_rate = 24567; //Set converting rate
        $paypal_args['currency_code'] = 'USD'; //change VND to USD  
        $i = 1;  
         
        while (isset($paypal_args['amount_' . $i])) {  
            $paypal_args['amount_' . $i] = round( $paypal_args['amount_' . $i] / $convert_rate, 2);
            ++$i;  
        }  
        if ( $paypal_args['shipping_1'] > 0 ) {
            $paypal_args['shipping_1'] = round( $paypal_args['shipping_1'] / $convert_rate, 2);
        }
         
        if ( $paypal_args['discount_amount_cart'] > 0 ) {
            $paypal_args['discount_amount_cart'] = round( $paypal_args['discount_amount_cart'] / $convert_rate, 2);
        }
        if ( $paypal_args['tax_cart'] > 0 ) {
            $paypal_args['tax_cart'] = round( $paypal_args['tax_cart'] / $convert_rate, 2);
        }
    }
return $paypal_args;  
}

Lưu ý: ở dòng 24, các bạn có thể thay thế 24567 bằng tỉ giá cho phù hợp. Trong code bên trên, mình để tỉ giá $1 = 24.567 VNĐ cập nhật mới nhất.

2. Truy cập WooCommerce => Settings => General => kéo xuống khu vực Currency options và thiết lập như hình bên dưới.

thiet-lap-don-vi-tien-te-vnd

Trong đó:

  • Currency: đơn vị tiền tệ.
  • Currency position: vị trí hiển thị của đơn vị tiền tệ.
  • Thousand separator: dấu phân tách phần ngàn. Tại Việt Nam, chúng ta sử dụng dấu (.) thay vì dấu phẩy (,).
  • Decimal separator: dấu phân tách thập phân. Tại Việt Nam, chúng ta sử dụng dấu (,) thay vì dấu chấm (.).
  • Number of decimals: số lượng chữ số đằng sau dấu phân tách thập phân. Chúng ta để là 0 vì trong VNĐ hiện tại không có đơn vị nào nhỏ hơn 1 VNĐ.

3. Chuyển qua tab Payments, các bạn sẽ thấy cổng thanh toán PayPal đã được kích hoạt và giờ đây các bạn đã có thể click vào nút Manage để tiến thành thiết lập thông tin.

cong-thanh-toan-paypal-standard

Nếu không nhìn thấy cổng thanh toán PayPal Standard, các bạn chèn đoạn code sau đây vào file functions.php của theme bạn đang sử dụng. Nếu không thạo khi làm việc với các file, bạn cũng có thể chèn nó thông qua plugin Code Snippets để tránh phát sinh lỗi và code bị xóa mất lúc nâng cấp theme.

add_filter( 'woocommerce_should_load_paypal_standard', '__return_true' );
Sử dụng plugin (tự động)

Ưu điểm của phương pháp này là rất đơn giản và bạn không cần phải chỉnh sửa nếu không rành về code.

1. Đầu tiên, các bạn cần cài đặt và kích hoạt một plugin có tên là Woo Viet – WooCommerce for Vietnam (download).

2. Tiếp theo, truy cập WooCommerce => Woo Viet => Tích chọn Hỗ trợ cho VND cho cổng thanh toán PayPal Standard => Thiết lập như hình bên dưới.

Nếu không nhìn thấy tích chọn này, các bạn chèn đoạn code sau đây vào file functions.php của theme bạn đang sử dụng:

add_filter( 'woocommerce_should_load_paypal_standard', '__return_true' );

Trong đó:

  • USD: lựa chọn đơn vị tiền tệ được PayPal hỗ trợ, cụ thể ở đây là USD.
  • 24567: tỉ giá chuyển đổi. Ví dụ mình để $1 = 24567 VNĐ

Click vào nút Save Changes để lưu lại.

3. Làm tương tự các bước 2 và 3 của phương pháp thủ công.

Xử lý đơn hàng tự động hoàn tất khi khách hàng đã thanh toán

Có một vấn đề chúng ta cần giải quyết đó là đơn hàng không tự động hoàn tất, ngay cả khi khách hàng đã tiến hành thanh toán thành công và tiền đã về ví PayPal của bạn. Điều này có nghĩa là bạn sẽ phải xác nhận hoàn tất đơn hàng theo cách thủ công, thực sự rất bất tiện, đặc biệt là khi bạn bán sản phẩm số (khách hàng không thể download sản phẩm ngay lập tức sau khi thanh toán mà phải chờ bạn phê duyệt).

Để khắc phục tình trạng này, các bạn cần phải truy cập vào host thông qua File Manager của cPanel/ DirectAdmin hoặc phần mềm FTP, tìm theo đường dẫn /wpcontent/plugins/woocommerce/includes/gateways/paypal/includes và mở file class-wc-gateway-paypal-ipn-handler.php ra. Tìm tiếp 2 dòng code sau đây:

$this->validate_currency( $order, $posted['mc_currency'] );
$this->validate_amount( $order, $posted['mc_gross'] );

Và sửa thành:

//hoàn tất đơn hàng tự động khi đã thanh toán
//$this->validate_currency( $order, $posted['mc_currency'] );
//$this->validate_amount( $order, $posted['mc_gross'] );

để vô hiệu hóa chúng.

Các bạn sẽ phải lặp lại công việc này sau mỗi lần nâng cấp WooCommerce lên phiên bản mới, hơi bất tiện nhưng hiện tại chưa có giải pháp tự động nào khả quan hơn.

Cuối cùng, hãy thử đặt hàng và kiểm tra kết quả. Không đến nỗi quá phức tạp phải không nào? Chúc các bạn thành công!

Bonus

Bản cập nhật mới của Woocommerce trong admin có cái menu ở trên đầu gây khó chịu cực kỳ:

menu-kho-chiu-cua-woocommerce

bạn muốn ấn nó đi thì thêm đoạn code sau vào file functions.php nhé:

/** An menu gay kho chiu cua woocommerce */
add_action('admin_head', 'Hide_WooCommerce_Breadcrumb');
function Hide_WooCommerce_Breadcrumb() {
  echo '<style>
    .woocommerce-layout__header {
        display: none;
    }
    .woocommerce-layout__activity-panel-tabs {
        display: none;
    }
    .woocommerce-layout__header-breadcrumbs {
        display: none;
    }
    .woocommerce-embed-page .woocommerce-layout__primary{
        display: none;
    }
    .woocommerce-embed-page #screen-meta, .woocommerce-embed-page #screen-meta-links{top:0;}
    </style>';
}

Nếu bạn thích bài viết này, hãy theo dõi blog của mình để thường xuyên cập nhật những bài viết hay nhất, mới nhất nhé. Cảm ơn rất nhiều. 🙂

guest
0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận