昨天我們利用service把計算sign的邏輯串接起來,今天繼續來試試看,要如何取得永豐Api的response,並且在C#解析並還原加密的原始訊息吧!
先讓我們來看看「建立訂單」的基本流程:
永豐API有提供 1.ATM 2.信用卡 3.信用卡+3D驗證
這邊附圖先以信用卡交易流程為主
原始文件有提示實作方法:
將
Message
字串 以16進制2位數字轉換成Byte
,再以AES CBC
方式解密 。
今日工事,就是要來解密Message
,以取得還原訊息
這個步驟很重要!!!
產生WebAPIMessage
BaseRequestModel req = new BaseRequestModel()
{
Version = "1.0.0",
ShopNo = shopNo,
APIService = APIService.OrderCreate,
Nonce = nonce,
Message = message,
//利用Request物件, AESKey及Nonce組成Sign值
Sign = SignService.GetSign(nonce, request)
};
try
{
//_logger.LogWarning(string.Format("呼叫商業收付API Order/{0} , Request:{1}", req.APIService, QPayCommon.SerializeToJson(req)));
//呼叫商業收付Web API
var result = await _qPayRepository.CreateApiAsync("Order", req);
//_logger.LogInformation(string.Format("呼叫商業收付API Order/{0} , Response:{1}", req.APIService, QPayCommon.SerializeToJson(result)));
string decodedMsg = AesCBC_Encrypt.AESDecrypt(result.Message, hashId, result.Nonce);
_logger.LogInformation("Response Message:" + decodedMsg);
var innerResult = JsonConvert.DeserializeObject<BaseResponseModel>(decodedMsg);
return innerResult;
}
catch (Exception ex)
{
//_logger.LogWarning(null, ex);
throw ex;
}