Kích hoạt thanh toán PayPal cho VNĐ trên WooCommerce

 

kich-hoat-cong-thanh-toan-paypal-cho-vnd

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ì bạn sẽ không thể kích hoạt được cổng thanh toán PayPal 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. Trong bài viết hôm nay, tôi 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.

Kích hoạt thanh toán PayPal cho VNĐ

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. Các bạn cũng có thể chèn nó thông qua plugin Code Snippets để tránh code bị xóa mất lúc nâng cấp theme.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*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 = 20000; //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ế 20000 bằng tỉ giá cho phù hợp. Trong code bên trên, chúng tôi để tỉ giá $1 = 20000 VNĐ.

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-woocommerce

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-trong-woocommerce

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 code mỗi lần cập nhật WooCommerce.

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à Payment Gateway Currency for WooCommerce (download).

cai-dat-va-kich-hoat-plugin-payment-gateway-currency-for-woocommerce

2. Tiếp theo, truy cập WooCommerce => Settings => Payment Gateway Currency => Convert Currency => Thiết lập cổng PayPal Standard như hình bên dưới.

thiet-lap-thanh-toan-paypal-cho-vnd

Trong đó:

  • Enable section: các bạn tick vào để kích hoạt tính năng chuyển đổi tiền tệ.
  • Convert currency: lựa chọn đơn vị tiền tệ được PayPal hỗ trợ, cụ thể ở đây là USD.
  • Conversion rate: tỉ giá chuyển đổi. Ví dụ tôi để $1 = 20000 VNĐ nên tỉ giá sẽ là 1/20000 = 0.00005. Lưu ý: dấu phân tách thập phân ở đây là dấu chấm (.), không phải dấu phẩy (,).
  • Currency symbol: ký hiệu của đơn vị tiền tệ. Ở trường hợp này là USD nên tôi để $.

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ý lỗi đơn hàng không tự động hoàn tất

Đối với phương pháp thủ công (sử dụng code), 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 /wp-content/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:

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

Và sửa thành:

1
2
//$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. Nếu sử dụng plugin, các bạn không cần quan tâm đến 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!

0/5 (0 Reviews)