public static async Task <bool> CheckIfPaymentIsPaidAsync(string transactionId, string appId, string merchantId, string merchantKey) { var nonce = Guid.NewGuid().ToString().Replace("-", ""); var sign = WechatMd5SignGenerator.GetMd5Hash(appId, merchantId, nonce, transactionId, merchantKey); var verification = new WechatPaymentVerificationModel { AppId = appId, MerchantId = merchantId, Nonce = nonce, Sign = sign, TransactionId = transactionId }; var response = await PostAsync <WechatPaymentVerificationModel, WechatPaymentVerificationResultModel>("pay/orderquery", verification); var paid = string.Equals(response.ResultCode, WechatPayStatus.SUCCESS.ToString()) && string.Equals(response.ReturnCode, WechatPayStatus.SUCCESS.ToString()) && string.Equals(response.TradeState, WechatTradeState.SUCCESS.ToString()) && string.Equals(transactionId, response.TransactionId); if (!paid) { LoggingQueue.Add(new LogMessage { LogLevel = LogLevel.Log, Message = $"Wechat paid status: TransactionId: {transactionId}, ReturnCode: {response.ReturnCode}, ResultCode: {response.ResultCode}" }); } return(paid); }