[C#] 快速上手 OEN 應援科技支付 API:使用信用卡的 Token 進行付款

2024-10-21

上一篇文章提到如何使用信用卡卡號交換 Token,實現更安全的支付處理方式。透過將信用卡資訊轉換為 Token,可以減少直接存取敏感資訊的風險,

並在系統設計上提升合規性和安全性。 接下來,我們將進一步探討如何使用取得的 Token 進行實際的付款交易。這個步驟是支付流程中的關鍵環節,

能讓客戶在不重複輸入信用卡資訊的情況下,輕鬆完成購物或服務的支付。Token 的使用能夠簡化交易過程,提升使用者體驗,同時降低資訊洩露的風險

。 讓我們直接從程式碼開始,看看如何實現這個過程。這段程式碼將展示如何透過 Token 進行付款,並處理支付的 API 呼叫,確保交易順利完成。



[C#] 快速上手 OEN 應援科技支付 API:使用信用卡換 Token

上一篇文章(快速上手 OEN 應援科技支付 API:C# 信用卡串接範例),寫到 OEN 應援科技的金流系統,如何串接信用卡支付,今天要來聊聊如何使用

OEN 應援科技 使用信用卡換成  Token ,之後你只要將用戶跟 Token 進行關聯,之後客戶消費就可以使用 Token

這樣在系統設計上,比較不會有爭議



[C#] 快速上手 OEN 應援科技支付 API:C# 信用卡串接範例

2024-10-18

最近在幫朋友處理一家金流公司 OEN 應援科技 的串接,不過基本上,就是老樣子,我就是大概寫出來 sample code

之後的應用就看大家了,只是因為想說都比較少人分享 C# 上的 code ,自己剛好寫了就筆記一下



[ASP.NET] Razor 控制 HTML 元素屬性:快速實現常見操作

2024-10-17

今天寫一些每天都會用到,但是有時候就是會忘記然後去查一下

想了想不如寫一篇文章整理一下,讓自己記住,如果你覺得太簡單就直接跳過吧

我只是要記錄一下一些 Razor 在 HTML 中下的操作方式。



[Google 試算表] 資料驗證:設定欄位日期不可小於某儲存格輸入的日期(動態資料)

2024-09-05

最近有用到這需求,我需要在 Google Sheets 中判斷某一欄 ( Column ) 的資料,裡面輸入的日期

都必須要小於另一個欄位的值,我測試許多方法,後來發現其實很簡單, 是我把事情想得太複雜了



[C#] 實現 TabPay 金流平台的快速信用卡支付整合(保留卡片) - Pay By Card Token

2024-09-04

接續上一篇文章,這也是為何主要最後選 TabPay 的原因,因為他可以保存住客戶的信用卡授權

然後再次進行刷卡,但是得先取得授權並且保存著,這時候要使用的就是 Pay by Card Token



[C#] 實現 TabPay 金流平台的快速信用卡支付整合 - Get Prime

2024-09-02

最近因為有需要,所以用到了一個三方金流的公司叫做 TabPay全方位金流平台,因為之前都只有接藍綠紅

現在百花齊放,因為看一下範例很多都是用 python 寫的,所以想說就筆記一下使用 C# 開發信用卡付款的方法

之後要用到就可以快速復習一下



[C#] 在網頁專案中使用 HtmlSanitizer 來防範 XSS 攻擊

2024-08-27

在做網頁專案中,很常會使用到 summernote 或是其他的 html 編輯器套件,會讓客戶輸入他自己要輸入的 html 

但是呢為了避免客戶輸入的 的程式碼造成 XSS 攻擊,所以有些 Tag 或是 Attribute 是危險的,這時候有同事推薦這個套件

HtmlSanitizer



[C#] 可程式化的免費圖床方案 - Pinata

今天分享目前找到的圖床最後一篇,這服務比較特別,他主打基於 Web 3 + IPFS 上儲存和檢索媒體的服務

就是 Pinata ,我網路上查一下 Pinata 的意思 : 皮納塔(西班牙語:Piñata),是一種紙糊的容器,其內裝滿玩具與糖果,於節慶或生日宴會上懸掛起來,

讓人用棍棒打擊,打破時玩具與糖果會掉落下來。

蠻有趣的名稱接下來就是我們看上傳圖片的部份,畢竟我們是以圖床為主



[C#] 可程式化的免費圖床方案 - SM.MS

2024-08-26

免費圖床系列介紹之續篇,今天帶來的是 sm.ms。這是一家歷史悠久的圖床服務,許多朋友都推薦使用它。

sm.ms 因為服務穩定、規則清晰明確,尤其在免費方案方面表現不錯,所以我決定趁此機會記錄下這些使用心得。



[C#] 可程式化的免費圖床方案 - imgbb

2024-08-23

上一篇說到因為 imgur 因為客戶關係被鎖了,所以我就在繼續找其他可以用的免費圖床

上次介紹了一個有免費的圖床 - Cloudinary ,今天介紹另一家比較常見的 imgbb 



[C#] 可程式化的免費圖床方案 - Cloudinary

2024-08-22

之前圖床都是用 imgur ,但是最近因為客戶違規,導致我的 API 或是 IP 被擋住

這時候客戶基本上想要換一間圖床,所以簡單做一下功課,基本上不知道問誰就問了一下 GPT 

之後就整理了一下幾家,今天就先分享 Cloudinary 



[Google 試算表] 如何用 Google Sheets 的 =IMAGE 函數自動抓取和調整網路圖片

2024-08-16

網路上問我 Google Sheets 的朋友其實不少,最近遇到一個問題

有沒有辦法插入網路上的圖片,其實可以的而且可以直接顯示,不過寬度就是要自己調整就是了

畢竟這就是 Excel 類的東西,圖片類的就是比較麻煩一點


[C#] .NET8 - Razor Pages 中的 Partial Layout:如何分離佈局並載入動態資料

2024-08-14

最近在做一些專案轉移,遇到以前的 .NET Framework 的 WebForm  轉到新的 .NET 8 上面

在 .NET Razor Pages 中,Partial Layout 是一種可以分離頁面佈局和邏輯的方法,

允將重複的 Layout 部分抽取到一個單獨的文件中,並根據需要載入不同的資料。這種方式不僅提升了代碼的重用性和可維護性,還使得頁面更加模組化和靈活。

有點類似以前 Web Component 的作法,但是不會有 Postback 的麻煩問題,筆記一下



[C#] Edge WebView2 擴充套件實作筆記:安裝及常見問題解析

2024-07-22

更新一下,最近在繼續研究 Edge WebView2 ,因為要處理一些麻煩的東西需要安裝外掛 (extension)

是成功安裝了,但是還有些小問題,這邊先筆記一下,之後有任何突破在更新吧..


[C#] Edge WebView2 與 WinForms:實現按鈕事件與本地代碼交互的指南

2024-06-12

今天來寫一篇關於 Edge WebView2 中會用到的部份,就是我在載入在 Edge WebView 2 中的網頁

我先注入 JQuery ,然後我加入按鈕事件以外,並且將該按鈕點擊事件中,傳入訊號給主體的 winform 

這樣就可以做到 call native code.


[C#] 在 WinForms 中使用 Edge WebView2 處理新視窗點擊事件

2024-06-07

這幾天分享一了關於 Edge WebView2 的應用,這時候有同事問我如何處理開新視窗之後的處理

他必須要模擬點擊,但是該連結為 _blank ,他必須要處理點擊後的視窗,在預設中的確會開啟一個新的視窗長這樣..


[C#] 如何在 Edge WebView2 中注入和使用 JQuery 來改變網頁內容

2024-06-05

上一篇文章簡單的介紹了 Edge WebView2 的套件,接下來,就是比較要做的常規操作,就是我們要 inject 一些 js 進去

今天主要目的就是,載入網頁後,在 inject JQuery 之後再呼叫一行 JQuery 的程式去改變網頁上面的內容.


[C#] 簡單使用 Microsoft Edge WebView2 在 WinForms 中的應用

2024-06-03

好久沒寫 WinForms 了,最近因為有一些比較麻煩的需求,所以必須使用 WinForms 來解決問題會比較簡單。

這次的需求是要操控網頁來取得一些資料,經過評估,決定使用 WinForms。然而,想到 WebView 用的是舊版的 IE 核心,本來打算使用第三方的 Chromium 套件,但查了之後發現竟然有 Microsoft 官方推出的 Edge WebView2。



[C#] 解決 .NET 6 部署到 Linux 出現亂碼問題的經驗分享

2024-05-29

今天要記錄一個不大不小的事情,因為最近在部署 .NET 6 網站到 Linux 機器上時,出現了亂碼方框的問題。

經過查詢,發現這是編碼問題引起的。雖然預設情況下應該是使用 UTF-8 編碼,但有時候在複製貼上內容時,會自動變成 Big5 編碼。



[C#] 透過Azure Blob 租用解決Azure App Service Scale Out 多 Instances 使用同一個 Lock

2024-03-05

上一篇文章,我們提到了Azure App Service scale out 之後如何取得 instance id ,主要就是我要測試

如果現在他分裂成一台以上,我又要對檔案進行 IO 會產生什麼事情,你會問我為何要這樣操作,因為有可能你會用 

SQLite 或是 LiteDB 等..單機資料庫但是對於檔案寫入會有問題,這時候有什麼方法可解決 ?



[C#] Automatic scaling in Azure App Service 如何取得 Instance Id

最近在測試一些東西,是基於 Azure APP-SERVICE ,基本上 Azure App Service Auto Scaling 是一項能夠根據應用程式負載自動調整資源規模的功能

簡單的說就是,你可以設定一些CPU ,記憶體用量,PORT 數等等,去自動開機機器去服務

這邊就不贅述,這篇主要是分享如果他分裂成兩台這時候,我們怎麼去知道用程式知道我們是跑在哪一個 instance 


[C#] 不用 Access Token 如何獲取粉絲專頁的 UID

2024-02-29

記錄一下,最近有需求就是不要等入下取得臉書的公開資訊,所以目前解決方案就是

透過爬蟲,今天的範例,就是不登入狀況下,沒有 Access Token 下取得 LadyGaGa 臉書粉絲專業的 Fanspage ID



[C#] 探索 FreeSql:讓資料庫操作更為簡便高效 - 一對多的對應輕鬆操作

2024-02-21

上一篇文章,我們針對 資料如果過於龐大,拆成兩張表,並且同 Key 狀況下

進行 Table 擴充,還有一種狀況在開發上會常遇到的就是 OneToMany 的狀況

我有一個 OrderInfo 他有一個 Propery 物件為 Cate ,但是 CATES 表格中 中,每一個 Cate 會被許多 OrderInfo 的 CateId  給關聯著



[C#] 探索 FreeSql:讓資料庫操作更為簡便高效 - 擴增資料 OneToOne

上一篇文章,我們簡單的測試了 FreeSql ,今天我們要稍微複雜一點了

我們常常再設計資料庫表格的時候假設有一個資料模型非常大,這時候我們會拆開

把熱資料當作主表,其他比較冷的資料,會再用另一張表紀錄,這時候要用到 FreeSql OneToOne 的概念



[C#] 探索 FreeSql:讓資料庫操作更為簡便高效 - 簡單 新增/編輯,查詢資料

最近研究了一個我之前看到很有興趣的東西,最近再重新評估工具的時候測試一下

就想說順便把這套件介紹給大家這就是 FreeSql



[C#] .Net 下操作 Excel 新選擇 EPPlus - 輸出 Excel 中的圖片,取得圖片在 Excel 中的資訊。

2024-02-17

最近因為處理 Excel 比較多,所以分享比較多 EPPlus 遇到的事情跟心得,最近這需求是因為

我要去抓取 Excel 中的圖片,並且把其中的圖片抓出來,這邊是簡化過的範例,畢竟只是寫文章記錄

不用這麼去複雜化案例,這邊是我開一個 Excel 隨便貼入兩張圖,之後我們來測試看看使用 EPPlus 來把兩張圖片在 Excel 中的資訊抓出

並且把檔案輸出成每個圖檔..



[C#] .Net 下操作 Excel 新選擇 EPPlus - 插入圖片,技巧使用 AutoFit

最近使用 EPPlus 來解決 , Excel 問題,不免俗的又是遇到一個萬年的問題

如何插入圖片,其實在 Excel 中插入圖片一直都是一個麻煩的問題,因為圖片其實都是浮在儲存格的上面

所以,基本上你很難控制儲存格的大小,但是其實是有一個小技巧,以前我在處理 Excel 也是這樣處理的..


[C#] .Net 下操作 Excel 新選擇 EPPlus - 超簡單將 List 輸出成 Excel 檔案

2024-02-16

上一篇文章我們聊到如何快速地匯入資料透過 ,EpplusTableColumn 裡面的 Header 來比對

並且還原成為 Staff 的物件 ,今天我們聊一下,如何簡單的,把 List<Staff> 直接輸出成 Excel 檔案

這樣就不用在那邊數格子..



[Google 試算表] 透過 Yahoo Finance 撈取各國的股票現在價格

筆記一下免得之後找不到,之前有一篇文章 取得台灣股票現在的價格,而不使用 GOOGLEFINANCE 內建的方法 

之後我分享在網路上,有人就問我說可不可以撈取其他國家,像是 日本 或是 新加坡的股票

其實我當下提供了 GOOGLEFINANCE,其實就可以辦到,但是...



[C#] .Net 下操作 Excel 新選擇 EPPlus - 簡單還原 WorkSheet 資料回 List

2024-02-15

上一篇文章寫到 如何使用 EPPlus 建立 Excel 檔案,也有讀取 Excel 的方法

但是總覺得寫起來不夠舒服,難道就不能夠直接透過 第一 Row 透過欄位的方式還原物件嗎?


[C#] .Net 下操作 Excel 新選擇 EPPlus - 建立 Excel 檔案,讀取 Excel ,寫入公式,計算公式讀取公式

上次處理 Excel 問題還再 .Net Framewok ( 2014),現在都已經 .Net 8 了,該是時候找找看新的選擇,之前寫的 NPOI 當然都還可以使用

只是再想都已經到了 .Net8  有沒有其他好用的選擇 ,大概看了一下選了幾套測試,今天測試一下 EPPlus 



[C#] 一個輕量化的Database - LiteDB 中索引 ( index ) 的相關測試

2024-02-05

今天主要不是寫程式,主要是測試 LiteDB 到底對於索引的處理結果,我這邊有三個測試 collection

FRIEND1- 一百萬的資料沒有做索引

FRIEND2- 前50 萬筆建立好後,製作索引,後面再寫入 50萬筆

FRIEND3- 一百萬筆資料建立好後,再建立索引



[C#] 一個輕量化的Database - LiteDB 中的 關聯式操作 : DbRef

2024-02-02

今天繼續聊一個最近測試 LiteDB 遇到一個很有趣也很方便的東西,  LiteDB 雖然主要是 NoSQL 但是

他也有可以支持類似關聯式資料庫 的操作,畢竟透過正規化資料庫,對於資料規劃也會比較符合主流邏輯

這篇就來聊在 LiteDB  如何做到兩張表( collection ) 的關聯



[C#] 一個輕量化的Database -LiteDB 製作 List<Object>屬性索引查詢的最佳方法

2024-02-01

上一篇文章 說到 LiteDB 製作索引(index) ,百萬資料測試查詢篇,後來我有測到一個東西

就是我對屬性是 List<Object> 中的 某一屬性進行查詢,是不是可以做索引 (index) ,

答案是可以的,但是要直接做到 List<Object> 中要被查詢的該屬性..


[C#] 一個輕量化的Database - LiteDB 製作索引(index) ,百萬資料測試查詢篇


今天迎來 LiteDB 最後大的測試,就是建立索引,為了測試資料,我寫入了一百萬筆,所以花了一點時間

為了要比較前後,所以花了一點時間做範例+結果



[C#] 一個輕量化的Database - LiteDB 大檔處理 _files,_chunks

2024-01-31

如果是測試 Database  我也很好奇,LiteDB 是怎麼處理大型檔案格式的,看了一下

你將大檔案寫入該資料庫中,他會規畫一區讓你放檔案,有一張表負責記錄你放入啥檔案,另外一個 他稱之為 chunk 的

主要是會把檔案切割,每 255KB 切一段



[C#] 一個輕量化的Database - LiteDB 中 Shared Connection + Parallel.For 測試修改一筆資料

2024-01-30

最近在測試關於  LiteDB 的各種可能 ,在之前的案例預設的時候, 你在操作 LiteDB 都是獨占式開啟

但是我在使用 他的 GUI 工具的時候發現他在連線的時候有一個選項 就是 Shared 



[C#] 一個輕量化的Database - LiteDB 關於 Transation 的測試 Commit , Rollback

最近依然在測試 LiteDB,今天要測試的是 Transaction ,在 LiteDB 中 Transaction 其實很簡單的

跟傳統在寫 SQL Server 的 Transaction 設計的很像,我網路上查了一下文件,其實到 v5 之後版本寫法變得比較穩定

今天就簡單的記錄一下 



[C#] 一個輕量化的Database - LiteDB 各種查詢姿勢

2024-01-29

最近因為在測試 LiteDB ,所以這邊筆記幾個查詢方法,可以方便自己之後可以快速的回憶起來要怎麼寫

下面主要就是列舉幾種查詢資料的方法,最後一個測試比較久因為我查詢了 物件中的 List<Object> 

裡面的屬性並且使用 %LIKE% 



[C#] 一個輕量化的Database - LiteDB 關於 BsonValue 轉回物件問題

今天來說一個在嘗試 LiteDB 的時候遇到的錯誤,因為該套件的底層是使用 BSON ,所以在還原回物件的時候

他預設都是 LiteDB.BsonValue  ,因為我直接下一個查詢語法後直接使用 Json.NET , SerializeObject 的時候直接出現錯誤

Unhandled exception. Newtonsoft.Json.JsonSerializationException: Error getting value from 'AsBoolean' on 'LiteDB.BsonValue'.

 ---> System.InvalidCastException: Unable to cast object of type 'System.String' to type 'System.Boolean'.

   at lambda_method23(Closure, Object)

   at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)

   --- End of inner exception stack trace ---


[C#] 一個輕量化的Database - LiteDB的簡介與使用

2024-01-26

我自己本人因為 SQL 沒有寫的很好,所以很喜歡 NoSQL ,最近在看一些範例都會使用一套  DB 叫做 LiteDB

想說趁機會就玩玩看,基本上他官方上是寫基於 NoSQL 的結構,而且與 .NET 高度親和所以就順手研究一下

用起來頗為順手,對於一些小專案我想我會使用這優先於 SQLite 



[C#] .NET8 - SHA3-256 操作遭遇的平台問題

2024-01-25

最近在看 .NET 8 新功能,最近好像多了 SHA3_256 ,因為之前在弄區塊鏈的東西,其實都是使用套件

BouncyCastle  套件,但是現在 .NET 8 好像已經內建有支援,想說來測試一下,結果出現了

Unhandled exception. System.PlatformNotSupportedException: Operation is not supported on this platform.

at System.Security.Cryptography.SHA3_256.TryHashData(ReadOnlySpan`1 source, Span`1 destination, Int32& bytesWritten)

at System.Security.Cryptography.SHA3_256.HashData(ReadOnlySpan`1 source, Span`1 destination)

at System.Security.Cryptography.SHA3_256.HashData(ReadOnlySpan`1 source)

at System.Security.Cryptography.SHA3_256.HashData(Byte[] source)




[C#] .NET8 - Dictionary、FrozenDictionary、HashTable的性能對決

2024-01-24

最近在看 .NET 8 新功能,有一個東西有點興趣 就是 FrozenDictionary ,想說他跟傳統的 Dictionary 有啥不同

畢竟 .NET 8  是以輾壓級效能做為賣點 ,看了一下官方這段話的介紹

以效能為焦點的類型.NET 8 引進數種旨在改善應用程式效能的新類型。 新的 System.Collections.Frozen 命名空間包含集合類型和 FrozenDictionaryFrozenSet

這些類型不允許在集合建立之後對索引鍵和值進行任何變更。 該需求允許更快速的讀取作業(例如, TryGetValue() )。

這些類型特別適用于第一次使用時填入的集合,然後在長期服務期間持續保存

感覺使用上就是拿來可以放在記憶體中快速索引的好東西,直接用 BenchmarkDotNet 跑一下



[C#] Magick.NET 分享:PDF轉JPG遇到的問題及解決方案

2024-01-23

今天主要透過  Magick.NET 處理把 PDF 轉成 JPG 圖片,一頁轉成一個檔案,中間有遇到一些有的沒的問題

就記錄一下吧,給之後有這需求又有碰到的人



[C#] Magick.NET 分享:webp轉jpg、降低品質、等比例縮小

2024-01-22

最近在處理一些圖形的東西,但是因為就是很懶,所以網路上找了一下有沒有 .NET 可以方便撰寫的 library 

測試了幾個最後推薦這個  Magick.NET



[C#] 輕鬆驗證資料:探索.NET 8中對System.ComponentModel.DataAnnotations的增強支持

2024-01-19

最近在看 .Net8 新功能,發現 對於 System.ComponentModel.DataAnnotations 增加了許多的擴充

變得方便許多,今天就來簡單的測試一下


[.Net8]從AOT到dotnet publish:在Raspberry Pi 3上成功運行.NET 8 Web API的步驟

2024-01-18

最近因為要佈署一些 基於 .Net8 的Web API 到 Raspberry Pi 3  上面跑,因為 .Net 8 AOT 無法在上面執行

所以還是得安裝 dotnet 8 runtime ,因為我不死心我直接把程式碼放上去編譯,我原本是在 x64 電腦編譯後放過去

結果無法執行起來即使我 chmod+x 也沒用,但是放上去 透過 dotnet publish 後發現


[.Net][RPi] 將.NET 8搬上Raspberry Pi 3的操作指南

最近很訝異,因為我在 一台舊舊的 Raspberry Pi 3 上面執行起來一個 .net 8 的程式

雖然玩 Pi 也是有些年頭了,但是我沒有在上面面跑過 .Net 到是 Chromebook 我之前有在上面寫過 ASP.net 的小專案

重點是 因為我跑的機器是 Pi 3 ,我比較訝異,因為到了 Pi 4 性能上都有爆發成長都可以裝 Win11 了

這次我測是跑的專案是 這個 之前寫的 Console ,然後就放到 Pi3 上面跑跑看竟然成功了

所以分享一下步驟



[C#] 理解以太坊 HD 錢包生成:解密 BIP39 規範與單字驗證,無效助憶詞

2024-01-16

最近在搞事情,然後遇到一個之前我沒有發現的問題,以前在產生錢包的時候,我以為只要符合 BIP39 規範任選 12 or 24 單字就可以了

事實上,如果當你要把這隨便亂取的 12 的單字放入 MetaMask 或是其他 Web3 錢包的時候,就會出現


當麻許的超技八 2014 | Donma Hsu Design.