Hướng dẫn kích hoạt cổng thanh toán PayPal cho 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.
Tham khảo thêm:
- Tích hợp thanh toán quét mã QR cho WooCommerce
- Loại bỏ chữ product và product-category trong WooCommerce
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;
}
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.

Nếu không nhìn thấy cổng thanh toán PayPal Standard, các bạn có thể tham khảo bài viết: “Kích hoạt PayPal Standard trên 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).

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'] );
Và sửa thành:
//$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!
Bạn có đang sử dụng cổng thanh toán PayPal cho VNĐ trên website WooCommerce của mình không? Bạn đã sử dụng phương pháp nào để làm điều đó? Hãy chia sẻ nó với chúng tôi trong khung bình luận bên dưới.
Nếu bạn thích bài viết này, hãy theo dõi blog của tôi để 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. :)






Với phương thức dùng code thủ công thì giá trị có được gửi về mail không anh và trong phần quản trị đơn hàng có hiển thị về VND ko anh. Cảm ơn anh.
Cái này bạn test thử là biết ngay mà. Có mất gì đâu nhỉ? :P Mình chuyển qua sử dụng plugin lâu rồi nên không nhớ rõ bạn ạ. :)
Đã làm theo admin, nhưng vẫn không convert được, phần đổi currency thì đổi thành công thành VND nhưng vẫn không process payment Paypal được. Báo lỗi:
[UNPROCESSABLE_ENTITY] The requested action could not be performed, semantically incorrect, or failed business validation. https://developer.paypal.com/docs/api/orders/v2/#error-DECIMALS_NOT_SUPPORTED
Admin support mình chỗ này nhé. Thanks.
Bạn thử kiểm tra lại cấu hình cổng thanh toán PayPal xem sao nhé. Theo mình thì 1 là lỗi cấu hình API, 2 là cái tài khoản PayPal của bạn chưa hoàn tất các yêu cầu xác minh.
[UNPROCESSABLE_ENTITY] The requested action could not be performed, semantically incorrect, or failed business validation. https://developer.paypal.com/docs/api/orders/v2/#error-DECIMALS_NOT_SUPPORTED
Mình cũng bị lỗi này, hình như paypal mới cập nhật, chuyển sang usd thì vãn thanh toán bình thường
Bạn thử dùng plugin Payment Gateway Currency for WooCommerce để thay thế xem sao nhé.
Bác cuyển sang VND được chưa bác?
bị lỗi như bác này mà chưa fix được
Bạn dùng thử plugin Payment Gateway Currency for WooCommerce chưa nhỉ?
Anh có thể hướng dẫn chi tiết hơn về vị trí chèn code này không anh ? Em không biết phải chèn từ dòng nào? Thank anh
Bạn chèn vào cuối file
functions.phpcủa theme (child theme nếu web có sử dụng child theme) hoặc sử dụng plugin Code Snippets để chèn.Chưa có bài nào về thêm lựa chọn màu sắc, size cho sản phẩm của Woocommerce plugin à bạn.
Hiện tại vẫn chưa có bạn ạ. :)
Sao Hiếu không viết plugin cho cái này nhỉ?
Chưa tìm ra giải pháp để tự động hoàn tất đơn hàng sau khi thanh toán bạn ạ. Nếu không phải can thiệp thủ công bằng cách chỉnh sửa file của WooCommerce thì mình cũng viết plugin rồi. :D
Tìm ra giải pháp inbox mình nha! Mình sẽ mua ủng hộ!
Để $ sau đó paypal nó tử chuyển đổi được mà bác
Ý bạn là sao nhỉ? Để giá sản phẩm bằng USD à?
Vì chưa giàu nên chưa dám thử cái này :))
Đa số dân xài Paypal đều dùng $ không ấy :))
Hướng dẫn convert từ VNĐ sang USD để thanh toán PayPal là chuẩn bài rồi còn gì? :P
Thì đó, mình nói chuẩn đó 😆