示例#1
0
        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);
        }