Japanese English

PHP 難読化コードの復元・デコード

Wordpress 等でのPHPのマルウェア・ウィルス・改ざんコードをデコードして難読化をオンラインで解除し、
元の読みやすいコードに戻し解読できます。

※すべての難読化コードを解除できるわけではございませんのでご理解とご了承をお願いいたします。

下記のコードを難読化解除しました

<?php require_once PLUGIN_UPLOAD_REALDIR . 'AmazonPaymentsV2/class/plg_AmazonPaymentsV2_SC_AmazonPayments.php'; require_once PLUGIN_UPLOAD_REALDIR . 'AmazonPaymentsV2/class/util/plg_AmazonPaymentsV2_SC_Utils.php'; class AmazonPaymentsV2 extends SC_Plugin_Base { public function __construct(array $...



難読化されたPHPコード

<?php
 require_once PLUGIN_UPLOAD_REALDIR . 'AmazonPaymentsV2/class/plg_AmazonPaymentsV2_SC_AmazonPayments.php'; require_once PLUGIN_UPLOAD_REALDIR . 'AmazonPaymentsV2/class/util/plg_AmazonPaymentsV2_SC_Utils.php'; class AmazonPaymentsV2 extends SC_Plugin_Base { public function __construct(array $arrSelfInfo) { parent::__construct($arrSelfInfo); $arrConfig = unserialize($arrSelfInfo['free_field1']); require_once PLUGIN_UPLOAD_REALDIR . 'AmazonPaymentsV2/inc/include.php'; if ($arrConfig['amazon_account_mode'] != 1) { $arrConfig['amazon_seller_id'] = PLG_AMAZONPAYMENTSV2_TEST_AMAZON_SALLER_ID; $arrConfig['public_key_id'] = PLG_AMAZONPAYMENTSV2_TEST_PUBLIC_KEY_ID; $arrConfig['private_key_path'] = PLG_AMAZONPAYMENTSV2_TEST_PRIVATE_KEY_PATH; $arrConfig['amazon_client_id'] = $arrConfig['test_amazon_client_id']; } foreach ($arrConfig as $key => $value) { if (is_array($value)) { foreach ($value as $key2) { define('PLG_AMAZONPAYMENTSV2_'.mb_strtoupper($key.'_'.$key2), 'selected'); } } else { define('PLG_AMAZONPAYMENTSV2_'.mb_strtoupper($key), $value); } } } function install($arrPlugin, $objPluginInstaller = null) { plg_AmazonPaymentsV2_SC_Utils::printLog("AmazonPayments install start."); $copy_dir = PLUGIN_UPLOAD_REALDIR . $arrPlugin['plugin_code'] . '/copy/'; if(copy($copy_dir.'logo.png', PLUGIN_HTML_REALDIR . $arrPlugin['plugin_code'].'/logo.png') === false); SC_Utils_Ex::copyDirectory($copy_dir . 'html/', HTML_REALDIR); SC_Utils_Ex::copyDirectory($copy_dir . 'Smarty/pc/', TEMPLATE_REALDIR); SC_Utils_Ex::copyDirectory($copy_dir . 'Smarty/sphone/', SMARTPHONE_TEMPLATE_REALDIR); self::installSQL(); plg_AmazonPaymentsV2_SC_Utils::autoSendMail(__FUNCTION__); plg_AmazonPaymentsV2_SC_Utils::printLog("AmazonPayments install end."); } function uninstall($arrPlugin, $objPluginInstaller = null) { plg_AmazonPaymentsV2_SC_Utils::deleteHtmlFile(); plg_AmazonPaymentsV2_SC_Utils::deleteUserDataFile(); plg_AmazonPaymentsV2_SC_Utils::deleteTemplateFile(); self::uninstallSQL(); SC_Helper_FileManager_Ex::deleteFile(PLUGIN_HTML_REALDIR . $arrPlugin['plugin_code']); plg_AmazonPaymentsV2_SC_Utils::autoSendMail(__FUNCTION__); } function enable($arrPlugin, $objPluginInstaller = null) { } function disable($arrPlugin, $objPluginInstaller = null) { } function register(SC_Helper_Plugin $objHelperPlugin, $priority) { $objHelperPlugin->addAction('prefilterTransform', array(&$this, 'prefilterTransform')); $objHelperPlugin->addAction('LC_Page_Cart_action_before', array(&$this, 'redirectUrl')); $objHelperPlugin->addAction('LC_Page_Cart_action_after', array(&$this, 'cartActionAfter')); $objHelperPlugin->addAction('LC_Page_Mypage_Login_action_before', array(&$this, 'redirectUrl')); $objHelperPlugin->addAction('LC_Page_Mypage_Login_action_after', array(&$this, 'mypageLoginActionAfter')); $objHelperPlugin->addAction('LC_Page_Shopping_action_before', array(&$this, 'redirectUrl')); $objHelperPlugin->addAction('LC_Page_Shopping_action_after', array(&$this, 'shoppingActionAfter')); $objHelperPlugin->addAction('LC_Page_Shopping_Payment_action_after', array(&$this, 'shoppingPaymentActionAfter')); $objHelperPlugin->addAction('LC_Page_Forgot_action_after', array(&$this, 'forgotActionAfter')); $objHelperPlugin->addAction('LC_Page_Admin_Order_action_before', array(&$this, 'adminOrderActionBefore')); $objHelperPlugin->addAction('LC_Page_Admin_Order_action_after', array(&$this, 'adminOrderActionAfter')); } function cartActionAfter(LC_Page_Ex $objPage) { if (empty($objPage->cartItems)) { return; } $objAmznPay = new plg_AmazonPaymentsV2_SC_AmazonPayments(); $arrPayload = array(); $arrSignature = array(); foreach ($objPage->cartItems as $key => $cartItem) { $payload = $objAmznPay->createCheckoutSessionPayload($key); $arrPayload[$key] = $payload; $arrSignature[$key] = $objAmznPay->signaturePayload($payload); } $arrAmazonDelivList = $this->cartCheckAble($objPage); $arrAmazonProductTypeId = array(); foreach ($arrAmazonDelivList as $AmazonDelivList) { $arrAmazonProductTypeId[] = (int)$AmazonDelivList['product_type_id']; } $objPage->arrPayload = $arrPayload; $objPage->arrSignature = $arrSignature; $objPage->arrAmazonDelivList = $arrAmazonProductTypeId; } function mypageLoginActionAfter(LC_Page_Ex $objPage) { if ((($objPage->arrPageLayout['device_type_id'] == DEVICE_TYPE_PC) && (PLG_AMAZONPAYMENTSV2_PC_AMAZON_LOGIN_BUTTON_SELECT_MYPAGE == 'selected')) || (($objPage->arrPageLayout['device_type_id'] == DEVICE_TYPE_SMARTPHONE) && (PLG_AMAZONPAYMENTSV2_SPHONE_AMAZON_LOGIN_BUTTON_SELECT_MYPAGE == 'selected'))){ $return_url = HTTPS_URL."mypage/plg_AmazonPaymentsV2_login.html"; $this->setAmazonLoginParameter($objPage, $return_url); } } function shoppingActionAfter(LC_Page_Ex $objPage) { if ((($objPage->arrPageLayout['device_type_id'] == DEVICE_TYPE_PC) && (PLG_AMAZONPAYMENTSV2_PC_AMAZON_LOGIN_BUTTON_SELECT_SHOPPING == 'selected')) || (($objPage->arrPageLayout['device_type_id'] == DEVICE_TYPE_SMARTPHONE) && (PLG_AMAZONPAYMENTSV2_SPHONE_AMAZON_LOGIN_BUTTON_SELECT_SHOPPING == 'selected'))){ $return_url = HTTPS_URL."shopping/plg_AmazonPaymentsV2_login.html"; $this->setAmazonLoginParameter($objPage, $return_url); } } function setAmazonLoginParameter(&$objPage, $return_url) { $objAmznPay = new plg_AmazonPaymentsV2_SC_AmazonPayments(); $objPage->amazon_login_payload = $objAmznPay->generateSigninPayload($return_url); $objPage->amazon_login_signature = $objAmznPay->signaturePayload($objPage->amazon_login_payload); } function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename) { $objTransform = new SC_Helper_Transform_Ex($source); $template_dir = PLUGIN_UPLOAD_REALDIR . 'AmazonPaymentsV2/templates/'; switch ($objPage->arrPageLayout['device_type_id']) { case DEVICE_TYPE_PC: if (strpos($filename, 'cart/index.tpl') !== false) { $objTransform->select('form')->insertBefore(file_get_contents($template_dir . 'pc/cart/plg_AmazonPaymentsV2_index_js.tpl')); if (PLG_AMAZONPAYMENTSV2_PC_AMAZON_BUTTON_PLACE_CART == 'auto') { $objTransform->select('div.btn_area')->find('ul')->appendChild(file_get_contents($template_dir . 'pc/cart/plg_AmazonPaymentsV2_index_button.tpl')); } else { $objTransform->select('div#amazon_custom_button', null, false)->replaceElement(file_get_contents($template_dir . 'pc/cart/plg_AmazonPaymentsV2_index_custom_button.tpl')); } } if (strpos($filename, 'mypage/login.tpl') !== false && PLG_AMAZONPAYMENTSV2_PC_AMAZON_LOGIN_BUTTON_SELECT_MYPAGE == 'selected') { $objTransform->select('#undercolumn')->insertBefore(file_get_contents($template_dir . 'pc/mypage/plg_AmazonPaymentsV2_login_js.tpl')); if (PLG_AMAZONPAYMENTSV2_PC_AMAZON_LOGIN_BUTTON_PLACE_MYPAGE == 'auto') { $objTransform->select('div.login_area')->appendChild(file_get_contents($template_dir . 'pc/mypage/plg_AmazonPaymentsV2_login_button.tpl')); } } if (strpos($filename, 'shopping/index.tpl') !== false && PLG_AMAZONPAYMENTSV2_PC_AMAZON_LOGIN_BUTTON_SELECT_SHOPPING == 'selected') { $objTransform->select('#undercolumn')->insertBefore(file_get_contents($template_dir . 'pc/shopping/plg_AmazonPaymentsV2_login_js.tpl')); if (PLG_AMAZONPAYMENTSV2_PC_AMAZON_LOGIN_BUTTON_PLACE_SHOPPING == 'auto') { $objTransform->select('form#member_form')->appendChild(file_get_contents($template_dir . 'pc/shopping/plg_AmazonPaymentsV2_login_button.tpl')); } } break; case DEVICE_TYPE_SMARTPHONE: if (strpos($filename, 'cart/index.tpl') !== false) { $objTransform->select('#undercolumn')->insertBefore(file_get_contents($template_dir . 'sphone/cart/plg_AmazonPaymentsV2_index_js.tpl')); if (PLG_AMAZONPAYMENTSV2_SPHONE_AMAZON_BUTTON_PLACE_CART == 'auto') { $objTransform->select('div.btn_area_btm')->appendChild(file_get_contents($template_dir . 'sphone/cart/plg_AmazonPaymentsV2_index_button.tpl')); } else { $objTransform->select('div#amazon_custom_button_1', null, false)->replaceElement(file_get_contents($template_dir . 'sphone/cart/plg_AmazonPaymentsV2_index_custom_button_1.tpl')); $objTransform->select('div#amazon_custom_button_2', null, false)->replaceElement(file_get_contents($template_dir . 'sphone/cart/plg_AmazonPaymentsV2_index_custom_button_2.tpl')); } } if (strpos($filename, 'mypage/login.tpl') !== false && PLG_AMAZONPAYMENTSV2_SPHONE_AMAZON_LOGIN_BUTTON_SELECT_MYPAGE == 'selected') { $objTransform->select('#slidewindow')->insertBefore(file_get_contents($template_dir . 'sphone/mypage/plg_AmazonPaymentsV2_login_js.tpl')); if (PLG_AMAZONPAYMENTSV2_SPHONE_AMAZON_LOGIN_BUTTON_PLACE_MYPAGE == 'auto') { $objTransform->select('div.login_area')->appendChild(file_get_contents($template_dir . 'sphone/mypage/plg_AmazonPaymentsV2_login_button.tpl')); } } if (strpos($filename, 'shopping/index.tpl') !== false && PLG_AMAZONPAYMENTSV2_SPHONE_AMAZON_LOGIN_BUTTON_SELECT_SHOPPING == 'selected') { $objTransform->select('#slidewindow')->insertBefore(file_get_contents($template_dir . 'sphone/shopping/plg_AmazonPaymentsV2_login_js.tpl')); if (PLG_AMAZONPAYMENTSV2_SPHONE_AMAZON_LOGIN_BUTTON_PLACE_SHOPPING == 'auto') { $objTransform->select('div.login_area')->appendChild(file_get_contents($template_dir . 'sphone/shopping/plg_AmazonPaymentsV2_login_button.tpl')); } } break; case DEVICE_TYPE_ADMIN: default: if (strpos($filename, 'order/index.tpl') !== false) { $objTransform->select('div#order')->insertBefore(file_get_contents($template_dir . 'admin/order/plg_AmazonPaymentsV2_index_add_1.tpl')); $objTransform->select('form#form1')->appendFirst(file_get_contents($template_dir . 'admin/order/plg_AmazonPaymentsV2_index_add_2.tpl')); $objTransform->select('table.list')->insertBefore(file_get_contents($template_dir . 'admin/order/plg_AmazonPaymentsV2_index_add_3.tpl')); $objTransform->select('table.list')->appendFirst(file_get_contents($template_dir . 'admin/order/plg_AmazonPaymentsV2_index_add_4.tpl')); $objTransform->select('table.list')->find('tr', 0)->find('th', 6)->insertAfter(file_get_contents($template_dir . 'admin/order/plg_AmazonPaymentsV2_index_add_5.tpl')); $objTransform->select('table.list')->find('tr', 1)->find('td', 6)->insertAfter(file_get_contents($template_dir . 'admin/order/plg_AmazonPaymentsV2_index_add_6.tpl')); } } $source = $objTransform->getHTML(); } function redirectUrl(LC_Page_Ex $objPage) { if (empty($_SERVER['HTTPS'])) { $url = $objPage->arrPageLayout['url']; $redirect_flg = false; switch ($objPage->arrPageLayout['device_type_id']) { case DEVICE_TYPE_PC: if (strpos($url, 'cart/index.php') !== false) { $redirect_flg = true; } if (strpos($url, 'mypage/login.php') !== false && PLG_AMAZONPAYMENTSV2_PC_AMAZON_LOGIN_BUTTON_SELECT_MYPAGE == 'selected') { $redirect_flg = true; } if (strpos($url, 'shopping/index.php') !== false && PLG_AMAZONPAYMENTSV2_PC_AMAZON_LOGIN_BUTTON_SELECT_SHOPPING == 'selected') { $redirect_flg = true; } break; case DEVICE_TYPE_SMARTPHONE: if (strpos($url, 'cart/index.php') !== false) { $redirect_flg = true; } if (strpos($url, 'mypage/login.php') !== false && PLG_AMAZONPAYMENTSV2_SPHONE_AMAZON_LOGIN_BUTTON_SELECT_MYPAGE == 'selected') { $redirect_flg = true; } if (strpos($url, 'shopping/index.php') !== false && PLG_AMAZONPAYMENTSV2_SPHONE_AMAZON_LOGIN_BUTTON_SELECT_SHOPPING == 'selected') { $redirect_flg = true; } break; default: break; } if ($redirect_flg) { header("Location: https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}"); exit; } } } function shoppingPaymentActionAfter(LC_Page_Ex $objPage) { $amazon_payment_id = plg_AmazonPaymentsV2_SC_Utils::getAmazonPaymentId(); foreach ($objPage->arrPayment as $key => $payment) { if ($payment['payment_id'] == $amazon_payment_id) { unset($objPage->arrPayment[$key]); $objPage->arrPayment = array_values($objPage->arrPayment); } } } function forgotActionAfter(LC_Page_Ex $objPage) { if ($_POST['mode'] == 'mail_check') { $objQuery =& SC_Query_Ex::getSingletonInstance(); $where = '(email = ? OR email_mobile = ?) AND del_flg = 0'; $arrVal = array($objPage->arrForm['email'], $objPage->arrForm['email']); $result = $objQuery->select('reminder, plg_amazonpaymentsv2_buyer_id', 'dtb_customer', $where, $arrVal); if (!isset($result[0]['reminder']) && !isset($objPage->arrReminder[$result[0]['reminder']]) && isset($result[0]['plg_amazonpaymentsv2_buyer_id'])) { $contact_url = HTTPS_URL . "contact/" . DIR_INDEX_PATH; $objPage->errmsg = <<<__EOS__
<div class="attention alignL">
ご登録されたメールアドレスはAmazon Payからのご登録だったため、申し訳ございませんが、この機能はご利用できません。<br/>
<br/>
Amazon Payをご利用のお客様には、初回ご注文時にお送りしたメールに仮パスワードを記載させて頂いております。ご確認をお願いいたします。<br/>
<br/>
上記メールがご不明の場合、お手数ですが、<a href="{$contact_url}">お問い合わせページ</a>からお問い合わせください。
</div>
__EOS__;
} } } function adminOrderActionBefore(LC_Page_Ex $objPage) { $amazon_request = $_POST['amazon_request']; if ($amazon_request == PLG_AMAZONPAYMENTSV2_REQ_CAPTURE || $amazon_request == PLG_AMAZONPAYMENTSV2_REQ_CANCEL) { if (!empty($_POST['amazon_order_id'])) { $arrOrderId = array($_POST['amazon_order_id']); } else { $arrOrderId = $_POST[$amazon_request]; } $arrParameter = $this->getParameter($arrOrderId); if (empty($arrParameter)) { plg_AmazonPaymentsV2_SC_Utils::printLog("ERROR: request_parameter empty. POST=".print_r($_POST,true)); } $arrErr = ''; foreach ($arrParameter as $parameter) { $arrErr .= $this->amazonRequest($amazon_request, $parameter); } $objPage->amazonErr = $arrErr; } } function adminOrderActionAfter(LC_Page_Ex $objPage) { $arrAmazonResults = array(); $searchOrder = array(); $searchOrder = $objPage->arrResults; foreach ((array)$searchOrder as $order) { if ((strpos($order[PLG_AMAZONPAYMENTSV2_AMAZON_PAYMENTS], 'amazonpaymentsV2') !== false) || (strpos($order[PLG_AMAZONPAYMENTSV2_AMAZON_PAYMENTS], 'amazonpayments') !== false) ) { $arrAmazonTradingInfo = unserialize($order[PLG_AMAZONPAYMENTSV2_AMAZON_TRADING_INFO]); $billableAmount = $order[PLG_AMAZONPAYMENTSV2_BILLABLE_AMOUNT]; $payment_total = $order['payment_total']; $sumAuthoriAmount = 0; $sumCaptureAmount = 0; foreach ($arrAmazonTradingInfo as $amazonTradingInfo) { $sumAuthoriAmount += $amazonTradingInfo['authori_amount']; $sumCaptureAmount += $amazonTradingInfo['capture_amount']; } if ($payment_total <= $sumCaptureAmount || $order[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] == PLG_AMAZONPAYMENTSV2_AMAZON_CANCEL || $order[PLG_IPLPERIODICPURCHASE_FREE_FLG] == 'free') { $amazonCaptureDisp = 0; } elseif ($payment_total - $sumCaptureAmount > $billableAmount) { $amazonCaptureDisp = 1; } else { if ($payment_total < $sumAuthoriAmount && $order[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] == PLG_AMAZONPAYMENTSV2_AMAZON_AUTHORI) { $amazonDiffAmount = $sumAuthoriAmount - $payment_total; $amazonCaptureDisp = 2; } elseif ($payment_total > $sumAuthoriAmount && $order[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] == PLG_AMAZONPAYMENTSV2_AMAZON_AUTHORI) { $amazonDiffAmount = $payment_total - $sumAuthoriAmount; $amazonCaptureDisp = 3; } elseif ($payment_total > $sumCaptureAmount && $order[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] == PLG_AMAZONPAYMENTSV2_AMAZON_CAPTURE) { $amazonDiffAmount = $payment_total - $sumCaptureAmount; $amazonCaptureDisp = 3; } else { $amazonCaptureDisp = 4; } } if ($amazonCaptureDisp == 3 && !empty($order['plg_ipl_periodic_purchase_periodic_purchase_id'])) { $amazonCaptureDisp = 1; } if ($order[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] == PLG_AMAZONPAYMENTSV2_AMAZON_CANCEL || $order[PLG_IPLPERIODICPURCHASE_FREE_FLG] == 'free') { $amazonCancelDisp = 0; } elseif ($order[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] == PLG_AMAZONPAYMENTSV2_AMAZON_CAPTURE){ if ($payment_total > $sumCaptureAmount) { $amazonCancelDisp = 1; } elseif ($payment_total < $sumCaptureAmount) { $amazonDiffAmount = $sumCaptureAmount - $payment_total; $amazonCancelDisp = 2; } else { $amazonCancelDisp = 3; } } else { $amazonCancelDisp = 3; } $order['amazon_diff_amount'] = $amazonDiffAmount; $order['amazon_capture_disp'] = $amazonCaptureDisp; $order['amazon_cancel_disp'] = $amazonCancelDisp; } $arrAmazonResults[] = $order; } $objPage->arrResults = $arrAmazonResults; $objPage->arrAmazonStatus = array(PLG_AMAZONPAYMENTSV2_AMAZON_AUTHORI => 'オーソリ', PLG_AMAZONPAYMENTSV2_AMAZON_CAPTURE => '売上', PLG_AMAZONPAYMENTSV2_AMAZON_CANCEL => '取消', ); $objPage->existsAmazonPaymentsV1 = plg_AmazonPaymentsV2_SC_Utils::existsAmazonPaymentsV1(); } function amazonRequest($amazon_request, $parameter) { $objAmznPay = new plg_AmazonPaymentsV2_SC_AmazonPayments(); $objPurchase = new SC_Helper_Purchase_Ex(); $objQuery =& SC_Query_Ex::getSingletonInstance(); $process = $amazon_request == PLG_AMAZONPAYMENTSV2_REQ_CAPTURE ? '売上' : '取消'; $amazonErr = ''; $order_id = $parameter['order_id']; $amazonChargePermissionId = $parameter[PLG_AMAZONPAYMENTSV2_AMAZON_REFERENCE_ID]; $arrAmazonTradingInfo = unserialize($parameter[PLG_AMAZONPAYMENTSV2_AMAZON_TRADING_INFO]); $amazonStatus = $parameter[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS]; $sumAuthoriAmount = 0; $sumCaptureAmount = 0; foreach ($arrAmazonTradingInfo as $amazonTradingInfo) { $sumAuthoriAmount += $amazonTradingInfo['authori_amount']; $sumCaptureAmount += $amazonTradingInfo['capture_amount']; } $payment_total = $parameter['payment_total']; $billableAmount = $parameter[PLG_AMAZONPAYMENTSV2_BILLABLE_AMOUNT]; $is_periodic_purchase = !empty($parameter['plg_ipl_periodic_purchase_periodic_purchase_id']); $totalBillingAmount = $payment_total - $sumCaptureAmount; if ($amazon_request == PLG_AMAZONPAYMENTSV2_REQ_CANCEL && $payment_total == $sumCaptureAmount) { $allRefund_flg = true; } else { $allRefund_flg = false; } $totalRefundAmount = $allRefund_flg ? $payment_total : $sumCaptureAmount - $payment_total; $resultAmazonTradingInfo = array(); foreach ($arrAmazonTradingInfo as $key => $amazonTradingInfo) { $amazonChargeId = $amazonTradingInfo['charge_id']; if (!$amazonChargeId) { $amazonChargeId = substr_replace($amazonTradingInfo['id'], "C", 20, 1); } $authoriAmount = $amazonTradingInfo['authori_amount']; $captureAmount = $amazonTradingInfo['capture_amount']; $refundCount = $amazonTradingInfo['refund_count']; if ($amazon_request == PLG_AMAZONPAYMENTSV2_REQ_CAPTURE) { if ($captureAmount > 0 || $totalBillingAmount == 0) { $resultAmazonTradingInfo[$key] = $amazonTradingInfo; } else { $billingAmount = $authoriAmount > $totalBillingAmount ? $totalBillingAmount : $authoriAmount; $r = $objAmznPay->captureCharge($amazonChargeId, $billingAmount); if (isset($r->reasonCode)) { plg_AmazonPaymentsV2_SC_Utils::printLog("ERROR: aws captureCharge request error from admin_order r=".var_export($r, true)); break; } $amazonTradingInfo = array('charge_id' => $amazonChargeId, 'authori_amount' => $authoriAmount, 'capture_amount' => $billingAmount, 'refund_count' => $refundCount, ); $resultAmazonTradingInfo[$key] = $amazonTradingInfo; $totalBillingAmount = $totalBillingAmount - $billingAmount; $billableAmount = $billableAmount - $billingAmount; } if (($payment_total > $sumAuthoriAmount && $amazonStatus == PLG_AMAZONPAYMENTSV2_AMAZON_AUTHORI) || ($totalBillingAmount > 0 && $amazonStatus == PLG_AMAZONPAYMENTSV2_AMAZON_CAPTURE)) { if ($amazonStatus == PLG_AMAZONPAYMENTSV2_AMAZON_AUTHORI) { $addAmount = $payment_total - $sumAuthoriAmount; } else { $addAmount = $totalBillingAmount; } $r = $objAmznPay->createCharge($amazonChargePermissionId, $addAmount); if (isset($r->reasonCode) || !isset($r->chargeId)) { plg_AmazonPaymentsV2_SC_Utils::printLog("ERROR: aws request createCharge error from admin_order r=".var_export($r, true)); break; } $newAmazonChargeId = $r->chargeId; $r = $objAmznPay->captureCharge($newAmazonChargeId, $addAmount); if (isset($r->reasonCode)) { logs('amazon_pay_v2')->error('aws request error from admin_order r=' . var_export($r, true)); break; } $addAmazonTradingInfo = array('charge_id' => $newAmazonChargeId, 'authori_amount' => $addAmount, 'capture_amount' => $addAmount, 'refund_count' => 0, ); $resultAmazonTradingInfo[count($arrAmazonTradingInfo)] = $addAmazonTradingInfo; $totalBillingAmount = $totalBillingAmount - $addAmount; $billableAmount = $billableAmount - $addAmount; } } else { $arrOrderOld = $objQuery->getRow('status, add_point, use_point, customer_id', 'dtb_order', 'order_id = ?', array($order_id)); $newStatus = ORDER_CANCEL; $newUsePoint = $arrOrderOld['use_point']; $newAddPoint = $arrOrderOld['add_point']; if (USE_POINT !== false && $arrOrderOld['customer_id']) { $addCustomerPoint = 0; if ($objPurchase->isUsePoint($arrOrderOld['status'])) { $addCustomerPoint += $arrOrderOld['use_point']; } if ($objPurchase->isUsePoint($newStatus)) { $addCustomerPoint -= $newUsePoint; } if ($objPurchase->isAddPoint($arrOrderOld['status'])) { $addCustomerPoint -= $arrOrderOld['add_point']; } if ($objPurchase->isAddPoint($newStatus)) { $addCustomerPoint += $newAddPoint; } if ($addCustomerPoint < 0) { $point = $objQuery->get('point', 'dtb_customer', 'customer_id = ?', array($arrOrderOld['customer_id'])); $total_point = $point + $addCustomerPoint; if ($total_point < 0) { $amazonErr = '■注文番号:' .$order_id .'の決済で下記のエラーが発生しました。<br>' .'該当会員の所持ポイントがマイナスになるため処理を終了しました。<br>'; return $amazonErr; } } } if ($sumCaptureAmount == 0) { if ($is_periodic_purchase !== false) { } else { $r = $objAmznPay->closeChargePermission($amazonChargePermissionId); } $resultAmazonTradingInfo[$key] = $amazonTradingInfo; $cancel_flg = true; } elseif ($totalRefundAmount == 0 || $captureAmount == 0) { $resultAmazonTradingInfo[$key] = $amazonTradingInfo; } else { $refundAmount = $captureAmount > $totalRefundAmount ? $totalRefundAmount : $captureAmount; $refundCount = $refundCount + 1; $r = $objAmznPay->createRefund($amazonChargeId, $refundAmount); if (isset($r->reasonCode)) { plg_AmazonPaymentsV2_SC_Utils::printLog("ERROR: aws createRefund request error from admin_order r=".var_export($r, true)); break; } $amazonTradingInfo = array('charge_id' => $amazonChargeId, 'authori_amount' => $authoriAmount, 'capture_amount' => $captureAmount - $refundAmount, 'refund_count' => $refundCount, ); $resultAmazonTradingInfo[$key] = $amazonTradingInfo; $totalRefundAmount = $totalRefundAmount - $refundAmount; } } } if (isset($r->reasonCode)) { $amazonErr = '■注文番号:' .$order_id .'の決済で下記のエラーが発生しました。<br>' .'リクエストを受け付けないため処理を終了しました。<br>'; } elseif (is_object($r)) { $sqlVal = array(); $status = null; if ($cancel_flg || $allRefund_flg) { $sqlVal[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] = PLG_AMAZONPAYMENTSV2_AMAZON_CANCEL; $sqlVal[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS_NAME] = '取消'; $status = ORDER_CANCEL; } else { $sqlVal[PLG_AMAZONPAYMENTSV2_BILLABLE_AMOUNT] = $billableAmount; $sqlVal[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] = PLG_AMAZONPAYMENTSV2_AMAZON_CAPTURE; $sqlVal[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS_NAME] = '売上'; $sqlVal['payment_date'] = 'CURRENT_TIMESTAMP'; } $sqlVal[PLG_AMAZONPAYMENTSV2_AMAZON_TRADING_INFO] = serialize($resultAmazonTradingInfo); $sqlVal['update_date'] = 'CURRENT_TIMESTAMP'; $objQuery->begin(); $objPurchase->sfUpdateOrderStatus($order_id, $status, null, null, $sqlVal); $objQuery->commit(); } else { $amazonErr = '■注文番号:' .$order_id .'の決済で下記のエラーが発生しました。<br>' .$process .'リクエストに失敗しました。<br>' .var_export($r, true) .'<br>'; } return $amazonErr; } function getParameter($arrOrderId) { $objQuery =& SC_Query_Ex::getSingletonInstance(); $cols = '*'; $where = 'order_id IN (' . SC_Utils_Ex::repeatStrWithSeparator('?', count($arrOrderId)) . ')'; $result = $objQuery->select($cols, 'dtb_order', $where, $arrOrderId); return $result; } function installSQL() { $objQuery =& SC_Query_Ex::getSingletonInstance(); $objDB = new SC_Helper_DB_Ex(); plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL start."); $objDB->sfColumnExists('dtb_customer', 'plg_amazonpaymentsv2_buyer_id', 'text', "", true); self::lfInsertPagelayout($objQuery); self::lfInsertCsv($objQuery); self::lfInsertConstants($objQuery); self::lfInsertPayment($objQuery); plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL end."); } function uninstallSQL() { $objQuery =& SC_Query_Ex::getSingletonInstance(); $objQuery->query("ALTER TABLE dtb_customer DROP plg_amazonpaymentsv2_buyer_id;"); self::lfDeletePayment($objQuery); self::lfDeletePagelayout($objQuery); self::lfDeleteCsv($objQuery); self::lfDeleteConstants($objQuery); } function lfInsertPagelayout(&$objQuery) { $arrPageData = self::lfGetPagelayout(); foreach ($arrPageData as $pageData) { if (!$objQuery->exists('dtb_pagelayout', 'device_type_id = ? AND url = ?',array(DEVICE_TYPE_PC, $pageData['file_name'] . '.php'))) { $arrVal = array( 'device_type_id' => DEVICE_TYPE_PC, 'page_name' => $pageData['page_name'], 'url' => $pageData['file_name'] . '.php', 'filename' => $pageData['file_name'], 'header_chk' => 1, 'footer_chk' => 1, 'edit_flg' => 2, 'create_date' => 'CURRENT_TIMESTAMP', 'update_date' => 'CURRENT_TIMESTAMP', ); $page_id = $objQuery->get('max(page_id) + 1', 'dtb_pagelayout', 'device_type_id = ?', array(DEVICE_TYPE_PC)); $arrVal['page_id'] = $page_id; $objQuery->insert('dtb_pagelayout', $arrVal); } else { plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL already exist record device_type_id=" . DEVICE_TYPE_PC . " url=" . $pageData['file_name'] . ".php' in dtb_pagelayout."); } if (!$objQuery->exists('dtb_pagelayout', 'device_type_id = ? AND url = ?', array(DEVICE_TYPE_SMARTPHONE, $pageData['file_name'] . '.php'))) { $arrVal = array( 'device_type_id' => DEVICE_TYPE_SMARTPHONE, 'page_name' => $pageData['page_name'], 'url' => $pageData['file_name'] . '.php', 'filename' => $pageData['file_name'], 'header_chk' => 1, 'footer_chk' => 1, 'edit_flg' => 2, 'create_date' => 'CURRENT_TIMESTAMP', 'update_date' => 'CURRENT_TIMESTAMP', ); $page_id = $objQuery->get('max(page_id) + 1', 'dtb_pagelayout', 'device_type_id = ?', array(DEVICE_TYPE_SMARTPHONE)); $arrVal['page_id'] = $page_id; $objQuery->insert('dtb_pagelayout', $arrVal); } else { plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL already exist record device_type_id=" . DEVICE_TYPE_SMARTPHONE . " url=" . $pageData['file_name'] . ".php in dtb_pagelayout."); } } } function lfInsertCsv(&$objQuery) { $arrCsv = self::lfGetCsv(); foreach ($arrCsv as $csv) { $max = array_pop($objQuery->getRow('max(no)', 'dtb_csv')); $next_seq = $objQuery->nextVal('dtb_csv_no'); $no = ($max + 1 <= $next_seq) ? $next_seq : $max + 1; if (!$objQuery->exists('dtb_csv', 'col = ? AND disp_name = ?', array($csv['col'], $csv['disp_name']))) { $arrVal = array( 'no' => $no, 'csv_id' => 3, 'col' => $csv['col'], 'disp_name' => $csv['disp_name'], 'rank' => NULL, 'rw_flg' => 2, 'status' => 1, 'create_date' => 'CURRENT_TIMESTAMP', 'update_date' => 'CURRENT_TIMESTAMP', ); $objQuery->insert('dtb_csv', $arrVal); } else { plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL already exist record disp_name=" . $csv['disp_name'] . " in dtb_csv."); } } } function lfInsertConstants(&$objQuery) { $arrConstants = self::lfGetConstants(); foreach ($arrConstants as $constants) { if (!$objQuery->exists('mtb_constants', 'id = ?', array($constants['id']))) { $rank = $objQuery->max('rank', 'mtb_constants') + 1; $arrVal = array( 'id' => $constants['id'], 'name' => $constants['name'], 'rank' => $rank, 'remarks' => $constants['remarks'], ); $objQuery->insert('mtb_constants', $arrVal); } else { plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL already exist record id=" . $constants['id'] . "in mtb_constants."); } } } function lfInsertPayment(&$objQuery) { $max = array_pop($objQuery->getRow('max(payment_id)', 'dtb_payment')); $next_seq = $objQuery->nextVal('dtb_payment_payment_id'); $no = ($max + 1 <= $next_seq) ? $next_seq : $max + 1; if (!$objQuery->exists('dtb_payment', 'memo03 = ?', array('amazonpaymentsV2'))) { $arrVal = array( 'payment_id' => $no, 'payment_method' => 'Amazon Pay', 'charge' => 0, 'rank' => NULL, 'fix' => 2, 'status' => 1, 'del_flg' => 0, 'creator_id' => $_SESSION['member_id'], 'create_date' => 'CURRENT_TIMESTAMP', 'update_date' => 'CURRENT_TIMESTAMP', 'module_path' => '', 'memo03' => 'amazonpaymentsV2', 'rule_min' => 9999999, 'rule_max' => 9999999, 'upper_rule' => 9999999, 'upper_rule_max' => 9999999, ); $objQuery->insert('dtb_payment', $arrVal); $payment_id = $objQuery->get('payment_id', 'dtb_payment', 'memo03 = ?', array('amazonpaymentsV2')); $objQuery->setGroupBy('deliv_id'); $arrDelivList = $objQuery->select('deliv_id, max(rank)', 'dtb_payment_options'); foreach ($arrDelivList as $deliv) { $deliv_id = $deliv['deliv_id']; $rank = $deliv['max(rank)'] + 1; $arrVal = array( 'deliv_id' => $deliv_id, 'payment_id' => $payment_id, 'rank' => $rank, ); $objQuery->insert('dtb_payment_options', $arrVal); } } else { plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL already exist record payment_method='AmazonPay' in dtb_payment."); } } function lfDeletePayment(&$objQuery) { $payment_id = $objQuery->get('payment_id', 'dtb_payment', 'memo03 = ?', array('amazonpaymentsV2')); $objQuery->delete('dtb_payment_options', 'payment_id = ?', array($payment_id)); $objQuery->delete('dtb_payment', 'memo03 = ?', array('amazonpaymentsV2')); } function lfDeletePagelayout(&$objQuery) { $arrPageData = self::lfGetPagelayout(); foreach ($arrPageData as $pageData) { $objQuery->delete('dtb_pagelayout', 'url = ?', array($pageData['file_name'] . '.php')); } } function lfDeleteCsv(&$objQuery) { $arrCsv = self::lfGetCsv(); foreach ($arrCsv as $csv) { $objQuery->delete('dtb_csv', 'col = ? AND disp_name = ?', array($csv['col'], $csv['disp_name'])); } } function lfDeleteConstants(&$objQuery) { $arrConstants = self::lfGetConstants(); foreach ($arrConstants as $constants) { $objQuery->delete('mtb_constants', 'id = ?', array($constants['id'])); } } function lfGetPagelayout() { $arrPageData = array( array('page_name' => '商品購入/Amazon Pay V2(入力ページ)', 'file_name' => 'shopping/plg_AmazonPaymentsV2_payment'), array('page_name' => '商品購入/Amazon Pay V2(確認ページ)', 'file_name' => 'shopping/plg_AmazonPaymentsV2_confirm'), ); return $arrPageData; } function lfGetCsv() { $arrCsv = array( array('col' => 'memo06 as plg_amazonpaymentsv2_amazon_reference_id', 'disp_name' => 'Amazon参照ID'), array('col' => 'memo07 as plg_amazonpaymentsv2_amazon_status_name', 'disp_name' => 'Amazon状況'), ); return $arrCsv; } function lfGetConstants() { $arrConstants = array( array('id' => 'AMAZONPAYV2_SC_PARAMETER', 'name' => '"orderReferenceId"', 'remarks' => 'SellerCentral受注詳細へのパラメータ(Amazon Pay V2)' ), ); return $arrConstants; } function cartCheckAble(LC_Page_Ex $objPage) { if (empty($objPage->cartItems)) { return; } $cartItems = $objPage->cartItems; $AmazonDelivList = plg_AmazonPaymentsV2_SC_Utils::getAmazonDelivList($cartItems[0]["productsClass"]["product_type_id"]); return $AmazonDelivList; } } ?>

デコード(難読化解除)されたコード

<?php

require_once "PLUGIN_UPLOAD_REALDIRAmazonPaymentsV2/class/plg_AmazonPaymentsV2_SC_AmazonPayments.php";
require_once "PLUGIN_UPLOAD_REALDIRAmazonPaymentsV2/class/util/plg_AmazonPaymentsV2_SC_Utils.php";
class AmazonPaymentsV2 extends SC_Plugin_Base
{
    public function __construct(array $arrSelfInfo)
    {
        parent::__construct($arrSelfInfo);
        $arrConfig = unserialize($arrSelfInfo['free_field1']);
        require_once "PLUGIN_UPLOAD_REALDIRAmazonPaymentsV2/inc/include.php";
        if ($arrConfig['amazon_account_mode'] != 1) {
            $arrConfig['amazon_seller_id'] = PLG_AMAZONPAYMENTSV2_TEST_AMAZON_SALLER_ID;
            $arrConfig['public_key_id'] = PLG_AMAZONPAYMENTSV2_TEST_PUBLIC_KEY_ID;
            $arrConfig['private_key_path'] = PLG_AMAZONPAYMENTSV2_TEST_PRIVATE_KEY_PATH;
            $arrConfig['amazon_client_id'] = $arrConfig['test_amazon_client_id'];
        }
        foreach ($arrConfig as $key => $value) {
            if (is_array($value)) {
                foreach ($value as $key2) {
                    define('PLG_AMAZONPAYMENTSV2_' . mb_strtoupper($key . '_' . $key2), 'selected');
                }
            } else {
                define('PLG_AMAZONPAYMENTSV2_' . mb_strtoupper($key), $value);
            }
        }
    }
    function install($arrPlugin, $objPluginInstaller = null)
    {
        plg_AmazonPaymentsV2_SC_Utils::printLog("AmazonPayments install start.");
        $copy_dir = PLUGIN_UPLOAD_REALDIR . $arrPlugin['plugin_code'] . '/copy/';
        if (copy($copy_dir . 'logo.png', PLUGIN_HTML_REALDIR . $arrPlugin['plugin_code'] . '/logo.png') === false) {
        }
        SC_Utils_Ex::copyDirectory($copy_dir . 'html/', HTML_REALDIR);
        SC_Utils_Ex::copyDirectory($copy_dir . 'Smarty/pc/', TEMPLATE_REALDIR);
        SC_Utils_Ex::copyDirectory($copy_dir . 'Smarty/sphone/', SMARTPHONE_TEMPLATE_REALDIR);
        self::installSQL();
        plg_AmazonPaymentsV2_SC_Utils::autoSendMail("install");
        plg_AmazonPaymentsV2_SC_Utils::printLog("AmazonPayments install end.");
    }
    function uninstall($arrPlugin, $objPluginInstaller = null)
    {
        plg_AmazonPaymentsV2_SC_Utils::deleteHtmlFile();
        plg_AmazonPaymentsV2_SC_Utils::deleteUserDataFile();
        plg_AmazonPaymentsV2_SC_Utils::deleteTemplateFile();
        self::uninstallSQL();
        SC_Helper_FileManager_Ex::deleteFile(PLUGIN_HTML_REALDIR . $arrPlugin['plugin_code']);
        plg_AmazonPaymentsV2_SC_Utils::autoSendMail("uninstall");
    }
    function enable($arrPlugin, $objPluginInstaller = null)
    {
    }
    function disable($arrPlugin, $objPluginInstaller = null)
    {
    }
    function register(SC_Helper_Plugin $objHelperPlugin, $priority)
    {
        $objHelperPlugin->addAction('prefilterTransform', array(&$this, 'prefilterTransform'));
        $objHelperPlugin->addAction('LC_Page_Cart_action_before', array(&$this, 'redirectUrl'));
        $objHelperPlugin->addAction('LC_Page_Cart_action_after', array(&$this, 'cartActionAfter'));
        $objHelperPlugin->addAction('LC_Page_Mypage_Login_action_before', array(&$this, 'redirectUrl'));
        $objHelperPlugin->addAction('LC_Page_Mypage_Login_action_after', array(&$this, 'mypageLoginActionAfter'));
        $objHelperPlugin->addAction('LC_Page_Shopping_action_before', array(&$this, 'redirectUrl'));
        $objHelperPlugin->addAction('LC_Page_Shopping_action_after', array(&$this, 'shoppingActionAfter'));
        $objHelperPlugin->addAction('LC_Page_Shopping_Payment_action_after', array(&$this, 'shoppingPaymentActionAfter'));
        $objHelperPlugin->addAction('LC_Page_Forgot_action_after', array(&$this, 'forgotActionAfter'));
        $objHelperPlugin->addAction('LC_Page_Admin_Order_action_before', array(&$this, 'adminOrderActionBefore'));
        $objHelperPlugin->addAction('LC_Page_Admin_Order_action_after', array(&$this, 'adminOrderActionAfter'));
    }
    function cartActionAfter(LC_Page_Ex $objPage)
    {
        if (empty($objPage->cartItems)) {
            return;
        }
        $objAmznPay = new plg_AmazonPaymentsV2_SC_AmazonPayments();
        $arrPayload = array();
        $arrSignature = array();
        foreach ($objPage->cartItems as $key => $cartItem) {
            $payload = $objAmznPay->createCheckoutSessionPayload($key);
            $arrPayload[$key] = $payload;
            $arrSignature[$key] = $objAmznPay->signaturePayload($payload);
        }
        $arrAmazonDelivList = $this->cartCheckAble($objPage);
        $arrAmazonProductTypeId = array();
        foreach ($arrAmazonDelivList as $AmazonDelivList) {
            $arrAmazonProductTypeId[] = (int) $AmazonDelivList['product_type_id'];
        }
        $objPage->arrPayload = $arrPayload;
        $objPage->arrSignature = $arrSignature;
        $objPage->arrAmazonDelivList = $arrAmazonProductTypeId;
    }
    function mypageLoginActionAfter(LC_Page_Ex $objPage)
    {
        if ($objPage->arrPageLayout['device_type_id'] == DEVICE_TYPE_PC && false || $objPage->arrPageLayout['device_type_id'] == DEVICE_TYPE_SMARTPHONE && false) {
            $return_url = "HTTPS_URLmypage/plg_AmazonPaymentsV2_login.html";
            $this->setAmazonLoginParameter($objPage, $return_url);
        }
    }
    function shoppingActionAfter(LC_Page_Ex $objPage)
    {
        if ($objPage->arrPageLayout['device_type_id'] == DEVICE_TYPE_PC && false || $objPage->arrPageLayout['device_type_id'] == DEVICE_TYPE_SMARTPHONE && false) {
            $return_url = "HTTPS_URLshopping/plg_AmazonPaymentsV2_login.html";
            $this->setAmazonLoginParameter($objPage, $return_url);
        }
    }
    function setAmazonLoginParameter(&$objPage, $return_url)
    {
        $objAmznPay = new plg_AmazonPaymentsV2_SC_AmazonPayments();
        $objPage->amazon_login_payload = $objAmznPay->generateSigninPayload($return_url);
        $objPage->amazon_login_signature = $objAmznPay->signaturePayload($objPage->amazon_login_payload);
    }
    function prefilterTransform(&$source, LC_Page_Ex $objPage, $filename)
    {
        $objTransform = new SC_Helper_Transform_Ex($source);
        $template_dir = "PLUGIN_UPLOAD_REALDIRAmazonPaymentsV2/templates/";
        switch ($objPage->arrPageLayout['device_type_id']) {
            case DEVICE_TYPE_PC:
                if (strpos($filename, 'cart/index.tpl') !== false) {
                    $objTransform->select('form')->insertBefore(file_get_contents($template_dir . 'pc/cart/plg_AmazonPaymentsV2_index_js.tpl'));
                    if (false) {
                        $objTransform->select('div.btn_area')->find('ul')->appendChild(file_get_contents($template_dir . 'pc/cart/plg_AmazonPaymentsV2_index_button.tpl'));
                    } else {
                        $objTransform->select('div#amazon_custom_button', null, false)->replaceElement(file_get_contents($template_dir . 'pc/cart/plg_AmazonPaymentsV2_index_custom_button.tpl'));
                    }
                }
                if (strpos($filename, 'mypage/login.tpl') !== false && false) {
                    $objTransform->select('#undercolumn')->insertBefore(file_get_contents($template_dir . 'pc/mypage/plg_AmazonPaymentsV2_login_js.tpl'));
                    if (false) {
                        $objTransform->select('div.login_area')->appendChild(file_get_contents($template_dir . 'pc/mypage/plg_AmazonPaymentsV2_login_button.tpl'));
                    }
                }
                if (strpos($filename, 'shopping/index.tpl') !== false && false) {
                    $objTransform->select('#undercolumn')->insertBefore(file_get_contents($template_dir . 'pc/shopping/plg_AmazonPaymentsV2_login_js.tpl'));
                    if (false) {
                        $objTransform->select('form#member_form')->appendChild(file_get_contents($template_dir . 'pc/shopping/plg_AmazonPaymentsV2_login_button.tpl'));
                    }
                }
                break;
            case DEVICE_TYPE_SMARTPHONE:
                if (strpos($filename, 'cart/index.tpl') !== false) {
                    $objTransform->select('#undercolumn')->insertBefore(file_get_contents($template_dir . 'sphone/cart/plg_AmazonPaymentsV2_index_js.tpl'));
                    if (false) {
                        $objTransform->select('div.btn_area_btm')->appendChild(file_get_contents($template_dir . 'sphone/cart/plg_AmazonPaymentsV2_index_button.tpl'));
                    } else {
                        $objTransform->select('div#amazon_custom_button_1', null, false)->replaceElement(file_get_contents($template_dir . 'sphone/cart/plg_AmazonPaymentsV2_index_custom_button_1.tpl'));
                        $objTransform->select('div#amazon_custom_button_2', null, false)->replaceElement(file_get_contents($template_dir . 'sphone/cart/plg_AmazonPaymentsV2_index_custom_button_2.tpl'));
                    }
                }
                if (strpos($filename, 'mypage/login.tpl') !== false && false) {
                    $objTransform->select('#slidewindow')->insertBefore(file_get_contents($template_dir . 'sphone/mypage/plg_AmazonPaymentsV2_login_js.tpl'));
                    if (false) {
                        $objTransform->select('div.login_area')->appendChild(file_get_contents($template_dir . 'sphone/mypage/plg_AmazonPaymentsV2_login_button.tpl'));
                    }
                }
                if (strpos($filename, 'shopping/index.tpl') !== false && false) {
                    $objTransform->select('#slidewindow')->insertBefore(file_get_contents($template_dir . 'sphone/shopping/plg_AmazonPaymentsV2_login_js.tpl'));
                    if (false) {
                        $objTransform->select('div.login_area')->appendChild(file_get_contents($template_dir . 'sphone/shopping/plg_AmazonPaymentsV2_login_button.tpl'));
                    }
                }
                break;
            case DEVICE_TYPE_ADMIN:
            default:
                if (strpos($filename, 'order/index.tpl') !== false) {
                    $objTransform->select('div#order')->insertBefore(file_get_contents($template_dir . 'admin/order/plg_AmazonPaymentsV2_index_add_1.tpl'));
                    $objTransform->select('form#form1')->appendFirst(file_get_contents($template_dir . 'admin/order/plg_AmazonPaymentsV2_index_add_2.tpl'));
                    $objTransform->select('table.list')->insertBefore(file_get_contents($template_dir . 'admin/order/plg_AmazonPaymentsV2_index_add_3.tpl'));
                    $objTransform->select('table.list')->appendFirst(file_get_contents($template_dir . 'admin/order/plg_AmazonPaymentsV2_index_add_4.tpl'));
                    $objTransform->select('table.list')->find('tr', 0)->find('th', 6)->insertAfter(file_get_contents($template_dir . 'admin/order/plg_AmazonPaymentsV2_index_add_5.tpl'));
                    $objTransform->select('table.list')->find('tr', 1)->find('td', 6)->insertAfter(file_get_contents($template_dir . 'admin/order/plg_AmazonPaymentsV2_index_add_6.tpl'));
                }
        }
        $source = $objTransform->getHTML();
    }
    function redirectUrl(LC_Page_Ex $objPage)
    {
        if (empty($_SERVER['HTTPS'])) {
            $url = $objPage->arrPageLayout['url'];
            $redirect_flg = false;
            switch ($objPage->arrPageLayout['device_type_id']) {
                case DEVICE_TYPE_PC:
                    if (strpos($url, 'cart/index.php') !== false) {
                        $redirect_flg = true;
                    }
                    if (strpos($url, 'mypage/login.php') !== false && false) {
                        $redirect_flg = true;
                    }
                    if (strpos($url, 'shopping/index.php') !== false && false) {
                        $redirect_flg = true;
                    }
                    break;
                case DEVICE_TYPE_SMARTPHONE:
                    if (strpos($url, 'cart/index.php') !== false) {
                        $redirect_flg = true;
                    }
                    if (strpos($url, 'mypage/login.php') !== false && false) {
                        $redirect_flg = true;
                    }
                    if (strpos($url, 'shopping/index.php') !== false && false) {
                        $redirect_flg = true;
                    }
                    break;
                default:
                    break;
            }
            if ($redirect_flg) {
                header("Location: https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}");
                exit;
            }
        }
    }
    function shoppingPaymentActionAfter(LC_Page_Ex $objPage)
    {
        $amazon_payment_id = plg_AmazonPaymentsV2_SC_Utils::getAmazonPaymentId();
        foreach ($objPage->arrPayment as $key => $payment) {
            if ($payment['payment_id'] == $amazon_payment_id) {
                unset($objPage->arrPayment[$key]);
                $objPage->arrPayment = array_values($objPage->arrPayment);
            }
        }
    }
    function forgotActionAfter(LC_Page_Ex $objPage)
    {
        if ($_POST['mode'] == 'mail_check') {
            $objQuery =& SC_Query_Ex::getSingletonInstance();
            $where = '(email = ? OR email_mobile = ?) AND del_flg = 0';
            $arrVal = array($objPage->arrForm['email'], $objPage->arrForm['email']);
            $result = $objQuery->select('reminder, plg_amazonpaymentsv2_buyer_id', 'dtb_customer', $where, $arrVal);
            if (!isset($result[0]['reminder']) && !isset($objPage->arrReminder[$result[0]['reminder']]) && isset($result[0]['plg_amazonpaymentsv2_buyer_id'])) {
                $contact_url = "HTTPS_URLcontact/DIR_INDEX_PATH";
                $objPage->errmsg = "<div class=\"attention alignL\">\r\nご登録されたメールアドレスはAmazon Payからのご登録だったため、申し訳ございませんが、この機能はご利用できません。<br/>\r\n<br/>\r\nAmazon Payをご利用のお客様には、初回ご注文時にお送りしたメールに仮パスワードを記載させて頂いております。ご確認をお願いいたします。<br/>\r\n<br/>\r\n上記メールがご不明の場合、お手数ですが、<a href=\"HTTPS_URLcontact/DIR_INDEX_PATH\">お問い合わせページ</a>からお問い合わせください。\r\n</div>";
            }
        }
    }
    function adminOrderActionBefore(LC_Page_Ex $objPage)
    {
        $amazon_request = $_POST['amazon_request'];
        if ($amazon_request == PLG_AMAZONPAYMENTSV2_REQ_CAPTURE || $amazon_request == PLG_AMAZONPAYMENTSV2_REQ_CANCEL) {
            if (!empty($_POST['amazon_order_id'])) {
                $arrOrderId = array($_POST['amazon_order_id']);
            } else {
                $arrOrderId = $_POST[$amazon_request];
            }
            $arrParameter = $this->getParameter($arrOrderId);
            if (empty($arrParameter)) {
                plg_AmazonPaymentsV2_SC_Utils::printLog("ERROR: request_parameter empty. POST=" . print_r($_POST, true));
            }
            $arrErr = '';
            foreach ($arrParameter as $parameter) {
                $arrErr .= $this->amazonRequest($amazon_request, $parameter);
            }
            $objPage->amazonErr = $arrErr;
        }
    }
    function adminOrderActionAfter(LC_Page_Ex $objPage)
    {
        $arrAmazonResults = array();
        $searchOrder = array();
        $searchOrder = $objPage->arrResults;
        foreach ((array) $searchOrder as $order) {
            if (strpos($order[PLG_AMAZONPAYMENTSV2_AMAZON_PAYMENTS], 'amazonpaymentsV2') !== false || strpos($order[PLG_AMAZONPAYMENTSV2_AMAZON_PAYMENTS], 'amazonpayments') !== false) {
                $arrAmazonTradingInfo = unserialize($order[PLG_AMAZONPAYMENTSV2_AMAZON_TRADING_INFO]);
                $billableAmount = $order[PLG_AMAZONPAYMENTSV2_BILLABLE_AMOUNT];
                $payment_total = $order['payment_total'];
                $sumAuthoriAmount = 0;
                $sumCaptureAmount = 0;
                foreach ($arrAmazonTradingInfo as $amazonTradingInfo) {
                    $sumAuthoriAmount += $amazonTradingInfo['authori_amount'];
                    $sumCaptureAmount += $amazonTradingInfo['capture_amount'];
                }
                if ($payment_total <= $sumCaptureAmount || $order[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] == PLG_AMAZONPAYMENTSV2_AMAZON_CANCEL || $order[PLG_IPLPERIODICPURCHASE_FREE_FLG] == 'free') {
                    $amazonCaptureDisp = 0;
                } elseif ($payment_total - $sumCaptureAmount > $billableAmount) {
                    $amazonCaptureDisp = 1;
                } else {
                    if ($payment_total < $sumAuthoriAmount && $order[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] == PLG_AMAZONPAYMENTSV2_AMAZON_AUTHORI) {
                        $amazonDiffAmount = $sumAuthoriAmount - $payment_total;
                        $amazonCaptureDisp = 2;
                    } elseif ($payment_total > $sumAuthoriAmount && $order[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] == PLG_AMAZONPAYMENTSV2_AMAZON_AUTHORI) {
                        $amazonDiffAmount = $payment_total - $sumAuthoriAmount;
                        $amazonCaptureDisp = 3;
                    } elseif ($payment_total > $sumCaptureAmount && $order[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] == PLG_AMAZONPAYMENTSV2_AMAZON_CAPTURE) {
                        $amazonDiffAmount = $payment_total - $sumCaptureAmount;
                        $amazonCaptureDisp = 3;
                    } else {
                        $amazonCaptureDisp = 4;
                    }
                }
                if ($amazonCaptureDisp == 3 && !empty($order['plg_ipl_periodic_purchase_periodic_purchase_id'])) {
                    $amazonCaptureDisp = 1;
                }
                if ($order[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] == PLG_AMAZONPAYMENTSV2_AMAZON_CANCEL || $order[PLG_IPLPERIODICPURCHASE_FREE_FLG] == 'free') {
                    $amazonCancelDisp = 0;
                } elseif ($order[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] == PLG_AMAZONPAYMENTSV2_AMAZON_CAPTURE) {
                    if ($payment_total > $sumCaptureAmount) {
                        $amazonCancelDisp = 1;
                    } elseif ($payment_total < $sumCaptureAmount) {
                        $amazonDiffAmount = $sumCaptureAmount - $payment_total;
                        $amazonCancelDisp = 2;
                    } else {
                        $amazonCancelDisp = 3;
                    }
                } else {
                    $amazonCancelDisp = 3;
                }
                $order['amazon_diff_amount'] = $amazonDiffAmount;
                $order['amazon_capture_disp'] = $amazonCaptureDisp;
                $order['amazon_cancel_disp'] = $amazonCancelDisp;
            }
            $arrAmazonResults[] = $order;
        }
        $objPage->arrResults = $arrAmazonResults;
        $objPage->arrAmazonStatus = array(PLG_AMAZONPAYMENTSV2_AMAZON_AUTHORI => 'オーソリ', PLG_AMAZONPAYMENTSV2_AMAZON_CAPTURE => '売上', PLG_AMAZONPAYMENTSV2_AMAZON_CANCEL => '取消');
        $objPage->existsAmazonPaymentsV1 = plg_AmazonPaymentsV2_SC_Utils::existsAmazonPaymentsV1();
    }
    function amazonRequest($amazon_request, $parameter)
    {
        $objAmznPay = new plg_AmazonPaymentsV2_SC_AmazonPayments();
        $objPurchase = new SC_Helper_Purchase_Ex();
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $process = $amazon_request == PLG_AMAZONPAYMENTSV2_REQ_CAPTURE ? '売上' : '取消';
        $amazonErr = '';
        $order_id = $parameter['order_id'];
        $amazonChargePermissionId = $parameter[PLG_AMAZONPAYMENTSV2_AMAZON_REFERENCE_ID];
        $arrAmazonTradingInfo = unserialize($parameter[PLG_AMAZONPAYMENTSV2_AMAZON_TRADING_INFO]);
        $amazonStatus = $parameter[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS];
        $sumAuthoriAmount = 0;
        $sumCaptureAmount = 0;
        foreach ($arrAmazonTradingInfo as $amazonTradingInfo) {
            $sumAuthoriAmount += $amazonTradingInfo['authori_amount'];
            $sumCaptureAmount += $amazonTradingInfo['capture_amount'];
        }
        $payment_total = $parameter['payment_total'];
        $billableAmount = $parameter[PLG_AMAZONPAYMENTSV2_BILLABLE_AMOUNT];
        $is_periodic_purchase = !empty($parameter['plg_ipl_periodic_purchase_periodic_purchase_id']);
        $totalBillingAmount = $payment_total - $sumCaptureAmount;
        if ($amazon_request == PLG_AMAZONPAYMENTSV2_REQ_CANCEL && $payment_total == $sumCaptureAmount) {
            $allRefund_flg = true;
        } else {
            $allRefund_flg = false;
        }
        $totalRefundAmount = $allRefund_flg ? $payment_total : $sumCaptureAmount - $payment_total;
        $resultAmazonTradingInfo = array();
        foreach ($arrAmazonTradingInfo as $key => $amazonTradingInfo) {
            $amazonChargeId = $amazonTradingInfo['charge_id'];
            if (!$amazonChargeId) {
                $amazonChargeId = substr_replace($amazonTradingInfo['id'], "C", 20, 1);
            }
            $authoriAmount = $amazonTradingInfo['authori_amount'];
            $captureAmount = $amazonTradingInfo['capture_amount'];
            $refundCount = $amazonTradingInfo['refund_count'];
            if ($amazon_request == PLG_AMAZONPAYMENTSV2_REQ_CAPTURE) {
                if ($captureAmount > 0 || $totalBillingAmount == 0) {
                    $resultAmazonTradingInfo[$key] = $amazonTradingInfo;
                } else {
                    $billingAmount = $authoriAmount > $totalBillingAmount ? $totalBillingAmount : $authoriAmount;
                    $r = $objAmznPay->captureCharge($amazonChargeId, $billingAmount);
                    if (isset($r->reasonCode)) {
                        plg_AmazonPaymentsV2_SC_Utils::printLog("ERROR: aws captureCharge request error from admin_order r=" . var_export($r, true));
                        break;
                    }
                    $amazonTradingInfo = array('charge_id' => $amazonChargeId, 'authori_amount' => $authoriAmount, 'capture_amount' => $billingAmount, 'refund_count' => $refundCount);
                    $resultAmazonTradingInfo[$key] = $amazonTradingInfo;
                    $totalBillingAmount -= $billingAmount;
                    $billableAmount -= $billingAmount;
                }
                if ($payment_total > $sumAuthoriAmount && $amazonStatus == PLG_AMAZONPAYMENTSV2_AMAZON_AUTHORI || $totalBillingAmount > 0 && $amazonStatus == PLG_AMAZONPAYMENTSV2_AMAZON_CAPTURE) {
                    if ($amazonStatus == PLG_AMAZONPAYMENTSV2_AMAZON_AUTHORI) {
                        $addAmount = $payment_total - $sumAuthoriAmount;
                    } else {
                        $addAmount = $totalBillingAmount;
                    }
                    $r = $objAmznPay->createCharge($amazonChargePermissionId, $addAmount);
                    if (isset($r->reasonCode) || !isset($r->chargeId)) {
                        plg_AmazonPaymentsV2_SC_Utils::printLog("ERROR: aws request createCharge error from admin_order r=" . var_export($r, true));
                        break;
                    }
                    $newAmazonChargeId = $r->chargeId;
                    $r = $objAmznPay->captureCharge($newAmazonChargeId, $addAmount);
                    if (isset($r->reasonCode)) {
                        logs('amazon_pay_v2')->error('aws request error from admin_order r=' . var_export($r, true));
                        break;
                    }
                    $addAmazonTradingInfo = array('charge_id' => $newAmazonChargeId, 'authori_amount' => $addAmount, 'capture_amount' => $addAmount, 'refund_count' => 0);
                    $resultAmazonTradingInfo[count($arrAmazonTradingInfo)] = $addAmazonTradingInfo;
                    $totalBillingAmount -= $addAmount;
                    $billableAmount -= $addAmount;
                }
            } else {
                $arrOrderOld = $objQuery->getRow('status, add_point, use_point, customer_id', 'dtb_order', 'order_id = ?', array($order_id));
                $newStatus = ORDER_CANCEL;
                $newUsePoint = $arrOrderOld['use_point'];
                $newAddPoint = $arrOrderOld['add_point'];
                if (true && $arrOrderOld['customer_id']) {
                    $addCustomerPoint = 0;
                    if ($objPurchase->isUsePoint($arrOrderOld['status'])) {
                        $addCustomerPoint += $arrOrderOld['use_point'];
                    }
                    if ($objPurchase->isUsePoint($newStatus)) {
                        $addCustomerPoint -= $newUsePoint;
                    }
                    if ($objPurchase->isAddPoint($arrOrderOld['status'])) {
                        $addCustomerPoint -= $arrOrderOld['add_point'];
                    }
                    if ($objPurchase->isAddPoint($newStatus)) {
                        $addCustomerPoint += $newAddPoint;
                    }
                    if ($addCustomerPoint < 0) {
                        $point = $objQuery->get('point', 'dtb_customer', 'customer_id = ?', array($arrOrderOld['customer_id']));
                        $total_point = $point + $addCustomerPoint;
                        if ($total_point < 0) {
                            $amazonErr = '■注文番号:' . $order_id . 'の決済で下記のエラーが発生しました。<br>' . '該当会員の所持ポイントがマイナスになるため処理を終了しました。<br>';
                            return $amazonErr;
                        }
                    }
                }
                if ($sumCaptureAmount == 0) {
                    if ($is_periodic_purchase !== false) {
                    } else {
                        $r = $objAmznPay->closeChargePermission($amazonChargePermissionId);
                    }
                    $resultAmazonTradingInfo[$key] = $amazonTradingInfo;
                    $cancel_flg = true;
                } elseif ($totalRefundAmount == 0 || $captureAmount == 0) {
                    $resultAmazonTradingInfo[$key] = $amazonTradingInfo;
                } else {
                    $refundAmount = $captureAmount > $totalRefundAmount ? $totalRefundAmount : $captureAmount;
                    $refundCount += 1;
                    $r = $objAmznPay->createRefund($amazonChargeId, $refundAmount);
                    if (isset($r->reasonCode)) {
                        plg_AmazonPaymentsV2_SC_Utils::printLog("ERROR: aws createRefund request error from admin_order r=" . var_export($r, true));
                        break;
                    }
                    $amazonTradingInfo = array('charge_id' => $amazonChargeId, 'authori_amount' => $authoriAmount, 'capture_amount' => $captureAmount - $refundAmount, 'refund_count' => $refundCount);
                    $resultAmazonTradingInfo[$key] = $amazonTradingInfo;
                    $totalRefundAmount -= $refundAmount;
                }
            }
        }
        if (isset($r->reasonCode)) {
            $amazonErr = '■注文番号:' . $order_id . 'の決済で下記のエラーが発生しました。<br>' . 'リクエストを受け付けないため処理を終了しました。<br>';
        } elseif (is_object($r)) {
            $sqlVal = array();
            $status = null;
            if ($cancel_flg || $allRefund_flg) {
                $sqlVal[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] = PLG_AMAZONPAYMENTSV2_AMAZON_CANCEL;
                $sqlVal[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS_NAME] = '取消';
                $status = ORDER_CANCEL;
            } else {
                $sqlVal[PLG_AMAZONPAYMENTSV2_BILLABLE_AMOUNT] = $billableAmount;
                $sqlVal[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS] = PLG_AMAZONPAYMENTSV2_AMAZON_CAPTURE;
                $sqlVal[PLG_AMAZONPAYMENTSV2_AMAZON_STATUS_NAME] = '売上';
                $sqlVal['payment_date'] = 'CURRENT_TIMESTAMP';
            }
            $sqlVal[PLG_AMAZONPAYMENTSV2_AMAZON_TRADING_INFO] = serialize($resultAmazonTradingInfo);
            $sqlVal['update_date'] = 'CURRENT_TIMESTAMP';
            $objQuery->begin();
            $objPurchase->sfUpdateOrderStatus($order_id, $status, null, null, $sqlVal);
            $objQuery->commit();
        } else {
            $amazonErr = '■注文番号:' . $order_id . 'の決済で下記のエラーが発生しました。<br>' . $process . 'リクエストに失敗しました。<br>' . var_export($r, true) . '<br>';
        }
        return $amazonErr;
    }
    function getParameter($arrOrderId)
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $cols = '*';
        $where = 'order_id IN (' . SC_Utils_Ex::repeatStrWithSeparator('?', count($arrOrderId)) . ')';
        $result = $objQuery->select($cols, 'dtb_order', $where, $arrOrderId);
        return $result;
    }
    function installSQL()
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $objDB = new SC_Helper_DB_Ex();
        plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL start.");
        $objDB->sfColumnExists('dtb_customer', 'plg_amazonpaymentsv2_buyer_id', 'text', "", true);
        self::lfInsertPagelayout($objQuery);
        self::lfInsertCsv($objQuery);
        self::lfInsertConstants($objQuery);
        self::lfInsertPayment($objQuery);
        plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL end.");
    }
    function uninstallSQL()
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $objQuery->query("ALTER TABLE dtb_customer DROP plg_amazonpaymentsv2_buyer_id;");
        self::lfDeletePayment($objQuery);
        self::lfDeletePagelayout($objQuery);
        self::lfDeleteCsv($objQuery);
        self::lfDeleteConstants($objQuery);
    }
    function lfInsertPagelayout(&$objQuery)
    {
        $arrPageData = self::lfGetPagelayout();
        foreach ($arrPageData as $pageData) {
            if (!$objQuery->exists('dtb_pagelayout', 'device_type_id = ? AND url = ?', array(DEVICE_TYPE_PC, $pageData['file_name'] . '.php'))) {
                $arrVal = array('device_type_id' => DEVICE_TYPE_PC, 'page_name' => $pageData['page_name'], 'url' => $pageData['file_name'] . '.php', 'filename' => $pageData['file_name'], 'header_chk' => 1, 'footer_chk' => 1, 'edit_flg' => 2, 'create_date' => 'CURRENT_TIMESTAMP', 'update_date' => 'CURRENT_TIMESTAMP');
                $page_id = $objQuery->get('max(page_id) + 1', 'dtb_pagelayout', 'device_type_id = ?', array(DEVICE_TYPE_PC));
                $arrVal['page_id'] = $page_id;
                $objQuery->insert('dtb_pagelayout', $arrVal);
            } else {
                plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL already exist record device_type_id=DEVICE_TYPE_PC url=" . $pageData['file_name'] . ".php' in dtb_pagelayout.");
            }
            if (!$objQuery->exists('dtb_pagelayout', 'device_type_id = ? AND url = ?', array(DEVICE_TYPE_SMARTPHONE, $pageData['file_name'] . '.php'))) {
                $arrVal = array('device_type_id' => DEVICE_TYPE_SMARTPHONE, 'page_name' => $pageData['page_name'], 'url' => $pageData['file_name'] . '.php', 'filename' => $pageData['file_name'], 'header_chk' => 1, 'footer_chk' => 1, 'edit_flg' => 2, 'create_date' => 'CURRENT_TIMESTAMP', 'update_date' => 'CURRENT_TIMESTAMP');
                $page_id = $objQuery->get('max(page_id) + 1', 'dtb_pagelayout', 'device_type_id = ?', array(DEVICE_TYPE_SMARTPHONE));
                $arrVal['page_id'] = $page_id;
                $objQuery->insert('dtb_pagelayout', $arrVal);
            } else {
                plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL already exist record device_type_id=DEVICE_TYPE_SMARTPHONE url=" . $pageData['file_name'] . ".php in dtb_pagelayout.");
            }
        }
    }
    function lfInsertCsv(&$objQuery)
    {
        $arrCsv = self::lfGetCsv();
        foreach ($arrCsv as $csv) {
            $max = array_pop($objQuery->getRow('max(no)', 'dtb_csv'));
            $next_seq = $objQuery->nextVal('dtb_csv_no');
            $no = $max + 1 <= $next_seq ? $next_seq : $max + 1;
            if (!$objQuery->exists('dtb_csv', 'col = ? AND disp_name = ?', array($csv['col'], $csv['disp_name']))) {
                $arrVal = array('no' => $no, 'csv_id' => 3, 'col' => $csv['col'], 'disp_name' => $csv['disp_name'], 'rank' => NULL, 'rw_flg' => 2, 'status' => 1, 'create_date' => 'CURRENT_TIMESTAMP', 'update_date' => 'CURRENT_TIMESTAMP');
                $objQuery->insert('dtb_csv', $arrVal);
            } else {
                plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL already exist record disp_name=" . $csv['disp_name'] . " in dtb_csv.");
            }
        }
    }
    function lfInsertConstants(&$objQuery)
    {
        $arrConstants = self::lfGetConstants();
        foreach ($arrConstants as $constants) {
            if (!$objQuery->exists('mtb_constants', 'id = ?', array($constants['id']))) {
                $rank = $objQuery->max('rank', 'mtb_constants') + 1;
                $arrVal = array('id' => $constants['id'], 'name' => $constants['name'], 'rank' => $rank, 'remarks' => $constants['remarks']);
                $objQuery->insert('mtb_constants', $arrVal);
            } else {
                plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL already exist record id=" . $constants['id'] . "in mtb_constants.");
            }
        }
    }
    function lfInsertPayment(&$objQuery)
    {
        $max = array_pop($objQuery->getRow('max(payment_id)', 'dtb_payment'));
        $next_seq = $objQuery->nextVal('dtb_payment_payment_id');
        $no = $max + 1 <= $next_seq ? $next_seq : $max + 1;
        if (!$objQuery->exists('dtb_payment', 'memo03 = ?', array('amazonpaymentsV2'))) {
            $arrVal = array('payment_id' => $no, 'payment_method' => 'Amazon Pay', 'charge' => 0, 'rank' => NULL, 'fix' => 2, 'status' => 1, 'del_flg' => 0, 'creator_id' => $_SESSION['member_id'], 'create_date' => 'CURRENT_TIMESTAMP', 'update_date' => 'CURRENT_TIMESTAMP', 'module_path' => '', 'memo03' => 'amazonpaymentsV2', 'rule_min' => 9999999, 'rule_max' => 9999999, 'upper_rule' => 9999999, 'upper_rule_max' => 9999999);
            $objQuery->insert('dtb_payment', $arrVal);
            $payment_id = $objQuery->get('payment_id', 'dtb_payment', 'memo03 = ?', array('amazonpaymentsV2'));
            $objQuery->setGroupBy('deliv_id');
            $arrDelivList = $objQuery->select('deliv_id, max(rank)', 'dtb_payment_options');
            foreach ($arrDelivList as $deliv) {
                $deliv_id = $deliv['deliv_id'];
                $rank = $deliv['max(rank)'] + 1;
                $arrVal = array('deliv_id' => $deliv_id, 'payment_id' => $payment_id, 'rank' => $rank);
                $objQuery->insert('dtb_payment_options', $arrVal);
            }
        } else {
            plg_AmazonPaymentsV2_SC_Utils::printLog("installSQL already exist record payment_method='AmazonPay' in dtb_payment.");
        }
    }
    function lfDeletePayment(&$objQuery)
    {
        $payment_id = $objQuery->get('payment_id', 'dtb_payment', 'memo03 = ?', array('amazonpaymentsV2'));
        $objQuery->delete('dtb_payment_options', 'payment_id = ?', array($payment_id));
        $objQuery->delete('dtb_payment', 'memo03 = ?', array('amazonpaymentsV2'));
    }
    function lfDeletePagelayout(&$objQuery)
    {
        $arrPageData = self::lfGetPagelayout();
        foreach ($arrPageData as $pageData) {
            $objQuery->delete('dtb_pagelayout', 'url = ?', array($pageData['file_name'] . '.php'));
        }
    }
    function lfDeleteCsv(&$objQuery)
    {
        $arrCsv = self::lfGetCsv();
        foreach ($arrCsv as $csv) {
            $objQuery->delete('dtb_csv', 'col = ? AND disp_name = ?', array($csv['col'], $csv['disp_name']));
        }
    }
    function lfDeleteConstants(&$objQuery)
    {
        $arrConstants = self::lfGetConstants();
        foreach ($arrConstants as $constants) {
            $objQuery->delete('mtb_constants', 'id = ?', array($constants['id']));
        }
    }
    function lfGetPagelayout()
    {
        $arrPageData = array(array('page_name' => '商品購入/Amazon Pay V2(入力ページ)', 'file_name' => 'shopping/plg_AmazonPaymentsV2_payment'), array('page_name' => '商品購入/Amazon Pay V2(確認ページ)', 'file_name' => 'shopping/plg_AmazonPaymentsV2_confirm'));
        return $arrPageData;
    }
    function lfGetCsv()
    {
        $arrCsv = array(array('col' => 'memo06 as plg_amazonpaymentsv2_amazon_reference_id', 'disp_name' => 'Amazon参照ID'), array('col' => 'memo07 as plg_amazonpaymentsv2_amazon_status_name', 'disp_name' => 'Amazon状況'));
        return $arrCsv;
    }
    function lfGetConstants()
    {
        $arrConstants = array(array('id' => 'AMAZONPAYV2_SC_PARAMETER', 'name' => '"orderReferenceId"', 'remarks' => 'SellerCentral受注詳細へのパラメータ(Amazon Pay V2)'));
        return $arrConstants;
    }
    function cartCheckAble(LC_Page_Ex $objPage)
    {
        if (empty($objPage->cartItems)) {
            return;
        }
        $cartItems = $objPage->cartItems;
        $AmazonDelivList = plg_AmazonPaymentsV2_SC_Utils::getAmazonDelivList($cartItems[0]["productsClass"]["product_type_id"]);
        return $AmazonDelivList;
    }
}


■【無料】ワードプレス:マルウェアスキャン&セキュリティープラグイン [マルウェア・ウィルス検出と駆除]

■WordPress のマルウェア駆除、セキュリティー対策 カスタマイズや修正、引っ越し・復旧のご依頼承ります

(C)2019 ワードプレス ドクター All rights reserved.