feat: Add deposit success email notification system with new mailer, job, view, and client update request.
This commit is contained in:
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Api\Client;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Api\Client\ClientAuthRequest;
|
||||
use App\Http\Requests\Api\Client\ClientRegisterRequest;
|
||||
use App\Http\Requests\Api\Client\ClientUpdateRequest;
|
||||
use App\Http\Resources\Api\Client\ClientResource;
|
||||
use App\Services\Api\Client\ClientAuthService;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
@@ -213,4 +214,20 @@ class ClientController extends Controller
|
||||
'message' => 'Đã đăng xuất thành công.',
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(ClientUpdateRequest $request)
|
||||
{
|
||||
$user = auth('client')->user();
|
||||
|
||||
$user->fill($request->validated());
|
||||
$user->save();
|
||||
|
||||
return response()->json([
|
||||
'error' => false,
|
||||
'message' => 'Cập nhật thông tin thành công',
|
||||
'data' => [
|
||||
'client' => new ClientResource($user),
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ use App\Enums\TransactionStatus;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\DepositRequest;
|
||||
use App\Http\Services\VNPayService;
|
||||
use App\Jobs\Mail\Customer\DepositSuccessJob;
|
||||
use App\Models\Customer;
|
||||
use App\Models\Log;
|
||||
use App\Models\Transaction;
|
||||
@@ -148,6 +149,17 @@ class TransactionController extends Controller
|
||||
'customer_id' => $transaction->customer_id,
|
||||
]);
|
||||
|
||||
DepositSuccessJob::dispatch([
|
||||
'customer_email' => $customer->email,
|
||||
'customer_name' => $customer->fullname,
|
||||
'transaction_code' => $transaction->public_code,
|
||||
'amount' => $transaction->amount,
|
||||
'credit' => $transaction->amount / 100,
|
||||
'current_total' => $customer->total,
|
||||
'current_credit' => $customer->credit,
|
||||
'deposit_date' => now()->format('d/m/Y H:i:s'),
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Api\Client;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ClientUpdateRequest extends FormRequest
|
||||
{
|
||||
public function authorize(): bool
|
||||
{
|
||||
return auth('client')->check();
|
||||
}
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'fullname' => 'required|string|max:255',
|
||||
'phone' => 'required|string|max:20',
|
||||
'company' => 'nullable|string|max:255',
|
||||
'address' => 'nullable|string|max:500',
|
||||
'province_code' => 'nullable|string|max:10',
|
||||
'ward_code' => 'nullable|string|max:10',
|
||||
'gender' => 'nullable|in:1,2,3',
|
||||
];
|
||||
}
|
||||
|
||||
public function messages(): array
|
||||
{
|
||||
return [
|
||||
'fullname.required' => 'Họ tên là bắt buộc',
|
||||
'phone.required' => 'Số điện thoại là bắt buộc',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Mail\Customer;
|
||||
|
||||
use App\Mail\Customer\DepositSuccess;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
|
||||
class DepositSuccessJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
public array $data;
|
||||
|
||||
public function __construct(array $data)
|
||||
{
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
public function handle(): void
|
||||
{
|
||||
try {
|
||||
Mail::to($this->data['customer_email'])
|
||||
->send(new DepositSuccess($this->data));
|
||||
} catch (\Throwable $e) {
|
||||
\Log::error('Không thể gửi email thông báo nạp tiền thành công: ' . $e->getMessage(), [
|
||||
'customer_email' => $this->data['customer_email'] ?? null,
|
||||
'transaction_code' => $this->data['transaction_code'] ?? null,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Mail\Customer;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Mail\Mailable;
|
||||
use Illuminate\Mail\Mailables\Content;
|
||||
use Illuminate\Mail\Mailables\Envelope;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class DepositSuccess extends Mailable
|
||||
{
|
||||
use Queueable, SerializesModels;
|
||||
|
||||
public array $data;
|
||||
|
||||
public function __construct(array $data)
|
||||
{
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
public function envelope(): Envelope
|
||||
{
|
||||
return new Envelope(
|
||||
subject: '✅ Nạp tiền thành công - ' . number_format($this->data['amount']) . ' VNĐ',
|
||||
);
|
||||
}
|
||||
|
||||
public function content(): Content
|
||||
{
|
||||
return new Content(
|
||||
view: 'emails.customer.deposit-success',
|
||||
with: [
|
||||
'customerName' => $this->data['customer_name'] ?? 'Khách hàng',
|
||||
'transactionCode' => $this->data['transaction_code'] ?? 'N/A',
|
||||
'amount' => $this->data['amount'] ?? 0,
|
||||
'amountFormatted' => number_format($this->data['amount']) ?? '0',
|
||||
'credit' => $this->data['credit'] ?? 0,
|
||||
'creditFormatted' => number_format($this->data['credit']) ?? '0',
|
||||
'currentTotal' => $this->data['current_total'] ?? 0,
|
||||
'currentTotalFormatted' => number_format($this->data['current_total']) ?? '0',
|
||||
'currentCredit' => $this->data['current_credit'] ?? 0,
|
||||
'currentCreditFormatted' => number_format($this->data['current_credit']) ?? '0',
|
||||
'depositDate' => $this->data['deposit_date'] ?? now()->format('d/m/Y H:i:s'),
|
||||
'supportEmail' => config('mail.support_email', 'support@thegioiso.com'),
|
||||
'supportPhone' => config('mail.support_phone', '1900.xxxx'),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -52,6 +52,25 @@ class Customer extends Authenticatable implements JWTSubject
|
||||
'ward_code',
|
||||
];
|
||||
|
||||
protected $updatable = [
|
||||
'fullname',
|
||||
'phone',
|
||||
'company',
|
||||
'address',
|
||||
'province_code',
|
||||
'ward_code',
|
||||
'gender',
|
||||
];
|
||||
|
||||
public function updatableFill(array $data): self
|
||||
{
|
||||
$data = array_intersect_key($data, array_flip($this->updatable));
|
||||
foreach ($data as $key => $value) {
|
||||
$this->{$key} = $value;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Appends for API
|
||||
*/
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 92 KiB |
@@ -0,0 +1,443 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="vi">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Nạp tiền thành công</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Helvetica', 'Arial', sans-serif;
|
||||
line-height: 150%;
|
||||
color: #505050;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #4c4e4e;
|
||||
}
|
||||
.container {
|
||||
width: 715px;
|
||||
margin: 0 auto;
|
||||
background-color: #ececec;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
.header-top {
|
||||
background-color: #f16723;
|
||||
padding: 9px 18px;
|
||||
border-radius: 8px 8px 0 0;
|
||||
color: #ffffff;
|
||||
}
|
||||
.header-top table {
|
||||
width: 100%;
|
||||
}
|
||||
.logo-section {
|
||||
padding: 20px;
|
||||
background: #fff;
|
||||
}
|
||||
.logo-section table {
|
||||
width: 100%;
|
||||
}
|
||||
.content {
|
||||
background: #fff;
|
||||
width: 95%;
|
||||
margin: 0 auto;
|
||||
padding: 20px 18px;
|
||||
}
|
||||
.success-box {
|
||||
background-color: #d4edda;
|
||||
border: 1px solid #c3e6cb;
|
||||
border-radius: 8px;
|
||||
padding: 20px;
|
||||
margin: 20px 0;
|
||||
text-align: center;
|
||||
}
|
||||
.success-title {
|
||||
color: #28a745;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
margin: 0 0 10px 0;
|
||||
}
|
||||
.info-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 20px 0;
|
||||
}
|
||||
.info-table th {
|
||||
background-color: #36414b;
|
||||
color: #ffffff;
|
||||
padding: 10px 15px;
|
||||
text-align: left;
|
||||
font-weight: normal;
|
||||
}
|
||||
.info-table td {
|
||||
padding: 20px 15px;
|
||||
border-top: 1px solid #d9d9d9;
|
||||
color: #505050;
|
||||
}
|
||||
.balance-box {
|
||||
background-color: #e8f5e8;
|
||||
border: 1px solid #c3e6cb;
|
||||
border-radius: 8px;
|
||||
padding: 15px;
|
||||
margin: 20px 0;
|
||||
}
|
||||
.balance-row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 8px 0;
|
||||
border-bottom: 1px solid #d4edda;
|
||||
}
|
||||
.balance-row:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.balance-label {
|
||||
font-weight: bold;
|
||||
color: #495057;
|
||||
}
|
||||
.balance-value {
|
||||
color: #28a745;
|
||||
font-weight: bold;
|
||||
}
|
||||
.footer-section {
|
||||
padding: 20px;
|
||||
}
|
||||
.footer-section table {
|
||||
width: 100%;
|
||||
}
|
||||
.bank-info {
|
||||
background: #fff;
|
||||
width: 95%;
|
||||
margin: 0 auto;
|
||||
padding: 18px;
|
||||
}
|
||||
.bank-info-title {
|
||||
color: #0099cc;
|
||||
font-weight: bold;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.bank-account {
|
||||
padding: 5px 0;
|
||||
}
|
||||
.footer-bottom {
|
||||
background-color: #f16723;
|
||||
padding: 10px 18px;
|
||||
border-radius: 0 0 8px 8px;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
}
|
||||
.footer-note {
|
||||
font-size: 11px;
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
padding-top: 10px;
|
||||
color: #fff;
|
||||
}
|
||||
.auto-email-notice {
|
||||
font-size: 11px;
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
padding-top: 10px;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="center" style="border-collapse:collapse;padding:0;background-color:#4c4e4e;height:100%;margin:0;width:100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="font-size:11px;font-style:italic;text-align:center;padding-top:10px;color:#fff">Đây là email tự động. Quý khách vui lòng không trả lời email này.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="center" style="border-collapse:collapse;border-top:0;height:100%;margin:0;width:100%;line-height:200%;padding:10px">
|
||||
<table width="715" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse;border:1px none #aaa;background-color:#ececec;border-radius:8px">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="border-collapse:collapse;padding:0">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" align="center" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;padding-top:9px;padding-bottom:9px;background-color:#f16723;padding-left:18px;padding-right:18px;border-radius:8px 8px 0 0">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="left" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="left" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="border-collapse:collapse;color:#505050;font-family:Helvetica,Arial;font-size:12px;text-align:left"><span style="color:#ffffff">{{ $depositDate }}</span></td>
|
||||
<td style="border-collapse:collapse;color:#505050;font-family:Helvetica,Arial;font-size:12px;text-align:right"><span style="color:#ffffff">Hotline: {{ $supportPhone }}</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="center" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="center" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;padding-top:20px;padding-bottom:20px;padding-left:20px;padding-right:18px">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="left" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse">
|
||||
<table width="220" cellspacing="0" cellpadding="0" border="0" align="left" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-family:Helvetica,Arial;font-size:12px;line-height:150%;text-align:left;padding-top:5px">
|
||||
<img style="border:0;height:51px;line-height:100%;outline:none;text-decoration:none;width:200px" src="{{ asset('images/logo.png') }}" alt="Logo">
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table width="409" cellspacing="0" cellpadding="0" border="0" align="right" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-family:Helvetica,Arial;font-size:12px;line-height:150%;text-align:left;padding-top:12px">
|
||||
<p style="margin:0;padding-bottom:0;text-align:right"><span style="font-size:14px"><strong>CÔNG TY CỔ PHẦN GIẢI PHÁP CÔNG NGHỆ THẾ GIỚI SỐ</strong></span><br> DỊCH VỤ SERVER - CLOUD - VPS CHUYÊN NGHIỆP</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="center" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse;background:#fff;width:95%;margin:0 auto">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="left" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-family:Helvetica,Arial;font-size:12px;text-align:left;padding-top:10px;padding-bottom:10px;padding-left:19px;padding-right:18px">
|
||||
<div style="margin-bottom:10px">Chào khách hàng <strong>{{ $customerName }}</strong>,</div>
|
||||
<div style="margin-bottom:10px">Thế Giới Số trân trọng cảm ơn quý khách hàng đã quan tâm và sử dụng dịch vụ trong thời gian qua.</div>
|
||||
<div><strong>Chúng tôi xin thông báo về việc nạp tiền vào tài khoản thành công.</strong></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="center" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse;background:#fff;width:95%;margin:0 auto">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;padding-top:0px;padding-bottom:20px;padding-left:18px;padding-right:18px">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="left" style="border-collapse:collapse;border-style:solid;border-color:#e5e5e5;border-width:1px">
|
||||
<thead>
|
||||
<tr>
|
||||
<th valign="top" style="color:#505050;font-family:Arial;font-size:12px;line-height:150%;text-align:left;font-weight:normal;color:#ffffff;padding-bottom:10px;padding-right:15px;padding-left:15px;padding-top:10px;background-color:#36414b">Thông tin giao dịch</th>
|
||||
<th valign="top" style="color:#505050;font-family:Arial;font-size:12px;line-height:150%;text-align:left;font-weight:normal;color:#ffffff;padding-bottom:10px;padding-right:15px;padding-left:15px;padding-top:10px;background-color:#36414b">Chi tiết</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-size:12px;line-height:150%;text-align:left;border-top-style:solid;padding-bottom:20px;padding-right:15px;padding-left:15px;padding-top:20px;border-top-color:#d9d9d9;border-top-width:1px">Mã giao dịch</td>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-size:12px;line-height:150%;text-align:left;border-top-style:solid;padding-bottom:20px;padding-right:15px;padding-left:15px;padding-top:20px;border-top-color:#d9d9d9;border-top-width:1px"><strong>{{ $transactionCode }}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-size:12px;line-height:150%;text-align:left;border-top-style:solid;padding-bottom:20px;padding-right:15px;padding-left:15px;padding-top:20px;border-top-color:#d9d9d9;border-top-width:1px">Số tiền nạp</td>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-size:12px;line-height:150%;text-align:left;border-top-style:solid;padding-bottom:20px;padding-right:15px;padding-left:15px;padding-top:20px;border-top-color:#d9d9d9;border-top-width:1px"><strong style="color:#28a745">{{ $amountFormatted }} VNĐ</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-size:12px;line-height:150%;text-align:left;border-top-style:solid;padding-bottom:20px;padding-right:15px;padding-left:15px;padding-top:20px;border-top-color:#d9d9d9;border-top-width:1px">Credit nhận được</td>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-size:12px;line-height:150%;text-align:left;border-top-style:solid;padding-bottom:20px;padding-right:15px;padding-left:15px;padding-top:20px;border-top-color:#d9d9d9;border-top-width:1px"><strong style="color:#28a745">{{ $creditFormatted }} Credit</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-size:12px;line-height:150%;text-align:left;border-top-style:solid;padding-bottom:20px;padding-right:15px;padding-left:15px;padding-top:20px;border-top-color:#d9d9d9;border-top-width:1px">Thời gian</td>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-size:12px;line-height:150%;text-align:left;border-top-style:solid;padding-bottom:20px;padding-right:15px;padding-left:15px;padding-top:20px;border-top-color:#d9d9d9;border-top-width:1px">{{ $depositDate }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="center" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse;background:#fff;width:95%;margin:0 auto">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="left" style="border-collapse:collapse;font-family:Arial">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-family:Helvetica,Arial;font-size:12px;line-height:150%;text-align:left;padding-left:19px;padding-right:18px">
|
||||
<div style="margin-bottom:10px"><span style="font-size:12px"><strong>Số dư tài khoản sau khi nạp:</strong></span></div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="center" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse;background:#fff;width:95%;margin:0 auto">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;padding-top:0px;padding-bottom:20px;padding-left:18px;padding-right:18px">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="left" style="border-collapse:collapse;border-style:solid;border-color:#e5e5e5;border-width:1px">
|
||||
<thead>
|
||||
<tr>
|
||||
<th valign="top" style="color:#505050;font-family:Arial;font-size:12px;line-height:150%;text-align:left;font-weight:normal;color:#ffffff;padding-bottom:10px;padding-right:15px;padding-left:15px;padding-top:10px;background-color:#36414b">Loại</th>
|
||||
<th valign="top" style="color:#505050;font-family:Arial;font-size:12px;line-height:150%;text-align:left;font-weight:normal;color:#ffffff;padding-bottom:10px;padding-right:15px;padding-left:15px;padding-top:10px;background-color:#36414b">Số dư hiện tại</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-size:12px;line-height:150%;text-align:left;border-top-style:solid;padding-bottom:20px;padding-right:15px;padding-left:15px;padding-top:20px;border-top-color:#d9d9d9;border-top-width:1px">Số dư VNĐ</td>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-size:12px;line-height:150%;text-align:left;border-top-style:solid;padding-bottom:20px;padding-right:15px;padding-left:15px;padding-top:20px;border-top-color:#d9d9d9;border-top-width:1px"><strong>{{ $currentTotalFormatted }} VNĐ</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-size:12px;line-height:150%;text-align:left;border-top-style:solid;padding-bottom:20px;padding-right:15px;padding-left:15px;padding-top:20px;border-top-color:#d9d9d9;border-top-width:1px">Số dư Credit</td>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-size:12px;line-height:150%;text-align:left;border-top-style:solid;padding-bottom:20px;padding-right:15px;padding-left:15px;padding-top:20px;border-top-color:#d9d9d9;border-top-width:1px"><strong>{{ $currentCreditFormatted }} Credit</strong></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="center" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse;background:#fff;width:95%;margin:0 auto">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="left" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#36414b;font-family:Helvetica,Arial;font-size:12px;line-height:200%;text-align:left;padding-top:30px;padding-bottom:9px;padding-left:18px;padding-right:18px">
|
||||
<p style="margin:0;padding-bottom:1em"><b>Lưu ý:</b></p>
|
||||
<p style="margin:0;padding-bottom:1em">- Credit có thể được sử dụng để đăng ký các dịch vụ của Thế Giới Số như: Hosting, VPS, Server, Tên miền, SSL...</p>
|
||||
<p style="margin:0;padding-bottom:1em">- Số dư VNĐ trong tài khoản sẽ được sử dụng để thanh toán các đơn hàng.</p>
|
||||
<p style="margin:0;padding-bottom:0">Nếu quý khách cần hỗ trợ, vui lòng liên hệ với chúng tôi.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="center" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse;background:#fff;width:95%;margin:0 auto">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;padding-top:9px;padding-bottom:9px;padding-left:18px;padding-right:18px">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="left" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#505050;font-family:Helvetica,Arial;font-size:12px;line-height:200%;text-align:left">
|
||||
<p style="margin:0;padding-bottom:1em"><span style="color:#0099cc"><strong>THANH TOÁN CHUYỂN KHOẢN</strong></span></p>
|
||||
<p style="margin:0;padding-bottom:0">Tên tài khoản: <b>Công ty Cổ Phần Giải Pháp Công nghệ Thế Giới Số</b><br> Số TK VNĐ: <strong>0999999999</strong><br> Ngân hàng: <strong>VNPAY</strong></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="center" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;background-color:#f16723;border-radius:0 0 8px 8px">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="left" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse;color:#ffffff;font-family:Helvetica,Arial;font-size:12px;text-align:center;padding-top:10px;padding-bottom:10px;padding-left:18px;padding-right:18px">
|
||||
<span>Copyright (c) 2024 The Gioi So. All Rights Reserved</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" align="center" style="border-collapse:collapse">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0" style="border-collapse:collapse">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td valign="top" style="border-collapse:collapse"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -19,6 +19,7 @@ Route::prefix('v1')->as('api.')->group(function () {
|
||||
Route::group(['middleware' => ['api.auth']], function () {
|
||||
Route::get('me', 'me')->name('me');
|
||||
Route::post('logout', 'logout')->name('logout');
|
||||
Route::put('update', 'update')->name('update');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user