paymod_id = 'epsilon';
$this->pay_method = array(
'acting_epsilon_card',
'acting_epsilon_conv',
'acting_epsilon_paypay',
);
$this->acting_name = 'イプシロン';
$this->acting_formal_name = 'イプシロン';
$this->acting_company_url = 'https://www.epsilon.jp/';
$this->initialize_data();
if ( is_admin() ) {
add_action( 'admin_print_footer_scripts', array( $this, 'admin_scripts' ) );
add_action( 'usces_action_admin_settlement_update', array( $this, 'settlement_update' ) );
add_action( 'usces_action_settlement_tab_title', array( $this, 'settlement_tab_title' ) );
add_action( 'usces_action_settlement_tab_body', array( $this, 'settlement_tab_body' ) );
}
if ( $this->is_validity_acting() ) {
add_action( 'usces_after_cart_instant', array( $this, 'acting_transaction' ) );
add_filter( 'usces_filter_is_complete_settlement', array( $this, 'is_complete_settlement' ), 10, 3 );
if ( $this->is_activate_card() || $this->is_activate_conv() || $this->is_activate_paypay() ) {
add_action( 'usces_action_reg_orderdata', array( $this, 'register_order_data' ) );
if ( is_admin() ) {
add_filter( 'usces_filter_settle_info_field_keys', array( $this, 'settlement_info_field_keys' ), 10, 2 );
add_filter( 'usces_filter_settle_info_field_value', array( $this, 'settlement_info_field_value' ), 10, 3 );
add_action( 'usces_action_revival_order_data', array( $this, 'revival_order_data' ), 10, 3 );
} else {
add_filter( 'usces_filter_confirm_inform', array( $this, 'confirm_inform' ), 10, 5 );
add_action( 'usces_action_acting_processing', array( $this, 'acting_processing' ), 10, 2 );
add_filter( 'usces_filter_completion_settlement_message', array( $this, 'completion_settlement_message' ), 10, 2 );
}
}
if ( $this->is_validity_acting( 'card' ) ) {
if ( is_admin() ) {
add_action( 'usces_action_admin_member_info', array( $this, 'admin_member_info' ), 10, 3 );
add_action( 'usces_action_post_update_memberdata', array( $this, 'admin_update_memberdata' ), 10, 2 );
}
}
if ( $this->is_validity_acting( 'conv' ) ) {
add_filter( 'usces_filter_payment_detail', array( $this, 'payment_detail' ), 10, 2 );
add_filter( 'usces_filter_noreceipt_status', array( $this, 'noreceipt_status' ) );
}
}
}
/**
* Return an instance of this class.
*/
public static function get_instance() {
if ( is_null( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Initialize.
*/
public function initialize_data() {
$options = get_option( 'usces', array() );
$options['acting_settings']['epsilon']['contract_code'] = ( isset( $options['acting_settings']['epsilon']['contract_code'] ) ) ? $options['acting_settings']['epsilon']['contract_code'] : '';
$options['acting_settings']['epsilon']['ope'] = ( isset( $options['acting_settings']['epsilon']['ope'] ) ) ? $options['acting_settings']['epsilon']['ope'] : '';
$options['acting_settings']['epsilon']['card_activate'] = ( isset( $options['acting_settings']['epsilon']['card_activate'] ) ) ? $options['acting_settings']['epsilon']['card_activate'] : '';
$options['acting_settings']['epsilon']['multi_currency'] = ( isset( $options['acting_settings']['epsilon']['multi_currency'] ) ) ? $options['acting_settings']['epsilon']['multi_currency'] : '';
$options['acting_settings']['epsilon']['3dsecure'] = ( isset( $options['acting_settings']['epsilon']['3dsecure'] ) ) ? $options['acting_settings']['epsilon']['3dsecure'] : '';
$options['acting_settings']['epsilon']['process_code'] = ( isset( $options['acting_settings']['epsilon']['process_code'] ) ) ? $options['acting_settings']['epsilon']['process_code'] : '';
$options['acting_settings']['epsilon']['conv_activate'] = ( isset( $options['acting_settings']['epsilon']['conv_activate'] ) ) ? $options['acting_settings']['epsilon']['conv_activate'] : '';
$options['acting_settings']['epsilon']['conv_limit'] = ( isset( $options['acting_settings']['epsilon']['conv_limit'] ) ) ? $options['acting_settings']['epsilon']['conv_limit'] : '';
$options['acting_settings']['epsilon']['paypay_activate'] = ( isset( $options['acting_settings']['epsilon']['paypay_activate'] ) ) ? $options['acting_settings']['epsilon']['paypay_activate'] : '';
update_option( 'usces', $options );
$available_settlement = get_option( 'usces_available_settlement', array() );
if ( ! in_array( 'epsilon', $available_settlement, true ) ) {
$available_settlement['epsilon'] = $this->acting_name;
update_option( 'usces_available_settlement', $available_settlement );
}
}
/**
* 決済有効判定
* 支払方法で使用している場合に true
*
* @param string $type Module type.
* @return boolean
*/
public function is_validity_acting( $type = '' ) {
$acting_opts = $this->get_acting_settings();
if ( empty( $acting_opts ) ) {
return false;
}
$payment_method = usces_get_system_option( 'usces_payment_method', 'sort' );
$method = false;
switch ( $type ) {
case 'card':
foreach ( $payment_method as $payment ) {
if ( 'acting_epsilon_card' === $payment['settlement'] && 'activate' === $payment['use'] ) {
$method = true;
break;
}
}
if ( $method && $this->is_activate_card() ) {
return true;
} else {
return false;
}
break;
case 'conv':
foreach ( $payment_method as $payment ) {
if ( 'acting_epsilon_conv' === $payment['settlement'] && 'activate' === $payment['use'] ) {
$method = true;
break;
}
}
if ( $method && $this->is_activate_conv() ) {
return true;
} else {
return false;
}
break;
case 'paypay':
foreach ( $payment_method as $payment ) {
if ( 'acting_epsilon_paypay' === $payment['settlement'] && 'activate' === $payment['use'] ) {
$method = true;
break;
}
}
if ( $method && $this->is_activate_paypay() ) {
return true;
} else {
return false;
}
break;
default:
if ( isset( $acting_opts['activate'] ) && 'on' === $acting_opts['activate'] ) {
return true;
} else {
return false;
}
}
}
/**
* クレジットカード決済有効判定
*
* @return boolean
*/
public function is_activate_card() {
$acting_opts = $this->get_acting_settings();
if ( ( isset( $acting_opts['activate'] ) && 'on' === $acting_opts['activate'] ) &&
( isset( $acting_opts['card_activate'] ) && ( 'on' === $acting_opts['card_activate'] ) ) ) {
$res = true;
} else {
$res = false;
}
return $res;
}
/**
* コンビニ決済有効判定
*
* @return boolean
*/
public function is_activate_conv() {
$acting_opts = $this->get_acting_settings();
if ( ( isset( $acting_opts['activate'] ) && 'on' === $acting_opts['activate'] ) &&
( isset( $acting_opts['conv_activate'] ) && 'on' === $acting_opts['conv_activate'] ) ) {
$res = true;
} else {
$res = false;
}
return $res;
}
/**
* PayPay決済有効判定
*
* @return boolean
*/
public function is_activate_paypay() {
$acting_opts = $this->get_acting_settings();
if ( ( isset( $acting_opts['activate'] ) && 'on' === $acting_opts['activate'] ) &&
( isset( $acting_opts['paypay_activate'] ) && 'on' === $acting_opts['paypay_activate'] ) ) {
$res = true;
} else {
$res = false;
}
return $res;
}
/**
* 未入金ステータス
* usces_filter_noreceipt_status
*
* @param array $noreceipt_status Receive payment notification.
* @return array
*/
public function noreceipt_status( $noreceipt_status ) {
if ( ! in_array( 'acting_epsilon_conv', $noreceipt_status, true ) ) {
$noreceipt_status[] = 'acting_epsilon_conv';
update_option( 'usces_noreceipt_status', $noreceipt_status );
}
return $noreceipt_status;
}
/**
* 管理画面スクリプト
* admin_print_footer_scripts
*/
public function admin_scripts() {
$admin_page = filter_input( INPUT_GET, 'page', FILTER_DEFAULT );
switch ( $admin_page ) :
/* クレジット決済設定画面 */
case 'usces_settlement':
$settlement_selected = get_option( 'usces_settlement_selected', array() );
if ( in_array( 'epsilon', $settlement_selected, true ) ) :
?>
error_mes = '';
$options = get_option( 'usces', array() );
$payment_method = usces_get_system_option( 'usces_payment_method', 'settlement' );
$post_data = wp_unslash( $_POST );
unset( $options['acting_settings']['epsilon'] );
$options['acting_settings']['epsilon']['contract_code'] = ( isset( $post_data['contract_code'] ) ) ? trim( $post_data['contract_code'] ) : '';
$options['acting_settings']['epsilon']['ope'] = ( isset( $post_data['ope'] ) ) ? $post_data['ope'] : '';
$options['acting_settings']['epsilon']['card_activate'] = ( isset( $post_data['card_activate'] ) ) ? $post_data['card_activate'] : '';
$options['acting_settings']['epsilon']['multi_currency'] = ( isset( $post_data['multi_currency'] ) ) ? $post_data['multi_currency'] : '';
$options['acting_settings']['epsilon']['3dsecure'] = ( isset( $post_data['3dsecure'] ) ) ? $post_data['3dsecure'] : '';
$options['acting_settings']['epsilon']['process_code'] = ( isset( $post_data['process_code'] ) ) ? $post_data['process_code'] : '';
$options['acting_settings']['epsilon']['conv_activate'] = ( isset( $post_data['conv_activate'] ) ) ? $post_data['conv_activate'] : '';
$options['acting_settings']['epsilon']['conv_limit'] = ( isset( $post_data['conv_limit'] ) ) ? wp_unslash( $post_data['conv_limit'] ) : '';
$options['acting_settings']['epsilon']['paypay_activate'] = ( isset( $post_data['paypay_activate'] ) ) ? $post_data['paypay_activate'] : '';
if ( 'on' === $options['acting_settings']['epsilon']['card_activate'] || 'on' === $options['acting_settings']['epsilon']['conv_activate'] || 'on' === $options['acting_settings']['epsilon']['paypay_activate'] ) {
if ( '' === $options['acting_settings']['epsilon']['contract_code'] ) {
$this->error_mes .= '※契約番号を入力してください
';
}
if ( '' === $options['acting_settings']['epsilon']['ope'] ) {
$this->error_mes .= '※稼働環境を選択してください
';
}
}
if ( '' === $this->error_mes ) {
$usces->action_status = 'success';
$usces->action_message = __( 'Options are updated.', 'usces' );
if ( 'on' === $options['acting_settings']['epsilon']['card_activate'] || 'on' === $options['acting_settings']['epsilon']['conv_activate'] || 'on' === $options['acting_settings']['epsilon']['paypay_activate'] ) {
$options['acting_settings']['epsilon']['activate'] = 'on';
if ( 'public' === $options['acting_settings']['epsilon']['ope'] ) {
$options['acting_settings']['epsilon']['send_url'] = 'https://secure.epsilon.jp/cgi-bin/order/receive_order3.cgi';
} elseif ( 'test' === $options['acting_settings']['epsilon']['ope'] ) {
$options['acting_settings']['epsilon']['send_url'] = 'https://beta.epsilon.jp/cgi-bin/order/receive_order3.cgi';
}
$toactive = array();
if ( 'on' === $options['acting_settings']['epsilon']['card_activate'] ) {
$usces->payment_structure['acting_epsilon_card'] = 'カード決済(イプシロン)';
foreach ( $payment_method as $settlement => $payment ) {
if ( 'acting_epsilon_card' === $settlement && 'activate' !== $payment['use'] ) {
$toactive[] = $payment['name'];
}
}
} else {
unset( $usces->payment_structure['acting_epsilon_card'] );
}
if ( 'on' === $options['acting_settings']['epsilon']['conv_activate'] ) {
$usces->payment_structure['acting_epsilon_conv'] = 'コンビニ決済(イプシロン)';
foreach ( $payment_method as $settlement => $payment ) {
if ( 'acting_epsilon_conv' === $settlement && 'activate' !== $payment['use'] ) {
$toactive[] = $payment['name'];
}
}
} else {
unset( $usces->payment_structure['acting_epsilon_conv'] );
}
if ( 'on' === $options['acting_settings']['epsilon']['paypay_activate'] ) {
$usces->payment_structure['acting_epsilon_paypay'] = 'PayPay決済(イプシロン)';
foreach ( $payment_method as $settlement => $payment ) {
if ( 'acting_epsilon_paypay' === $settlement && 'activate' !== $payment['use'] ) {
$toactive[] = $payment['name'];
}
}
} else {
unset( $usces->payment_structure['acting_epsilon_paypay'] );
}
usces_admin_orderlist_show_wc_trans_id();
if ( 0 < count( $toactive ) ) {
$usces->action_message .= __( 'Please update the payment method to "Activate". General Setting > Payment Methods', 'usces' );
}
} else {
$options['acting_settings']['epsilon']['activate'] = 'off';
unset( $usces->payment_structure['acting_epsilon_card'] );
unset( $usces->payment_structure['acting_epsilon_conv'] );
unset( $usces->payment_structure['acting_epsilon_paypay'] );
}
$deactivate = array();
foreach ( $payment_method as $settlement => $payment ) {
if ( ! array_key_exists( $settlement, $usces->payment_structure ) ) {
if ( 'deactivate' !== $payment['use'] ) {
$payment['use'] = 'deactivate';
$deactivate[] = $payment['name'];
usces_update_system_option( 'usces_payment_method', $payment['id'], $payment );
}
}
}
if ( 0 < count( $deactivate ) ) {
$deactivate_message = sprintf( __( '"Deactivate" %s of payment method.', 'usces' ), implode( ',', $deactivate ) );
$usces->action_message .= $deactivate_message;
}
} else {
$usces->action_status = 'error';
$usces->action_message = __( 'Data have deficiency.', 'usces' );
$options['acting_settings']['epsilon']['activate'] = 'off';
unset( $usces->payment_structure['acting_epsilon_card'] );
unset( $usces->payment_structure['acting_epsilon_conv'] );
unset( $usces->payment_structure['acting_epsilon_paypay'] );
$deactivate = array();
foreach ( $payment_method as $settlement => $payment ) {
if ( in_array( $settlement, $this->pay_method, true ) ) {
if ( 'deactivate' !== $payment['use'] ) {
$payment['use'] = 'deactivate';
$deactivate[] = $payment['name'];
usces_update_system_option( 'usces_payment_method', $payment['id'], $payment );
}
}
}
if ( 0 < count( $deactivate ) ) {
$deactivate_message = sprintf( __( '"Deactivate" %s of payment method.', 'usces' ), implode( ',', $deactivate ) );
$usces->action_message .= $deactivate_message . __( 'Please complete the setup and update the payment method to "Activate".', 'usces' );
}
}
ksort( $usces->payment_structure );
update_option( 'usces', $options );
update_option( 'usces_payment_structure', $usces->payment_structure );
}
/**
* クレジット決済設定画面タブ
* usces_action_settlement_tab_title
*/
public function settlement_tab_title() {
$settlement_selected = get_option( 'usces_settlement_selected', array() );
if ( in_array( $this->paymod_id, $settlement_selected, true ) ) {
echo '
acting_formal_name ); ?>
acting_name ); ?>の詳細はこちら 》
この決済は「外部リンク型」の決済システムです。
「外部リンク型」とは、決済会社のページへ遷移してカード情報を入力する決済システムです。