Przeglądaj źródła

測試頁面調整

master
Joanne.Chuang 2 tygodni temu
rodzic
commit
89b141f41d
12 zmienionych plików z 96 dodań i 9 usunięć
  1. +11
    -0
      Altob.NtuInvoiceGateway/Models/DonateGroup.cs
  2. +6
    -0
      Altob.NtuInvoiceGateway/Models/DonateGroupApiOptions.cs
  3. +16
    -0
      Altob.NtuInvoiceGateway/Pages/Invoice.cshtml
  4. +8
    -5
      Altob.NtuInvoiceGateway/Pages/Invoice.cshtml.cs
  5. +7
    -3
      Altob.NtuInvoiceGateway/Pages/TestPostInvoice.cshtml
  6. +16
    -0
      Altob.NtuInvoiceGateway/Properties/PublishProfiles/Production.pubxml
  7. +16
    -0
      Altob.NtuInvoiceGateway/Properties/PublishProfiles/Staging.pubxml
  8. +2
    -1
      Altob.NtuInvoiceGateway/wwwroot/TestIndex.html
  9. +8
    -0
      Altob.NtuInvoiceGateway/wwwroot/TestInvoice.html
  10. +3
    -0
      Altob.NtuInvoiceGateway/wwwroot/js/select2/select2-bootstrap-5-theme.min.css
  11. +1
    -0
      Altob.NtuInvoiceGateway/wwwroot/js/select2/select2.min.css
  12. +2
    -0
      Altob.NtuInvoiceGateway/wwwroot/js/select2/select2.min.js

+ 11
- 0
Altob.NtuInvoiceGateway/Models/DonateGroup.cs Wyświetl plik

@@ -0,0 +1,11 @@
namespace Altob.NtuInvoiceGateway.Models;

public class DonateGroup
{
public string DonateBan { get; set; } = string.Empty;
public string DonateNm { get; set; } = string.Empty;
public string DonateCode { get; set; } = string.Empty;
public string DonateShortNm { get; set; } = string.Empty;
public string HsnNm { get; set; } = string.Empty;
public int Seq { get; set; }
}

+ 6
- 0
Altob.NtuInvoiceGateway/Models/DonateGroupApiOptions.cs Wyświetl plik

@@ -0,0 +1,6 @@
namespace Altob.NtuInvoiceGateway.Models;

public class DonateCodeApiOptions
{
public string Endpoint { get; set; } = string.Empty;
}

+ 16
- 0
Altob.NtuInvoiceGateway/Pages/Invoice.cshtml Wyświetl plik

@@ -86,6 +86,10 @@
<label asp-for="InvoiceData.LoveCode" class="form-label">捐贈碼</label>
<select asp-for="InvoiceData.LoveCode" class="form-control" id="loveCodeSelect">
<option value="">請選擇捐贈機構</option>
@if (!string.IsNullOrEmpty(Model.InvoiceData.LoveCode))
{
<option value="@Model.InvoiceData.LoveCode" selected>載入中... (@Model.InvoiceData.LoveCode)</option>
}
</select>
<small class="form-text text-muted">選擇捐贈機構後即為捐贈發票</small>
<span asp-validation-for="InvoiceData.LoveCode" class="text-danger"></span>
@@ -120,6 +124,8 @@
document.addEventListener('DOMContentLoaded', function() {
// 載入捐贈碼資料
const loveCodeSelect = $('#loveCodeSelect');
const selectedValue = loveCodeSelect.val(); // 保存送出失敗後返回的值
console.log('Initial loveCode value:', selectedValue);

fetch('/Invoice?handler=DonateCodes')
.then(response => {
@@ -129,6 +135,10 @@
return response.json();
})
.then(data => {
// 移除臨時的"載入中"選項(除了第一個空值選項)
loveCodeSelect.find('option:not(:first)').remove();

// 添加所有捐贈碼選項
data.forEach(item => {
const optionText = `(${item.donateCode}) ${item.donateNm}`;
const option = new Option(optionText, item.donateCode, false, false);
@@ -149,6 +159,12 @@
}
}
});

// 恢復之前選擇的值
if (selectedValue) {
loveCodeSelect.val(selectedValue).trigger('change');
console.log('Restored loveCode value:', selectedValue);
}
})
.catch(error => {
console.error('載入捐贈碼資料失敗:', error);


+ 8
- 5
Altob.NtuInvoiceGateway/Pages/Invoice.cshtml.cs Wyświetl plik

@@ -37,7 +37,7 @@ public class InvoiceModel : PageModel
_donateCodeApiOptions = donateCodeApiOptions.Value;
}

[BindProperty]
[BindProperty(SupportsGet = true)]
public InvoiceRequest InvoiceData { get; set; } = new();

public string? ErrorMessage { get; set; }
@@ -53,7 +53,10 @@ public class InvoiceModel : PageModel
public void OnGet()
{
RestoreDisplayValuesFromTempData();
// GET 方法保留為空,主要接收方式改為 POST JSON
NormalizeInvoiceData();
// 如果有 GET 參數,設置顯示資訊
DisplayTransDateTime = InvoiceData.TransDateTime;
DisplayTransAmount = InvoiceData.TransAmount;
}

public async Task<IActionResult> OnGetDonateCodesAsync()
@@ -266,7 +269,7 @@ public class InvoiceModel : PageModel

if (!response.IsSuccessStatusCode)
{
ErrorMessage = $"提交失敗:{apiResponse?.msg ?? response.StatusCode.ToString()}";
ErrorMessage = $"送出失敗:{apiResponse?.msg ?? response.StatusCode.ToString()}";
_logger.LogWarning("{ServiceName} - {ActionName} submission failed with HTTP {StatusCode} for OrderID: {OrderID}",
ServiceName, actionName, response.StatusCode, InvoiceData.OrderID);
return Page();
@@ -274,7 +277,7 @@ public class InvoiceModel : PageModel

if (apiResponse?.msgCode == "0000")
{
SuccessMessage = "發票資訊提交成功!";
SuccessMessage = "發票資訊送出成功!";
TempData[nameof(DisplayTransDateTime)] = DisplayTransDateTime;
TempData[nameof(DisplayTransAmount)] = DisplayTransAmount;
_logger.LogInformation("{ServiceName} - {ActionName} submitted successfully for OrderID: {OrderID}",
@@ -283,7 +286,7 @@ public class InvoiceModel : PageModel
}
else
{
ErrorMessage = $"提交失敗:{apiResponse?.msg ?? "未知錯誤"}";
ErrorMessage = $"送出失敗:{apiResponse?.msg ?? "未知錯誤"}";
_logger.LogWarning("{ServiceName} - {ActionName} submission failed: {Message}", ServiceName, actionName, apiResponse?.msg);
}
}


+ 7
- 3
Altob.NtuInvoiceGateway/Pages/TestPostInvoice.cshtml Wyświetl plik

@@ -102,6 +102,10 @@
<label class="form-label">購買者統編 (BuyerIdentifier)</label>
<input type="text" class="form-control" name="InvoiceData.BuyerIdentifier" placeholder="留空讓用戶填寫">
</div>
<div class="col-md-6">
<label class="form-label">捐贈碼 (LoveCode)</label>
<input type="text" class="form-control" name="InvoiceData.LoveCode" placeholder="留空讓用戶填寫">
</div>
</div>

<div class="d-grid gap-2">
@@ -117,8 +121,8 @@
<h5>POST 測試說明</h5>
<ul>
<li>所有必填欄位都會 POST 到發票頁面</li>
<li>Email、手機條碼、購買者統編如果留空,將在發票頁面讓用戶填寫</li>
<li>如果預填了這個欄位的其中一個,用戶將直接看到該預填值</li>
<li>Email、手機條碼、購買者統編、捐贈碼如果留空,將在發票頁面讓用戶填寫</li>
<li>如果預填了這個欄位的其中一個,用戶將直接看到該預填值</li>
<li>此頁面包含有效的防偽令牌(CSRF Token)</li>
</ul>
</div>
@@ -174,7 +178,7 @@
carPlateNum: formData.get('InvoiceData.CarPlateNum')?.toString() ?? '',
orderID: formData.get('InvoiceData.OrderID')?.toString() ?? '',
buyerIdentifier: formData.get('InvoiceData.BuyerIdentifier')?.toString() ?? '',
loveCode: '',
loveCode: formData.get('InvoiceData.LoveCode')?.toString() ?? '',
taxType: formData.get('InvoiceData.TaxType')?.toString() ?? ''
};



+ 16
- 0
Altob.NtuInvoiceGateway/Properties/PublishProfiles/Production.pubxml Wyświetl plik

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->
<Project>
<PropertyGroup>
<DeleteExistingFiles>false</DeleteExistingFiles>
<ExcludeApp_Data>false</ExcludeApp_Data>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>D:\Output\Altob.NtuInvoiceGateway</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
<_TargetId>Folder</_TargetId>
<EnvironmentName>Production</EnvironmentName>
</PropertyGroup>
</Project>

+ 16
- 0
Altob.NtuInvoiceGateway/Properties/PublishProfiles/Staging.pubxml Wyświetl plik

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->
<Project>
<PropertyGroup>
<DeleteExistingFiles>false</DeleteExistingFiles>
<ExcludeApp_Data>false</ExcludeApp_Data>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>D:\Output\Altob.NtuInvoiceGateway</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
<_TargetId>Folder</_TargetId>
<EnvironmentName>Staging</EnvironmentName>
</PropertyGroup>
</Project>

+ 2
- 1
Altob.NtuInvoiceGateway/wwwroot/TestIndex.html Wyświetl plik

@@ -73,7 +73,7 @@
</h3>
</div>
<div class="card-body">
<h5 class="card-title text-success">表單提交方式轉頁</h5>
<h5 class="card-title text-success">表單送出方式轉頁</h5>
<p class="card-text">使用 HTTP POST 方法傳遞參數到發票頁面</p>
<hr>
<h6 class="text-muted">特點:</h6>
@@ -124,6 +124,7 @@
<li>消費者信箱 (email)</li>
<li>手機條碼 (carrierID)</li>
<li>購買者統編 (buyerIdentifier)</li>
<li>捐贈碼 (loveCode)</li>
</ul>
<div class="alert alert-warning mt-2">
<small><strong>注意:</strong>選填參數可以預填,也可以留空讓用戶在發票頁面填寫</small>


+ 8
- 0
Altob.NtuInvoiceGateway/wwwroot/TestInvoice.html Wyświetl plik

@@ -85,6 +85,10 @@
<label class="form-label">購買者統編 (buyerIdentifier)</label>
<input type="text" class="form-control" name="buyerIdentifier" placeholder="87654321">
</div>
<div class="col-md-6">
<label class="form-label">捐贈碼 (loveCode)</label>
<input type="text" class="form-control" name="loveCode" placeholder="123456">
</div>
</div>

<div class="d-grid gap-2">
@@ -110,6 +114,10 @@
class="btn btn-outline-secondary">
測試連結 3 - 預填手機條碼
</a>
<a href="/Invoice?identifier=12345678&transDateTime=2024-01-15%2014:30:00&transAmount=150&deviceID=DEVICE001&locationID=A&carPlateNum=ABC1234&orderID=ORDER004&taxType=1&loveCode=123456"
class="btn btn-outline-secondary">
測試連結 4 - 預填捐贈碼
</a>
</div>
</div>
</div>


+ 3
- 0
Altob.NtuInvoiceGateway/wwwroot/js/select2/select2-bootstrap-5-theme.min.css
Plik diff jest za duży
Wyświetl plik


+ 1
- 0
Altob.NtuInvoiceGateway/wwwroot/js/select2/select2.min.css
Plik diff jest za duży
Wyświetl plik


+ 2
- 0
Altob.NtuInvoiceGateway/wwwroot/js/select2/select2.min.js
Plik diff jest za duży
Wyświetl plik


Ładowanie…
Anuluj
Zapisz