shoppingmallv2 init...

This commit is contained in:
최준흠 2023-08-11 10:28:12 +09:00
parent f592b90073
commit 3de4a451c2
16 changed files with 215 additions and 35 deletions

View File

@ -218,6 +218,10 @@ define('ICONS', [
'HOME' => '<i class="bi bi-house-door-fill"></i>',
'PLAY' => '<i class="bi bi-play-fill"></i>',
'CART' => '<i class="bi bi-cart4"></i>',
'UP' => '<i class="bi bi-arrow-up"></i>',
'DOWN' => '<i class="bi bi-arrow-down"></i>',
'LEFT' => '<i class="bi bi-arrow-left"></i>',
'RIGHT' => '<i class="bi bi-arrow-right"></i>',
'IMAGE_FILE' => '<i class="bi bi-file-earmark-image"></i>',
]);
define('CLASS_ICONS', [

View File

@ -169,6 +169,7 @@ $routes->group('front', ['namespace' => 'App\Controllers\Front'], function ($rou
$routes->get('', 'PaymentController::index');
$routes->get('card/(:uuid)', 'PaymentController::card_form/$1');
$routes->post('card/(:uuid)', 'PaymentController::card/$1');
$routes->get('deposit/(:uuid)', 'PaymentController::deposit_form/$1');
});
});
/*

View File

@ -2,16 +2,18 @@
namespace App\Controllers\Front;
use App\Entities\PaymentEntity;
use App\Libraries\Adapter\Payment\CookiePayment as PaymentAdapter;
use App\Models\OrderModel;
use App\Models\PaymentModel;
use App\Models\UserModel;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use App\Models\OrderModel;
use App\Entities\PaymentEntity;
use App\Libraries\Adapter\Payment\CookiePayment as PaymentAdapter;
class PaymentController extends FrontController
{
private $_userModel = null;
private $_orderModel = null;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
@ -23,6 +25,10 @@ class PaymentController extends FrontController
$this->isRole('index');
}
private function getUserModel()
{
return $this->_userModel = $this->_userModel ?: new UserModel();
}
private function getOrderModel()
{
return $this->_orderModel = $this->_orderModel ?: new OrderModel();
@ -74,6 +80,7 @@ class PaymentController extends FrontController
{
try {
$this->card_init();
$this->_viewDatas['user'] = $this->getUserModel()->getEntity([$this->getUserModel()->getPrimaryKey() => $this->_viewDatas['auth'][AUTH_FIELDS['ID']]]);
$this->_viewDatas['order'] = $this->getOrderModel()->getEntity([$this->getOrderModel()->getPrimaryKey() => $uid]);
helper(['form']);
$this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []];
@ -111,7 +118,7 @@ class PaymentController extends FrontController
{
$msg = "";
try {
$this->_viewDatas = $this->card_init();
$this->card_init();
$this->card_validate();
$entity = $this->card_process();
$msg = "{$this->_viewDatas['title']}에서 {$entity->getTitle()}" . __FUNCTION__ . " 완료하였습니다.";
@ -125,4 +132,21 @@ class PaymentController extends FrontController
$this->_session->setFlashdata("return_message", $msg);
}
}
public function deposit_form($uid)
{
try {
$this->_viewDatas['bank'] = [
"name" => getenv("payment.deposit.bank.name") ?: "은행명",
"account" => getenv("payment.deposit.bank.account") ?: "계좌번호",
"holder" => getenv("payment.deposit.bank.holder") ?: "예금주"
];
$this->_viewDatas['order'] = $this->getOrderModel()->getEntity([$this->getOrderModel()->getPrimaryKey() => $uid]);
$this->_session->keepFlashdata(SESSION_NAMES['RETURN_URL']);
return view($this->_viewPath . '/deposit', ['viewDatas' => $this->_viewDatas]);
} catch (\Exception $e) {
log_message("error", $e->getMessage());
return redirect()->to($this->_session->getFlashdata(SESSION_NAMES['RETURN_URL']) ?: "/")->with('return_message', $e->getMessage());
}
}
}

View File

@ -105,11 +105,23 @@ function getFieldFilter_BoardHelper($field, $value, array $viewDatas)
function getFieldIndex_Column_BoardHelper($field, array $viewDatas)
{
$label = lang("{$viewDatas['className']}.label.{$field}");
$label = $field == $viewDatas['order_field'] ? sprintf('%s <i class="fa fa-arrow-%s"></i>', $label, $viewDatas['order_value'] == 'ASC' ? "up" : "down") : $label;
if ($field == $viewDatas['order_field']) {
$label .= $viewDatas['order_value'] == 'ASC' ? ICONS['UP'] : ICONS['DOWN'];
}
$value = $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC";
return anchor(current_url() . "?order_field={$field}&order_value={$value}", $label);
$viewDatas['uri']->addQuery('order_field', $field);
$viewDatas['uri']->addQuery('order_value', $value);
$columnData = anchor($viewDatas['uri'], $label);
switch ($field) {
case 'title':
case 'name':
return sprintf("<th style=\"width:100px;\">%s</th>", $columnData);
break;
default:
return sprintf("<th>%s</th>", $columnData);
break;
}
} //
//Front용
function getFieldIndex_Row_BoardHelper($field, $entity, array $viewDatas): string
{

View File

@ -105,9 +105,22 @@ function getFieldFilter_CategoryHelper($field, $value, array $viewDatas)
function getFieldIndex_Column_CategoryHelper($field, array $viewDatas)
{
$label = lang("{$viewDatas['className']}.label.{$field}");
$label = $field == $viewDatas['order_field'] ? sprintf('%s <i class="fa fa-arrow-%s"></i>', $label, $viewDatas['order_value'] == 'ASC' ? "up" : "down") : $label;
if ($field == $viewDatas['order_field']) {
$label .= $viewDatas['order_value'] == 'ASC' ? ICONS['UP'] : ICONS['DOWN'];
}
$value = $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC";
return anchor(current_url() . "?order_field={$field}&order_value={$value}", $label);
$viewDatas['uri']->addQuery('order_field', $field);
$viewDatas['uri']->addQuery('order_value', $value);
$columnData = anchor($viewDatas['uri'], $label);
switch ($field) {
case 'title':
case 'name':
return sprintf("<th style=\"width:100px;\">%s</th>", $columnData);
break;
default:
return sprintf("<th>%s</th>", $columnData);
break;
}
} //
//Front용

View File

@ -99,9 +99,22 @@ function getFieldFilter_OrderHelper($field, $value, array $viewDatas)
function getFieldIndex_Column_OrderHelper($field, array $viewDatas)
{
$label = lang("{$viewDatas['className']}.label.{$field}");
$label = $field == $viewDatas['order_field'] ? sprintf('%s <i class="fa fa-arrow-%s"></i>', $label, $viewDatas['order_value'] == 'ASC' ? "up" : "down") : $label;
if ($field == $viewDatas['order_field']) {
$label .= $viewDatas['order_value'] == 'ASC' ? ICONS['UP'] : ICONS['DOWN'];
}
$value = $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC";
return anchor(current_url() . "?order_field={$field}&order_value={$value}", $label);
$viewDatas['uri']->addQuery('order_field', $field);
$viewDatas['uri']->addQuery('order_value', $value);
$columnData = anchor($viewDatas['uri'], $label);
switch ($field) {
case 'title':
case 'name':
return sprintf("<th style=\"width:100px;\">%s</th>", $columnData);
break;
default:
return sprintf("<th>%s</th>", $columnData);
break;
}
} //
//Front용
@ -112,7 +125,7 @@ function getFieldIndex_Row_OrderHelper($field, $entity, array $viewDatas): strin
case 'title':
case 'name':
return sprintf(
"<div class=\"location-left\">%s : %s<BR>%s</div>",
"%s : %s<BR>%s",
lang("{$viewDatas['className']}.label.uid"),
$entity->getOrderHint(),
anchor(
@ -124,11 +137,15 @@ function getFieldIndex_Row_OrderHelper($field, $entity, array $viewDatas): strin
break;
case 'status':
if ($value == DEFAULTS['STATUS']) {
return anchor(
return sprintf("<div class=\"payment_card\">%s</div><div class=\"payment_deposit\">%s</div>", anchor(
'/front/payment/card/' . $entity->getPrimaryKey(),
$viewDatas['fieldFormOptions'][$field][$value],
"카드결제",
["class" => "btn btn-sm btn-primary btn-circle", "style" => "color:white", "target" => "_self"]
);
), anchor(
'/front/payment/deposit/' . $entity->getPrimaryKey(),
"무통장입금",
["class" => "btn btn-sm btn-info btn-circle", "style" => "color:white", "target" => "_self"]
));
} else {
return getFieldView_OrderHelper($field, $entity, $viewDatas);
}

View File

@ -88,6 +88,12 @@ function getFieldForm_PaymentHelper($field, $value, array $viewDatas, array $att
form_dropdown("{$field}[]", $years, DEFAULTS['EMPTY']),
);
break;
case 'card_email':
return form_input($field, $viewDatas['user']->email);
break;
case 'card_mobile':
return form_input($field, $viewDatas['user']->mobile);
break;
default:
return form_input($field, $value);
break;
@ -129,9 +135,22 @@ function getFieldFilter_PaymentHelper($field, $value, array $viewDatas)
function getFieldIndex_Column_PaymentHelper($field, array $viewDatas)
{
$label = lang("{$viewDatas['className']}.label.{$field}");
$label = $field == $viewDatas['order_field'] ? sprintf('%s <i class="fa fa-arrow-%s"></i>', $label, $viewDatas['order_value'] == 'ASC' ? "up" : "down") : $label;
if ($field == $viewDatas['order_field']) {
$label .= $viewDatas['order_value'] == 'ASC' ? ICONS['UP'] : ICONS['DOWN'];
}
$value = $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC";
return anchor(current_url() . "?order_field={$field}&order_value={$value}", $label);
$viewDatas['uri']->addQuery('order_field', $field);
$viewDatas['uri']->addQuery('order_value', $value);
$columnData = anchor($viewDatas['uri'], $label);
switch ($field) {
case 'title':
case 'name':
return sprintf("<th style=\"width:100px;\">%s</th>", $columnData);
break;
default:
return sprintf("<th>%s</th>", $columnData);
break;
}
} //
//Front용

View File

@ -114,12 +114,25 @@ function getFieldFilter_ProductHelper($field, $value, array $viewDatas)
return form_dropdown($field, $viewDatas['fieldFormOptions'][$field], $value, ['class' => "select-field"]);
} //
function getFieldIndex_Column_ProductHelper($field, array $viewDatas)
function getFieldIndex_Column_Productelper($field, array $viewDatas)
{
$label = lang("{$viewDatas['className']}.label.{$field}");
$label = $field == $viewDatas['order_field'] ? sprintf('%s <i class="fa fa-arrow-%s"></i>', $label, $viewDatas['order_value'] == 'ASC' ? "up" : "down") : $label;
if ($field == $viewDatas['order_field']) {
$label .= $viewDatas['order_value'] == 'ASC' ? ICONS['UP'] : ICONS['DOWN'];
}
$value = $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC";
return anchor(current_url() . "?order_field={$field}&order_value={$value}", $label);
$viewDatas['uri']->addQuery('order_field', $field);
$viewDatas['uri']->addQuery('order_value', $value);
$columnData = anchor($viewDatas['uri'], $label);
switch ($field) {
case 'title':
case 'name':
return sprintf("<th style=\"width:100px;\">%s</th>", $columnData);
break;
default:
return sprintf("<th>%s</th>", $columnData);
break;
}
} //
//Front용

View File

@ -105,9 +105,22 @@ function getFieldFilter_SitepageHelper($field, $value, array $viewDatas)
function getFieldIndex_Column_SitepageHelper($field, array $viewDatas)
{
$label = lang("{$viewDatas['className']}.label.{$field}");
$label = $field == $viewDatas['order_field'] ? sprintf('%s <i class="fa fa-arrow-%s"></i>', $label, $viewDatas['order_value'] == 'ASC' ? "up" : "down") : $label;
if ($field == $viewDatas['order_field']) {
$label .= $viewDatas['order_value'] == 'ASC' ? ICONS['UP'] : ICONS['DOWN'];
}
$value = $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC";
return anchor(current_url() . "?order_field={$field}&order_value={$value}", $label);
$viewDatas['uri']->addQuery('order_field', $field);
$viewDatas['uri']->addQuery('order_value', $value);
$columnData = anchor($viewDatas['uri'], $label);
switch ($field) {
case 'title':
case 'name':
return sprintf("<th style=\"width:100px;\">%s</th>", $columnData);
break;
default:
return sprintf("<th>%s</th>", $columnData);
break;
}
} //
//Front용

View File

@ -93,9 +93,22 @@ function getFieldFilter_UserSNSHelper($field, $value, array $viewDatas)
function getFieldIndex_Column_UserSNSHelper($field, array $viewDatas)
{
$label = lang("{$viewDatas['className']}.label.{$field}");
$label = $field == $viewDatas['order_field'] ? sprintf('%s <i class="fa fa-arrow-%s"></i>', $label, $viewDatas['order_value'] == 'ASC' ? "up" : "down") : $label;
if ($field == $viewDatas['order_field']) {
$label .= $viewDatas['order_value'] == 'ASC' ? ICONS['UP'] : ICONS['DOWN'];
}
$value = $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC";
return anchor(current_url() . "?order_field={$field}&order_value={$value}", $label);
$viewDatas['uri']->addQuery('order_field', $field);
$viewDatas['uri']->addQuery('order_value', $value);
$columnData = anchor($viewDatas['uri'], $label);
switch ($field) {
case 'title':
case 'name':
return sprintf("<th style=\"width:100px;\">%s</th>", $columnData);
break;
default:
return sprintf("<th>%s</th>", $columnData);
break;
}
} //
//Front용

View File

@ -109,9 +109,22 @@ function getFieldFilter_UserHelper($field, $value, array $viewDatas)
function getFieldIndex_Column_UserHelper($field, array $viewDatas)
{
$label = lang("{$viewDatas['className']}.label.{$field}");
$label = $field == $viewDatas['order_field'] ? sprintf('%s <i class="fa fa-arrow-%s"></i>', $label, $viewDatas['order_value'] == 'ASC' ? "up" : "down") : $label;
if ($field == $viewDatas['order_field']) {
$label .= $viewDatas['order_value'] == 'ASC' ? ICONS['UP'] : ICONS['DOWN'];
}
$value = $viewDatas['order_value'] == 'DESC' ? "ASC" : "DESC";
return anchor(current_url() . "?order_field={$field}&order_value={$value}", $label);
$viewDatas['uri']->addQuery('order_field', $field);
$viewDatas['uri']->addQuery('order_value', $value);
$columnData = anchor($viewDatas['uri'], $label);
switch ($field) {
case 'title':
case 'name':
return sprintf("<th style=\"width:100px;\">%s</th>", $columnData);
break;
default:
return sprintf("<th>%s</th>", $columnData);
break;
}
} //
//Front용

View File

@ -16,7 +16,7 @@ return [
'created_at' => "작성일"
],
"STATUS" => [
"use" => "결제하기",
"use" => "장바구니",
"unuse" => "주문취소",
"paid" => "결제완료"
]

View File

@ -19,10 +19,10 @@ class CookiePayment extends Payment
$adapter = new APIAdapter();
$adapter->setHeader("content-type", "application/json; charset=utf-8");
/* 토큰 발행 API */
$adapter->setURL(getenv("payment.cookiepay.token_url") ?: "{TOKEN 발행 URL}");
$adapter->setURL(getenv("payment.card.pay2.token_url") ?: "{TOKEN 발행 URL}");
$adapter->setDatas(array(
'pay2_id' => 'cookiepayments에서 발급받은 ID',
'pay2_key' => 'cookiepayments에서 발급받은 연동키',
'pay2_id' => getenv("payment.card.pay2.id") ?: 'cookiepayments에서 발급받은 ID',
'pay2_key' => getenv("payment.card.pay2.key") ?: 'cookiepayments에서 발급받은 연동키',
));
$token = $adapter->execute();
/* 여기 까지 */
@ -35,9 +35,9 @@ class CookiePayment extends Payment
{
$adapter = new APIAdapter();
$adapter->setHeader("content-type", "application/json; charset=utf-8");
$adapter->setHeader("ApiKey", getenv("payment.cookiepay.apikey") ?: "COOKIEPAY에서 발급받은 연동키");
$adapter->setHeader("ApiKey", getenv("payment.card.pay2.apikey") ?: "COOKIEPAY에서 발급받은 연동키");
$adapter->setHeader("TOKEN", $this->getToken());
$adapter->setURL(getenv("payment.cookiepay.url") ?: "{요청도메인}/keyin/payment");
$adapter->setURL(getenv("payment.card.pay2.url") ?: "{요청도메인}/keyin/payment");
$adapter->setDatas(array(
'API_ID' => 'COOKIEPAY에서 발급받은 가맹점연동 ID',
'ORDERNO' => '주문번호',

View File

@ -10,7 +10,7 @@
<thead>
<tr>
<th>번호</th>
<?php foreach ($viewDatas['fields'] as $field) : ?><th><?= getFieldIndex_Column_OrderHelper($field, $viewDatas) ?></th><?php endforeach ?>
<?php foreach ($viewDatas['fields'] as $field) : ?><?= getFieldIndex_Column_OrderHelper($field, $viewDatas) ?><?php endforeach ?>
</tr>
</thead>
<tbody>
@ -21,7 +21,7 @@
<?= $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt) ?>
</td>
<?php foreach ($viewDatas['fields'] as $field) : ?>
<td nowrap><?= getFieldIndex_Row_OrderHelper($field, $entity, $viewDatas) ?></td>
<td><?= getFieldIndex_Row_OrderHelper($field, $entity, $viewDatas) ?></td>
<?php endforeach ?>
</tr>
<?php $cnt++ ?>

View File

@ -23,7 +23,7 @@
</tr>
<?php endforeach; ?>
<tr>
<td valign="bottom" colspan="2"><?= form_submit('', '입력', array("class" => "btn btn-outline btn-primary")); ?></td>
<td valign="bottom" colspan="2"><?= form_submit('', '결제', array("class" => "btn btn-outline btn-primary")); ?></td>
</tr>
</table>
<?= form_close(); ?>

View File

@ -0,0 +1,38 @@
<?= $this->extend('layouts/front') ?>
<?= $this->section('content') ?>
<link href="/css/front/content.css" media="screen" rel="stylesheet" type="text/css" />
<div id="content">
<div><?= html_entity_decode($viewDatas['category']->head) ?></div>
<table class="form table table-bordered table-hover table-striped">
<tr>
<td class="label">상품명</td>
<td class="column"><?= $viewDatas['order']->getTitle() ?></td>
</tr>
<tr>
<td class="label">결제금액</td>
<td class="column"><?= number_format($viewDatas['order']->price) ?>원</td>
</tr>
<tr>
<td class="label">은행명</td>
<td class="column"><?= $viewDatas['bank']['name'] ?></td>
</tr>
<tr>
<td class="label">계좌번호</td>
<td class="column"><?= $viewDatas['bank']['account'] ?></td>
</tr>
<tr>
<td class="label">예금주</td>
<td class="column"><?= $viewDatas['bank']['holder'] ?></td>
</tr>
<tr>
<td colspan="2">
설명문......
설명문......
설명문......
설명문......
</td>
</tr>
</table>
<div><?= html_entity_decode($viewDatas['category']->tail) ?></div>
</div>
<?= $this->endSection() ?>