close

本篇內容為 ⌜奶油君⌟ 工作測試紀錄,
歡迎參考討論或分享給有需要的人,但請勿轉載
pexels-photo-360591.jpeg
首先申請測試帳號

 
使用email註冊
收取email取得帳號密碼登入
根據
內說明的方式取得ID 跟密碼
 
底下為程式碼
 
v3跟v2的差別在於傳輸的資料需要另外加密
 
先附上加密的寫法
 
private static string HmacSHA256(string message, string key)
        {
            key = key ?? "";
            var encoding = new System.Text.UTF8Encoding();
            byte[] keyByte = encoding.GetBytes(key);
            byte[] messageBytes = encoding.GetBytes(message);
            using (var hmacsha256 = new HMACSHA256(keyByte))
            {
                byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
                return Convert.ToBase64String(hashmessage);
            }
        }
 
 
再附上呼叫的寫法
ValueInToken 是我要傳入的Json參數  
可以先建立一個model 然後去包要傳入的參數
payin 就是我的model 這邊省略 
string ValueInToken = JsonConvert.SerializeObject(payin);
string apiurl = "/v3/payments/request";
string ChannelSecret = "你的Key ";
string ChannelId = "你的Id";
string nonce = Guid.NewGuid().ToString();
string Signature = HmacSHA256((ChannelSecret + apiurl + ValueInToken + nonce), ChannelSecret);
 
底下建立連線
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
request.Headers.Add("X-LINE-ChannelId", ChannelId);
request.Headers.Add("X-LINE-Authorization-Nonce", nonce);
request.Headers.Add("X-LINE-Authorization", Signature);
 
using (var stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }

var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
 
底下取得line回傳資訊 這邊我是建立一個model LinePayOut 去包
var backModel = JsonConvert.DeserializeObject<LinePayOut>(responseString);

            if(backModel.returnCode == "0000")
            {
                return Redirect(backModel.info.paymentUrl.web);
            }
            else
            {
                return Content(backModel.returnMessage);
            }

 
大致概念是這樣
特別寫只是因為一開始卡加密那邊
一開始寫法是先HmacSHA256後再 Base64(被line官網的Java code誤導 分兩段來寫)
過程中多用一次GetBytes
導致加密不正確取得的回傳都是1106
這邊特別紀錄讓大家不會卡在加密那段
 

歡迎交流意見😃







 

arrow
arrow

    角落時光 發表在 痞客邦 留言(0) 人氣()