Hướng dẫn kích hoạt cổng thanh toán PayPal bằng VNĐ trên WooCommerce một cách đơn giản.
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. (Đây là 1 Website đã làm Ok sau khi đọc bài hướng dẫn này: https://hoc.tips/ )
Kích hoạt PayPal Standard trên WooCommerce
Có thể bạn chưa biết, kể từ phiên bản 5.5, WooCommerce đã mặc định ẩn cổng thanh toán PayPal Standard trên các website WordPress cài đặt mới. Nếu muốn sử dụng cổng thanh toán PayPal, các bạn sẽ phải cài đặt plugin “WooCommerce PayPal Payments” vốn không được người dùng đánh giá cao với rating thấp thảm hại. Vậy làm thế nào để mang cổng thanh toán PayPal Standard quay trở lại website của bạn, cho phép người dùng có thể thanh toán qua PayPal một cách dễ dàng mà không cần dùng tới plugin? Bạn nên làm như sau hướng dẫn sau để dễ dàng kích hoạt tính năng mặc định này nhé.
Tất cả những gì các bạn cần làm là 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.
add_filter( ‘woocommerce_should_load_paypal_standard’, ‘__return_true’ ); |
view rawfuntion.php hosted with ❤ by GitHub
Truy cập WooCommerce => Settings => Payments và kiểm tra kết quả, sau đó click vào nút để kích hoạt và cấu hình nó nhé
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.
/*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; | |
} |
view rawfunctions.php hosted with ❤ by GitHub
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.
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.
Sử dụng plugin (tự động)
Lưu ý: là sẽ có những Plugin tương thích với Plugin tự động này, có những Plugin không tương thích, thì bạn nên dùng thủ công nhé)
Ư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).
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.
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:
$this->validate_currency( $order, $posted[‘mc_currency’] ); | |
$this->validate_amount( $order, $posted[‘mc_gross’] ); |
view rawclass-wc-gateway-paypal-ipn-handler.php hosted with ❤ by GitHub
Và sửa thành:
//$this->validate_currency( $order, $posted[‘mc_currency’] ); | |
//$this->validate_amount( $order, $posted[‘mc_gross’] ); |
view rawclass-wc-gateway-paypal-ipn-handler.php hosted with ❤ by GitHub
để 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ó.