最近在幫朋友處理一家金流公司 OEN 應援科技 的串接,不過基本上,就是老樣子,我就是大概寫出來 sample code
之後的應用就看大家了,只是因為想說都比較少人分享 C# 上的 code ,自己剛好寫了就筆記一下
今天主要是寫在測試機上的信用卡串接,首先你得先到後台拿到 token

之後還要拿到你們的 merchantid ,有這兩個資訊之後就可以開始測試了
private static string TestPaymentUrl
{
get
{
return "https://payment-api.testing.oen.tw/";
}
}
private static string ProductPaymentUrl
{
get
{
return "https://payment-api.oen.tw/";
}
}
public string MerchantId { get; set; }
public string AuthToken { get; set; }
/// <summary>
// 使用信用卡付款
/// </summary>
/// <param name="orderId"></param>
/// <param name="amount"></param>
/// <param name="cardNo"></param>
/// <param name="cardExp"></param>
/// <param name="cardCVV"></param>
/// <param name="cardUserName"></param>
/// <param name="prodId"></param>
/// <param name="prodName"></param>
/// <param name="prodQvt"></param>
/// <param name="prodUnit"></param>
/// <param name="userName"></param>
/// <param name="userEmail"></param>
/// <param name="testMode"></param>
/// <returns></returns>
public PayByCreditCardResponse PayByCreditCard(string orderId, int amount,
string cardNo, string cardExp, string cardCVV, string cardUserName,
string prodId, string prodName, int prodQvt, string prodUnit,
string userName = "", string userEmail = "",
bool testMode = true)
{
var transationUrl = TestPaymentUrl;
if (!testMode)
{
transationUrl = ProductPaymentUrl;
}
try
{
var client = new RestClient(transationUrl);
// 創建 POST 請求
var request = new RestRequest("transactions", Method.Post);
// 設置 JSON 數據
var transData = new
{
merchantId = MerchantId,
amount = amount,
cardNum = cardNo,
cardExp = cardExp,
cardCVV = cardCVV,
cardName = cardUserName,
orderId = orderId,
productDetails = new
[] {
new {
productionCode=prodId,
description= prodName,
quantity =prodQvt,
unit=prodUnit,
unitPrice= amount,
}
}
,
userName = userName,
userEmail = userEmail
};
// 添加 JSON Body 到請求中
request.AddJsonBody(transData);
request.AddHeader("Authorization", "Bearer " + AuthToken);
request.AddHeader("Content-Type", "application/json");
// 發送請求並接收回應
var response = client.ExecuteAsync(request).Result;
return JsonConvert.DeserializeObject<PayByCreditCardResponse>(response.Content);
}
catch (Exception ex)
{
throw ex;
}
}
public class PayByCreditCardData
{
public string id { get; set; }
public string transactionId { get; set; }
public string authCode { get; set; }
}
public class PayByCreditCardResponse
{
public string code { get; set; }
public PayByCreditCardData data { get; set; }
public string message { get; set; }
}
接下來就是呼叫端的程式碼:
var oenHandlr = new OENCashHandler(MerchantId, Token);
var res = oenHandlr.PayByCreditCard("t" + DateTime.Now.ToString("mmddHHmmss"), 99
, "4242424242424242", "1026", "123", "Donma Hsu",
"P001", "測試商品1", 1, "個");
Result = JsonConvert.SerializeObject(res);
//response
//{"code":"S0000","data":{"id":"P202410186LZVWMRH","transactionId":"2nbUM5uhQ1gkpeTiLc7xfAkVD21","authCode":"831000"},"message":""}

看程式碼就好,很簡單,有其他需要或是變形,可以自己在看他們家文件再修改
如果有需要就自行取用,不過這家算是新創的公司,這 API 之後都有可能修改,斟酌使用..