クラス
OrderEditPage
ソース ソース
ファイル: src/Admin/Views/OrderEditPage/OrderEditPage.php
class OrderEditPage extends OrderEditPageDI
{
const SCRIPT_SLUG = 'wcex_linepay_order_edit_page';
/**
* Settlement module
*
* @var LinePay
*/
protected $module;
/**
* Parses /v3/payments response and returns the transaction status
*
* @author Evan D Shaw <evandanielshaw@gmail.com>
* @param OrderMeta $ometa
* @param array $info
* @return array
*/
public function getStatusFromPaymentsRes(OrderMeta $ometa, $info) {
if (isset($info['refundList'])) {
$isod = $info['refundList'][0]['refundTransactionDate'];
$date = new \DateTime($isod);
$amount = $info['refundList'][0]['refundAmount'];
// translators: date the transaction was refunded
$refunddate = sprintf(__('Refund date: %s', 'wcex_linepay'), $date->format('Y-m-d'));
// translators: amount the transaction was refunded for
$refundamount = sprintf(__('Refunded amount: %d', 'wcex_linepay'), (int)$amount);
$message = __('This order has been refunded.', 'wcex_linepay');
$status = TransactionState::REFUNDED;
if ($info['payStatus'] === 'VOIDED_AUTHORIZATION') {
$message = __('This order has been canceled.', 'wcex_linepay');
$status = TransactionState::CANCELED;
}
if ($info['payStatus'] === 'EXPIRED_AUTHORIZATION') {
$message = __('This order has expired. Transactions can no longer be processed.', 'wcex_linepay');
$status = TransactionState::EXPIRED;
}
$ometa->setTransactionState(new TransactionState($ometa->getTransactionId(), $status));
return [
'status' => $status,
'message' => $message,
'details' => [$refunddate, $refundamount],
];
}
if ($info['payStatus'] === 'CAPTURE') {
$status = TransactionState::CAPTURED;
$ometa->setTransactionState(new TransactionState($ometa->getTransactionId(), $status));
return [
'status' => $status,
'message' => '',
'details' => [],
];
}
$status = TransactionState::AUTHORIZED;
$ometa->setTransactionState(new TransactionState($ometa->getTransactionId(), $status));
return [
'status' => $status,
'message' => '',
'details' => [],
];
}
/**
* Load React script for LINE Pay order status updates
*
* @author Evan D Shaw <evandanielshaw@gmail.com>
* @inheritDoc
* @param array $data
* @param array $cscs_meta
* @param array $action_args
* @return void
*/
protected function enqueueAssets($data, $cscs_meta, $action_args) {
$orderId = (int)$data['ID'];
$ometa = new OrderMeta($orderId);
$statusres = $this->module->api->payments(['transactionId' => $ometa->getTransactionId()]);
$stateMeta = ['status' => 'error'];
if ($statusres instanceof GenericError) {
$stateMeta['message'] = $statusres->message;
} else {
$stateMeta = $this->getStatusFromPaymentsRes($ometa, $statusres['info'][0]);
}
Utils::loadTransactionStatesCss();
$assetsmap = include(WCEX_LINEPAY_PLUGIN_DIR . '/dist/js/Admin/Views/OrderEditPage/App.asset.php');
wp_enqueue_script(
self::SCRIPT_SLUG,
WCEX_LINEPAY_PLUGIN_URL . '/dist/js/Admin/Views/OrderEditPage/App.js',
$assetsmap['dependencies'],
$assetsmap['version'],
true
);
wp_localize_script(
self::SCRIPT_SLUG,
Config\Constants::SCRIPTS_GLOBAL_VAR_NAME,
array_merge(
$this->module->getScriptInjectionVars(),
[
'orderId' => $data['ID'],
'paymentName' => $this->module->getPaymentName(),
'stateMeta' => $stateMeta,
'actingStatusRowId' => $this->module->getActing() . '-acting-status',
'transactionStates' => [
'capture' => [
'successMessage' => __('Capture successful', 'wcex_linepay'),
'message' => __('Capture successful', 'wcex_linepay'),
'buttonText' => __('Capture', 'wcex_linepay'),
'completedState' => new TransactionState(
$ometa->getTransactionId(),
TransactionState::CAPTURED
),
],
'void' => [
'successMessage' => __('Cancel successful', 'wcex_linepay'),
'message' => __('This order has been canceled.', 'wcex_linepay'),
'buttonText' => __('Cancel', 'wcex_linepay'),
'completedState' => new TransactionState(
$ometa->getTransactionId(),
TransactionState::CANCELED
),
],
'refund' => [
'successMessage' => __('Refund successful', 'wcex_linepay'),
'message' => __('This order has been refunded.', 'wcex_linepay'),
'buttonText' => __('Refund', 'wcex_linepay'),
'completedState' => new TransactionState(
$ometa->getTransactionId(),
TransactionState::REFUNDED
),
],
],
]
)
);
}
/**
* Action for extra rows in status block form table
*
* @author Evan D Shaw <evandanielshaw@gmail.com>
* @inheritDoc
* @param array $data
* @param array $cscs_meta
* @param array $action_args
* @return void
*/
protected function orderEditFormStatusBlockMiddle($data, $cscs_meta, $action_args) {
$ometa = new OrderMeta((int)$action_args['order_id']);
$tstate = $ometa->getTransactionState();
if ($tstate !== null) {
$this->displayTransactionState($ometa->getTransactionState());
}
?>
<tr id="<?php echo Config\Constants::REACT_DOM_NODE ?>"></tr>
<?php
}
}
- enqueueAssets — Load React script for LINE Pay order status updates
- getStatusFromPaymentsRes — Parses /v3/payments response and returns the transaction status
- orderEditFormStatusBlockMiddle — Action for extra rows in status block form table