35 Commits

Author SHA1 Message Date
Dat Hoang d6ecbfe806 Merge pull request #32 from htdat/1.3.1-dev
Merge 1.3.1
2017-07-09 11:54:20 +07:00
htdat 26d9e4ba24 Add the changeling, update the stable tag 2017-07-09 11:52:03 +07:00
htdat 6c333e5abe Create the plugin icon #11 2017-07-09 11:47:33 +07:00
htdat 187dd5bf2b Increase the version number 2017-07-03 23:59:33 +07:00
htdat c22f935e96 Update survey links - #29 2017-07-03 23:58:37 +07:00
htdat 4e78194ba9 Add the questionnaire after 4 weeks - the coding part - #29 2017-07-03 14:15:04 +07:00
htdat d44605827a Small grammar fix 2017-07-03 12:32:13 +07:00
htdat 83a1dafdf0 Add the screenshot for OnePay #24 2017-07-03 12:00:40 +07:00
htdat 0c43ee467d Fix: Error in WooCommerce 3.0.x - order->id - #24 2017-07-02 18:08:37 +07:00
htdat fac3a9709f Save the log. See the PayPal Standard gateway #24 2017-07-02 17:59:13 +07:00
htdat 2e4c7b6265 Improve the link to the OnePay setting 2017-07-02 16:27:43 +07:00
htdat 53eec6c1eb Add more notes about the plugin implementing QueryDR, IPN and Return URL. Make sure to follow all guides. #24 2017-07-02 16:26:37 +07:00
htdat 282734961a File readme.txt in the new design of WordPress.org #25 2017-07-02 16:05:53 +07:00
Dat Hoang 12fae4d63f Update the compatible tag 4.8 2017-06-18 18:10:14 +07:00
Dat Hoang ad1cda5d85 Update the compatible tag 4.8 2017-06-18 18:09:48 +07:00
Dat Hoang f694d19ffb Merge pull request #23 from htdat/1.3-dev
Add 1.3 - ready for releasing
2017-04-22 16:42:13 +07:00
htdat 621f52167b Update the screenshots and their descriptions 2017-04-22 16:38:30 +07:00
htdat 5d06fda9a9 Update the version and readme text files for 1.3 2017-04-22 16:28:43 +07:00
Dat Hoang 5cff285182 Merge pull request #22 from htdat/1.3-dev-onepay-domestic
Add the OnePay gateway
2017-04-22 16:12:49 +07:00
htdat 941438dda8 Correct the typos 2017-04-22 15:49:49 +07:00
htdat 8df0f11869 Open OnePay for VND only 2017-04-22 12:47:24 +07:00
htdat 6c76275499 OnePay - Add the bank logos in the checkout page #20 2017-04-22 12:15:15 +07:00
htdat 69c7dfae3c Clean some redundant codes 2017-04-22 11:48:27 +07:00
htdat 44c0a34fe8 Improve calling the cron job queryDR, avoid adding the note 2 times to the order
Issue: OnePay Gateway - For the type return, the
$order->add_order_note() run 2 times #19
2017-04-22 11:47:46 +07:00
htdat a33745b850 Reformat code by PHPStorm 2017-04-22 10:40:10 +07:00
htdat dc226abb88 Change: 1.3 - OnePay Domestic Gateway should not be active by default #18 2017-04-22 10:34:02 +07:00
htdat 4f73556b27 Correct the code for IPN
Use exit() instead of wp_die()
2017-04-22 09:58:48 +07:00
htdat 58022a6650 Improve and reformat code for the main file 2017-04-22 09:48:29 +07:00
htdat 9fe23bd609 Make the process data better - require $type 2017-04-22 09:37:05 +07:00
htdat 0d07ecca4c Change the dev version 2017-04-20 17:40:14 +07:00
htdat 0e252a978a Add the option in the Woo Viet setting page 2017-04-20 17:39:11 +07:00
htdat 70d2182b50 Almost finish
Need to check: IPN and queryDR
And add the option in WooViet settings page
2017-04-20 17:02:19 +07:00
htdat cb989175a5 Added functions to handle IPN and return URL
Still need to consider something more
2017-04-18 19:01:50 +07:00
htdat 5f43aeb47d Finish: Build the payment URL 2017-04-18 10:06:25 +07:00
htdat 3eeb71bf69 The skeleton files for OnePay Domestic 2017-04-17 21:46:56 +07:00
13 changed files with 766 additions and 14 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

+31 -3
View File
@@ -88,6 +88,34 @@ class WooViet_Admin_Page {
value="<?php echo wp_create_nonce( 'wooviet_save_settings' ) ?>">
<table class="form-table">
<tbody>
<tr>
<th scope="row"><?php _e( 'Add the OnePay Domestic Gateway', 'woo-viet' ) ?></th>
<td>
<input name="settings[add_onepay_domestic][enabled]" type="hidden" value="no">
<input name="settings[add_onepay_domestic][enabled]" type="checkbox"
id="add_onepay_domestic" value="yes"
<?php if ( 'yes' == $settings['add_onepay_domestic']['enabled'] )
echo 'checked="checked"' ?>>
<label for="add_onepay_domestic"><?php _e( 'Enabled', 'woo-viet' ) ?></label>
<br/>
<br/>
<label for="">
<?php
echo sprintf( __( 'Your store currency is <code>%s</code>. ', 'woo-viet' ), get_woocommerce_currency() );
// Handle whether or not the store current is VND
if ( 'VND' == get_woocommerce_currency() ) {
_e( 'OnePay can work on your site.', 'woo-viet' );
echo '<br/>';
echo sprintf( __( 'Please configure this gateway under <a href="%s">WooCommerce -> Settings -> Checkout</a>.', 'woo-viet' ), admin_url( 'admin.php?page=wc-settings&tab=checkout&section=wooviet_onepay_domestic' ) );
} else {
_e( '<span style="color: red" ">This gateway is not active on your site. Because OnePay supports VND only.</span>', 'woo-viet' );
}
?>
</label>
</td>
</tr>
<tr>
<th scope="row"><?php _e( 'Add provinces for Vietnam', 'woo-viet' ) ?></th>
<td>
@@ -99,14 +127,14 @@ class WooViet_Admin_Page {
</td>
</tr>
<tr>
<th scope="row"><?php _e( 'Add districts for Vietnam', 'woo-viet' ) ?><br />
<th scope="row"><?php _e( 'Add districts for Vietnam', 'woo-viet' ) ?><br/>
<i><?php _e( 'Require "Add provinces for Vietnam" active', 'woo-viet' ) ?></i>
</th>
<td>
<input name="settings[add_city][enabled]" type="hidden" value="no">
<input name="settings[add_city][enabled]" type="checkbox" id="add_city" value="yes"
<?php if ( 'yes' == $settings['add_city']['enabled'] )
echo 'checked="checked"' ?>>
<?php if ( 'yes' == $settings['add_city']['enabled'] )
echo 'checked="checked"' ?>>
<label for="add_city"><?php _e( 'Enabled', 'woo-viet' ) ?></label>
</td>
</tr>
+107
View File
@@ -0,0 +1,107 @@
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Manage the notices of the plugin
*
* @author htdat
* @since 1.3.1
*
*/
class WooViet_Notices {
var $settings = '';
static $default_settings = array(
'installation_time' => 0,
'displaying_survey_after_4_weeks' => 'not_yet',
);
/**
* WooViet_Notices constructor.
*/
public function __construct() {
$this->settings = self::get_settings();
$this->set_installation_time();
$this->manage_displaying_survey_after_4_weeks();
}
public function get_settings() {
$settings = get_option( 'woo-viet_notices', self::$default_settings );
$settings = wp_parse_args( $settings, self::$default_settings );
return $settings;
}
/**
* Set the installation time
*/
public function set_installation_time() {
if ( ! $this->settings['installation_time'] ) {
$this->settings['installation_time'] = time();
$this->save_settings();
}
}
/**
* Save settings for this classe
*/
public function save_settings() {
update_option( 'woo-viet_notices', $this->settings );
}
/**
* Manage the notice 'displaying_survey_after_4_weeks'
*/
public function manage_displaying_survey_after_4_weeks() {
$display_time = $this->settings['installation_time'] + ( 4 * 7 * 24 * 60 * 60 ); // 4 weeks; 7 days; 24 hours; 60 mins; 60 secs
// Manage the dismiss action
if ( isset( $_GET['wooviet_dismiss'] )
&&
( 'displaying_survey_after_4_weeks' == $_GET['wooviet_dismiss'] )
) {
$this->settings['displaying_survey_after_4_weeks'] = 'done';
$this->save_settings();
}
// Display the message
if ( $display_time < time() &&
'not_yet' == $this->settings['displaying_survey_after_4_weeks']
) {
add_action( 'admin_notices', array( $this, 'add_displaying_survey_after_4_weeks' ) );
}
}
/**
* The HTML code to display in the admin notice
*/
public function add_displaying_survey_after_4_weeks() {
$line1 = __( 'Please help us to improve Woo Viet.', 'woo-viet' );
$line2 = __( 'Rate us!', 'woo-viet' );
$line3 = __( 'Or run a short survery:', 'woo-viet' );
$line4 = '<a href="https://goo.gl/forms/QIMkNrRIxgERBBcm2" target="_blank">tiếng Việt</a> - <a href="https://goo.gl/forms/N4GxvBtaIg6iryx43" target="_blank">English</a>';
$line5 = __( 'Dismiss this notice', 'woo-viet' );
$link = admin_url( 'admin.php?page=woo-viet&wooviet_dismiss=displaying_survey_after_4_weeks' );
printf( '
<div class="notice notice-success">
<p><strong>%1$s</strong></p>
<p><strong>
<a href="https://wordpress.org/support/plugin/woo-viet/reviews/?filter=5#new-post" target="_blank">%2$s</a> %3$s %4$s
</strong></p>
<p>
<a href="%6$s">%5$s</a>
</p>
</div>
', $line1, $line2, $line3, $line4, $line5, $link );
}
}
+441
View File
@@ -0,0 +1,441 @@
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* The class to handle the domestic OnePay gateway https://mtf.onepay.vn/developer/?page=modul_noidia
*
*
* @author htdat
* @since 1.3
*
*/
class WooViet_OnePay_Domestic extends WC_Payment_Gateway {
/** @var bool Whether or not logging is enabled */
public static $log_enabled = false;
/** @var WC_Logger Logger instance */
public static $log = false;
/**
* Constructor for the gateway.
*/
public function __construct() {
$this->id = strtolower( __CLASS__ );
$this->has_fields = false;
$this->order_button_text = __( 'Proceed to OnePay', 'woo-viet' );
$this->method_title = __( 'OnePay Domestic Gateway (by Woo Viet)', 'woo-viet' );
$this->method_description = __( 'OnePay supports all major bank ATMs in Vietnam.', 'woo-viet' );
$this->supports = array(
'products',
);
// Load the settings.
$this->init_form_fields();
$this->init_settings();
// Define user set variables.
$this->title = $this->get_option( 'title' );
$this->description = $this->get_option( 'description' ) . sprintf( '<br/><div align="center"><img src="%s"></div>', WOO_VIET_URL . 'assets/onepay_domestic.png' );
$this->testmode = 'yes' === $this->get_option( 'testmode', 'no' );
$this->merchant_id = $this->get_option( 'merchant_id' );
$this->access_code = $this->get_option( 'access_code' );
$this->secure_secret = $this->get_option( 'secure_secret' );
$this->user = $this->get_option( 'user' );
$this->password = $this->get_option( 'password' );
$this->debug = 'yes' === $this->get_option( 'debug', 'no' );
self::$log_enabled = $this->debug;
// Process the admin options
add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array(
$this,
'process_admin_options'
) );
add_action( 'woocommerce_thankyou_' . $this->id, array( $this, 'handle_onepay_return_url' ) );
add_action( 'woocommerce_api_' . strtolower( __CLASS__ ), array( $this, 'handle_onepay_ipn' ) );
}
/**
* Initialise Gateway Settings Form Fields.
*/
public function init_form_fields() {
$this->form_fields = include( 'onepay/domestic-settings.php' );
}
/**
* Get the IPN URL for OnePay
* Format: http://my-site.com/wc-api/WooViet_OnePay_Domestic/
*/
static function get_onepay_ipn_url() {
return WC()->api_request_url( __CLASS__ );
}
/**
* Process the payment
*
* @param int $order_id
*
* @return array
*/
public function process_payment( $order_id ) {
$order = wc_get_order( $order_id );
return array(
'result' => 'success',
'redirect' => $this->get_pay_url( $order )
);
}
/**
* Get the OnePay pay URL for an order
* AND set the queryDR cron for this transaction
*
* @param WC_Order $order
*
* @return string
*/
public function get_pay_url( $order ) {
$args = array(
'Title' => __( 'OnePay Payment Title', 'woo-viet' ),
'vpc_Merchant' => $this->merchant_id,
'vpc_AccessCode' => $this->access_code,
'vpc_MerchTxnRef' => sprintf( '%1$s_%2$s', $order->get_id(), date( 'YmdHis' ) ),
'vpc_OrderInfo' => substr(
sprintf( 'Order #%1$s - %2$s', $order->get_id(), get_home_url() ),
0,
32 ), // Limit 32 characters
'vpc_Amount' => $order->get_total() * 100, // Multiplying 100 is a requirement from OnePay
'vpc_ReturnURL' => $this->get_return_url( $order ),
'vpc_Version' => '2',
'vpc_Command' => 'pay',
'vpc_Locale' => ( 'vi' == get_locale() ) ? 'vn' : 'en',
'vpc_Currency' => 'VND',
'vpc_TicketNo' => $_SERVER['REMOTE_ADDR'],
);
// Set the queryDR cron for this transaction
$this->set_onepay_querydr_cron( $args['vpc_MerchTxnRef'] );
// Get the secure hash
$vpc_SecureHash = $this->create_vpc_SecureHash( $args );
// Add the secure hash to the args
$args['vpc_SecureHash'] = $vpc_SecureHash;
$http_args = http_build_query( $args, '', '&' );
// Log data
$message_log = sprintf('get_pay_url - Order ID: %1$s - http_args: %2$s', $order->get_id(), print_r($args, true) );
self::log( $message_log);
if ( $this->testmode ) {
return 'https://mtf.onepay.vn/onecomm-pay/vpc.op?' . $http_args;
} else {
return 'https://onepay.vn/onecomm-pay/vpc.op?' . $http_args;
}
}
/**
* Set the cron job running queryDR in 20 mintues
* Because the OnePay payment timeout is 15 minutes
*
* @param string $vpc_MerchTxnRef
*/
public function set_onepay_querydr_cron( $vpc_MerchTxnRef ) {
wp_schedule_single_event(
time() + 20 * 60,
'wooviet_handle_onepay_querydr',
array( $vpc_MerchTxnRef )
);
}
/**
* Create the vpc_SecureHash value.
* @see https://mtf.onepay.vn/developer/?page=modul_noidia_php
*
* @param array $args
*
* @return string
*/
public function create_vpc_SecureHash( $args ) {
$stringHashData = "";
// arrange array data a-z before make a hash
ksort( $args );
foreach ( $args as $key => $value ) {
if ( strlen( $value ) > 0 ) {
if ( ( strlen( $value ) > 0 ) && ( ( substr( $key, 0, 4 ) == "vpc_" ) || ( substr( $key, 0, 5 ) == "user_" ) ) ) {
$stringHashData .= $key . "=" . $value . "&";
}
}
}
//Remove the last character "&"
$stringHashData = rtrim( $stringHashData, "&" );
return strtoupper( hash_hmac( 'SHA256', $stringHashData, pack( 'H*', $this->secure_secret ) ) );
}
/**
* Handle the return URL - GET request from OnePay
*/
public function handle_onepay_return_url() {
if ( isset( $_GET['vpc_SecureHash'] ) ) {
$this->process_onepay_response_data( $_GET, 'return' );
}
}
/**
* Handle the repsonse data from OnePay
*
* @param string $args the response data from OnePay
* @param string $type
*/
public function process_onepay_response_data( $args, $type ) {
$types_accepted = array(
'return',
'ipn',
'querydr',
);
// Do nothing if the type is wrong
if ( ! in_array( $type, $types_accepted ) ) {
return;
}
$is_secure = false;
$is_querydr_exists = false;
if ( 'return' == $type OR 'ipn' == $type ) {
$vpc_SecureHash = $args['vpc_SecureHash'];
// Remove the parameter "vpc_SecureHash" for validating SecureHash
unset( $args['vpc_SecureHash'] );
$is_secure = $this->check_vpc_SecureHash( $args, $vpc_SecureHash );
} elseif ( 'querydr' == $type ) {
$is_querydr_exists = ( 'Y' == $args['vpc_DRExists'] );
}
// Process the data
if ( $is_secure OR $is_querydr_exists ) {
/**
* $vpc_MerchTxnRef looks like this "139_20170418101843" or {order_id}_{date_time}
* @see $this->get_pay_url();
*/
$vpc_MerchTxnRef = $args['vpc_MerchTxnRef'];
$vpc_TxnResponseCode = $args['vpc_TxnResponseCode'];
// Get the order_id part only
$order_id = substr( $vpc_MerchTxnRef, 0, strrpos( $vpc_MerchTxnRef, '_' ) );
$order = wc_get_order( $order_id );
// Add the order note for the reference
$order_note = sprintf(
__( 'OnePay Domestic Gateway Info | Code: %1$s | Message: %2$s | MerchantTxnRef: %3$s | Type: %4$s', 'woo-viet' ),
$vpc_TxnResponseCode,
$this->OnePay_getResponseDescription( $vpc_TxnResponseCode ),
$vpc_MerchTxnRef,
$type
);
$order->add_order_note( $order_note );
// If the payment is successful, update the order
if ( "0" == $vpc_TxnResponseCode ) {
$order->payment_complete();
}
// Log data
$message_log = sprintf('process_onepay_response_data - Order ID: %1$s - Order Note: %2$s - http_args: %3$s', $order_id, $order_note, print_r($args, true) );
self::log( $message_log);
// Return the info
switch ( $type ) {
case 'return':
wp_redirect( $this->get_return_url( $order ) );
break;
case 'ipn':
exit( 'responsecode=1&desc=confirm-success' );
break;
case 'querydr':
// Do nothing
break;
}
} else {
if ( 'ipn' == $type ) {
exit( 'responsecode=0&desc=confirm-success' );
}
}
}
/**
* Whether or not the arguments and a provided $vpc_SecureHash are the same
*
* @see https://mtf.onepay.vn/developer/?page=modul_noidia_php
*
* @param $args
* @param $vpc_SecureHash
*
* @return bool
*/
public function check_vpc_SecureHash( $args, $vpc_SecureHash ) {
// Generate the "vpc_SecureHash" value from $args
$vpc_SecureHash_from_args = $this->create_vpc_SecureHash( $args );
if ( $vpc_SecureHash_from_args == $vpc_SecureHash ) {
return true;
} else {
return false;
}
}
/**
* Get the response description based on the response code
* This is code is from OnePay
*
* @param string $responseCode
*
* @return string
*/
public function OnePay_getResponseDescription( $responseCode ) {
switch ( $responseCode ) {
case "0" :
$result = "Giao dịch thành công - Approved";
break;
case "1" :
$result = "Ngân hàng từ chối giao dịch - Bank Declined";
break;
case "3" :
$result = "Mã đơn vị không tồn tại - Merchant not exist";
break;
case "4" :
$result = "Không đúng access code - Invalid access code";
break;
case "5" :
$result = "Số tiền không hợp lệ - Invalid amount";
break;
case "6" :
$result = "Mã tiền tệ không tồn tại - Invalid currency code";
break;
case "7" :
$result = "Lỗi không xác định - Unspecified Failure ";
break;
case "8" :
$result = "Số thẻ không đúng - Invalid card Number";
break;
case "9" :
$result = "Tên chủ thẻ không đúng - Invalid card name";
break;
case "10" :
$result = "Thẻ hết hạn/Thẻ bị khóa - Expired Card";
break;
case "11" :
$result = "Thẻ chưa đăng ký sử dụng dịch vụ - Card Not Registed Service(internet banking)";
break;
case "12" :
$result = "Ngày phát hành/Hết hạn không đúng - Invalid card date";
break;
case "13" :
$result = "Vượt quá hạn mức thanh toán - Exist Amount";
break;
case "21" :
$result = "Số tiền không đủ để thanh toán - Insufficient fund";
break;
case "99" :
$result = "Người sủ dụng hủy giao dịch - User cancel";
break;
default :
$result = "Giao dịch thất bại - Failured";
}
return $result;
}
/**
* Handle the IPN POST request from OnePay
*/
public function handle_onepay_ipn() {
if ( isset( $_REQUEST['vpc_SecureHash'] ) ) {
$this->process_onepay_response_data( $_REQUEST, 'ipn' );
}
}
/**
* Handle the queryDR request
*
* @param string $vpc_MerchTxnRef
*/
public function handle_onepay_querydr( $vpc_MerchTxnRef ) {
// Build the queryDR link
$args = array(
'vpc_Command' => 'queryDR',
'vpc_Version' => '1',
'vpc_MerchTxnRef' => $vpc_MerchTxnRef,
'vpc_Merchant' => $this->merchant_id,
'vpc_AccessCode' => $this->access_code,
'vpc_User' => $this->user,
'vpc_Password' => $this->password,
);
$http_args = http_build_query( $args, '', '&' );
if ( $this->testmode ) {
$http_link = 'https://mtf.onepay.vn/onecomm-pay/Vpcdps.op?' . $http_args;
} else {
$http_link = 'https://onepay.vn/onecomm-pay/Vpcdps.op?' . $http_args;
}
// Log data
$message_log = sprintf('handle_onepay_querydr - http_link: %1$s - http_args: %2$s', $http_link, print_r($args, true) );
self::log( $message_log);
// Connect to OnePay to get the queryDR info
$http_response = wp_remote_get( $http_link );
parse_str( wp_remote_retrieve_body( $http_response ), $args_response );
// Process the data
$this->process_onepay_response_data( $args_response, 'querydr' );
}
/**
* Logging method. - Copied from the WC_Gateway_Paypal Class
*
* @since 1.3.1
* @param string $message Log message.
* @param string $level Optional. Default 'info'.
* emergency|alert|critical|error|warning|notice|info|debug
*/
public static function log( $message, $level = 'info' ) {
if ( self::$log_enabled ) {
if ( empty( self::$log ) ) {
self::$log = wc_get_logger();
}
self::$log->log( $level, $message, array( 'source' => __CLASS__ ) );
}
}
}
+103
View File
@@ -0,0 +1,103 @@
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Settings for 1Pay Gateway.
* @since 1.3
*/
return array(
'enabled' => array(
'title' => __( 'Enable/Disable', 'woo-viet' ),
'type' => 'checkbox',
'label' => __( 'OnePay Domestic Gateway (by Woo Viet)', 'woo-viet' ),
'default' => 'no'
),
'testmode' => array(
'title' => __( 'OnePay Sandbox', 'woocommerce' ),
'type' => 'checkbox',
'label' => __( 'Enable OnePay sandbox (testing)', 'woocommerce' ),
'default' => 'no',
'description' => sprintf( __( 'OnePay sandbox can be used to test payments. See <a href="%s">the testing info</a>.', 'woocommerce' ), 'https://mtf.onepay.vn/developer/?page=modul_noidia' ),
//@todo: add the logo https://mtf.onepay.vn/developer/?page=logo
),
'title' => array(
'title' => __( 'Title', 'woo-viet' ),
'type' => 'text',
'description' => __( 'This controls the title which the user sees during checkout.', 'woo-viet' ),
'default' => __( 'OnePay Domestic Gateway', 'woo-viet' ),
'desc_tip' => true,
),
'description' => array(
'title' => __( 'Description', 'woo-viet' ),
'type' => 'textarea',
'desc_tip' => true,
'description' => __( 'This controls the description which the user sees during checkout.', 'woo-viet' ),
'default' => __( 'With OnePay, you can make payment by using any local Vietnam ATM card.', 'woo-viet' )
),
'api_details' => array(
'title' => __( 'API Credentials', 'woo-viet' ),
'type' => 'title',
'description' => sprintf( __( 'Enter your OnePay API credentials. Contact OnePay to have your credentials %shere%s.', 'woo-viet' ), '<a href="http://onepay.com.vn/home/en/contact-us.html">', '</a>' ),
),
'merchant_id' => array(
'title' => __( 'Merchant ID', 'woo-viet' ),
'type' => 'text',
'description' => __( 'Get your Merchant ID from OnePay.', 'woo-viet' ),
'default' => '',
'desc_tip' => true,
'placeholder' => __( 'Required. Provided by OnePay.', 'woo-viet' )
),
'access_code' => array(
'title' => __( 'Access Code', 'woocommerce' ),
'type' => 'text',
'description' => __( 'Get your Access Code from OnePay.', 'woo-viet' ),
'default' => '',
'desc_tip' => true,
'placeholder' => __( 'Required. Provided by OnePay.', 'woo-viet' )
),
'secure_secret' => array(
'title' => __( 'Secure Secret', 'woocommerce' ),
'type' => 'text',
'description' => __( 'Get your Secure Secret from OnePay.', 'woo-viet' ),
'default' => '',
'desc_tip' => true,
'placeholder' => __( 'Required. Provided by OnePay.', 'woo-viet' )
),
'user' => array(
'title' => __( 'User for queryDR. Test value: op01', 'woocommerce' ),
'type' => 'text',
'description' => __( 'Get your user info from OnePay.', 'woo-viet' ),
'default' => '',
'desc_tip' => true,
'placeholder' => __( 'Required. Provided by OnePay', 'woo-viet' )
),
'password' => array(
'title' => __( 'Password for queryDR. Test value: op123456', 'woocommerce' ),
'type' => 'text',
'description' => __( 'Get your password info from OnePay.', 'woo-viet' ),
'default' => '',
'desc_tip' => true,
'placeholder' => __( 'Required. Provided by OnePay.', 'woo-viet' )
),
'more_info' => array(
'title' => __( 'Instant Payment Notification (IPN)', 'woo-viet' ),
'type' => 'title',
'description' =>
sprintf( 'URL: <code>%s</code>', WooViet_OnePay_Domestic::get_onepay_ipn_url() ) . '<p/>' .
sprintf( __( '%sContact OnePay%s to configure this URL on its site. <strong>This is required based on its guidelines.</strong>', 'woo-viet' ), '<a href="http://onepay.com.vn/home/en/contact-us.html">', '</a>' ),
),
/**
* @since 1.3.1
*/
'debug' => array(
'title' => __( 'Debug log', 'woo-viet' ),
'type' => 'checkbox',
'label' => __( 'Enable logging', 'woo-viet' ),
'default' => 'no',
'description' => sprintf( __( 'Log events, such as IPN requests, inside %s', 'woo-viet' ), '<code>' . WC_Log_Handler_File::get_log_file_path( 'WooViet_OnePay_Domestic' ) . '</code>' ),
),
);
+15 -2
View File
@@ -5,8 +5,8 @@
| Contributors | htdat |
|Tags| WooCommerce Vietnam, vietnam, vietnamese, vietnam provinces, paypal for vietnam dong, vnd, vietnam dong, vietnam currency, vietnam customization |
| Requires at least | 4.3 |
| Tested up to | 4.7 |
| Stable tag | 1.2 |
| Tested up to | 4.8 |
| Stable tag | 1.3 |
| License | GPLv2 or later |
| License URI | https://www.gnu.org/licenses/gpl-2.0.html |
@@ -22,8 +22,10 @@ Xem phiên bản tiếng Việt tại đây https://vi.wordpress.org/plugins/woo
* Change the VND currency symbol `đ` to anything, e.g: `VND`, `VNĐ`, `đồng`, etc.
* Add provinces for Vietnam when visitors select Vietnam as a country of the shipping (billing) address. This is not available in WooCommerce by default.
* Add districts to Vietnam provinces.
* Convert `000` of prices to `K` (or anything). E.g: `50000` (VND) will be `50K` (VND), or `50 thousand` (VND).
* Support `VND` for [the PayPal Standard gateway](https://docs.woocommerce.com/document/paypal-standard/). Convert `VND` prices to any PayPal supported currency before sending visitors to the PayPal pages.
* Add [the OnePay domestic (local ATM cards) gateway](http://onepay.com.vn/).
## ROAD MAP
@@ -72,6 +74,17 @@ Follow these steps to install and use the plugin:
## Changelog
### 1.3.1 - 2017.07.09
* Improve the OnePay domestic gateway.
* Add the plugin icon and banner.
* Add the questionnaire after 4 weeks of installation.
### 1.3 - 2017.04.22
* Add [the OnePay domestic (local ATM cards) gateway](http://onepay.com.vn/)
### 1.2 - 2017.03.03
* Integrate all districts to Vietnam provinces. Credits: [WC City Select by 8manos](https://github.com/8manos/wc-city-select) and [the Vietnam district data by 10h30](https://github.com/htdat/woo-viet/issues/4#issuecomment-277449462)
### 1.1
* Replace all “WooCommerce for Vietnam” to “Woo Viet”
* Replace all “woocomerce-for-vietnam” to “woo-viet”
+21 -5
View File
@@ -1,9 +1,9 @@
=== Woo Viet - WooCommerce for Vietnam ===
Contributors: htdat
Tags: WooCommerce Vietnam, vietnam, vietnamese, vietnam provinces, paypal for vietnam dong, vnd, vietnam dong, vietnam currency, vietnam customization
Tags: OnePay WooCommerce, OnePay Vietnam, WooCommerce Vietnam, vietnam, vietnamese, vietnam provinces, paypal for vietnam dong, vnd, vietnam dong, vietnam currency, vietnam customization
Requires at least: 4.3
Tested up to: 4.7.2
Stable tag: 1.2
Tested up to: 4.8
Stable tag: 1.3.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -13,7 +13,10 @@ Add features to WooCommerce stores having anything related to Vietnam: currency,
**"Woo Viet - WooCommerce for Vietnam" brings the features that help to run WooCommerce stores and customize them for Vietnam much easier.**
Xem phiên bản tiếng Việt tại đây https://vi.wordpress.org/plugins/woo-viet/
Xem phiên bản tiếng Việt tại đây [https://vi.wordpress.org/plugins/woo-viet/](https://vi.wordpress.org/plugins/woo-viet/)
**NEW FEATURE**:
Add [the OnePay domestic (local ATM cards) gateway](http://onepay.com.vn/).
= FEATURES =
@@ -22,6 +25,7 @@ Xem phiên bản tiếng Việt tại đây https://vi.wordpress.org/plugins/woo
* Add districts to Vietnam provinces.
* Convert `000` of prices to `K` (or anything). E.g: `50000` (VND) will be `50K` (VND), or `50 thousand` (VND).
* Support `VND` for [the PayPal Standard gateway](https://docs.woocommerce.com/document/paypal-standard/). Convert `VND` prices to any PayPal supported currency before sending visitors to the PayPal pages.
* Add [the OnePay domestic (local ATM cards) gateway](http://onepay.com.vn/). Implement all methods in [the official documents](https://mtf.onepay.vn/developer/?page=modul_noidia_php): QueryDR, IPN, and Return URL.
= ROAD MAP =
@@ -65,11 +69,20 @@ Follow these steps to install and use the plugin:
1. The settings page under WooCommerce -> Woo Viet.
2. Prices are changed to "K", and the symbol is now "VND".
3. List provinces when selecting Vietnam.
3. List provinces and districts when selecting Vietnam.
4. Let clients know about the currency conversion before switching to the PayPal pages.
5. OnePay domestic (local ATM cards) gateway.
== Changelog ==
= 1.3.1 - 2017.07.092 =
* Improve the OnePay domestic gateway.
* Add the plugin icon and banner.
* Add the questionnaire after 4 weeks of installation.
= 1.3 - 2017.04.22 =
* Add [the OnePay domestic (local ATM cards) gateway](http://onepay.com.vn/).
= 1.2 - 2017.03.03 =
* Integrate all districts to Vietnam provinces. Credits: [WC City Select by 8manos](https://github.com/8manos/wc-city-select) and [the Vietnam district data by 10h30](https://github.com/htdat/woo-viet/issues/4#issuecomment-277449462)
@@ -84,5 +97,8 @@ Follow these steps to install and use the plugin:
== Upgrade Notice ==
= 1.3 =
The new version 1.2 comes with the feature "Add the OnePay domestic (local ATM cards) gateway]"
= 1.2 =
The new version 1.2 comes with the feature "Add districts to Vietnam provinces".
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 43 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

+48 -4
View File
@@ -7,7 +7,7 @@
* Author URI: https://profiles.wordpress.org/htdat
* Text Domain: woo-viet
* Domain Path: /languages
* Version: 1.2
* Version: 1.3.1
* License: GPLv2+
*/
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
}
define( 'WOO_VIET_DIR', plugin_dir_path( __FILE__ ) );
// define( 'WOO_VIET_URL', plugins_url( '/', __FILE__ ) );
define( 'WOO_VIET_URL', plugins_url( '/', __FILE__ ) );
/**
* Start the instance
@@ -40,7 +40,7 @@ class WooViet {
array(
'enabled' => 'yes',
),
'add_city' =>
'add_city' =>
array(
'enabled' => 'yes',
),
@@ -60,6 +60,10 @@ class WooViet {
'currency' => 'USD',
'rate' => '22770',
),
'add_onepay_domestic' =>
array(
'enabled' => 'yes',
),
);
/**
* The properties to manage all classes under the "inc/" folder
@@ -88,7 +92,7 @@ class WooViet {
public function notice_if_not_woocommerce() {
$class = 'notice notice-error';
$message = __( 'Woo Viet is not running because WooCommerce is not active. Please activate both plugins',
$message = __( 'Woo Viet is not running because WooCommerce is not active. Please activate both plugins.',
'woo-viet' );
printf( '<div class="%1$s"><p><strong>%2$s</strong></p></div>', $class, $message );
@@ -129,10 +133,34 @@ class WooViet {
include( WOO_VIET_DIR . 'inc/class-wooviet-admin-page.php' );
$this->Admin_Page = new WooViet_Admin_Page();
// Add the notices class
include( WOO_VIET_DIR . 'inc/class-wooviet-notices.php' );
new WooViet_Notices();
}
$settings = self::get_settings();
// Check if "Add the OnePay Domestic Gateway" is enabled
if ( 'yes' == $settings['add_onepay_domestic']['enabled']
AND 'VND' == get_woocommerce_currency()
) {
include( 'inc/class-wooviet-onepay-domestic.php' );
add_filter( 'woocommerce_payment_gateways', array( $this, 'add_gateway_class' ) );
// Add the action to check the cron job for handling queryDR
// It's not possible to add in the class "WooViet_OnePay_Domestic_Hook" because it's NOT always loadded
if ( defined( 'DOING_CRON' ) and DOING_CRON ) {
$this->WooViet_OnePay_Domestic_Hook = new WooViet_OnePay_Domestic();
add_action( 'wooviet_handle_onepay_querydr', array(
$this->WooViet_OnePay_Domestic_Hook,
'handle_onepay_querydr'
), 10, 1 );
}
}
// Check if "Add provinces for Vietnam " is enabled.
if ( 'yes' == $settings['add_province']['enabled'] ) {
include( WOO_VIET_DIR . 'inc/class-wooviet-provinces.php' );
@@ -177,7 +205,23 @@ class WooViet {
static function get_settings() {
$settings = get_option( 'woo-viet', self::$default_settings );
$settings = wp_parse_args( $settings, self::$default_settings );
return $settings;
}
/**
* Add the gateways to WooCommerce
*
* @param array $methods
*
* @since 1.3
* @return array
*/
public function add_gateway_class( $methods ) {
$methods[] = 'WooViet_OnePay_Domestic';
return $methods;
}
}