From d5fe1b8b4de07a9ceeee5bba65677f5c0b5e9d5d Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期一, 31 三月 2025 10:14:56 +0800 Subject: [PATCH] Merge branch 'dev-lifepay-v1.3' of http://120.26.58.240:8888/r/LifePaymentApi into dev-lifepay-v1.3 --- LifePayment/LifePayment.Domain/Ali/AliPayApi.cs | 135 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 133 insertions(+), 2 deletions(-) diff --git a/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs b/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs index 15e591c..b3f7f32 100644 --- a/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs +++ b/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs @@ -56,13 +56,13 @@ /// <returns></returns> public async Task<AlipayTradeFastpayRefundQueryResponse> QueryAlipayTradeRefund(OrderInQuiryInput input) { - AlipayTradeFastpayRefundQueryResponse response = await Factory.Payment.Common().QueryRefundAsync(input.OutTradeNo, input.OutTradeNo); + AlipayTradeFastpayRefundQueryResponse response = await QueryTradeRefund(input.OutTradeNo, input.OutTradeNo); return response; } public async Task<AlipayTradeRefundResponse> TradeRefund(AlipayTradeRefundRequest input) { - AlipayTradeRefundResponse response = await TradeRefund(input.OutTradeNo,input.OutRefundNo, input.RefundAmount); + AlipayTradeRefundResponse response = await TradeRefund(input.OutTradeNo, input.OutRefundNo, input.RefundAmount); return response; } @@ -196,5 +196,136 @@ throw new TeaUnretryableException(_lastRequest, innerException); } + private async Task<AlipayTradeFastpayRefundQueryResponse> QueryTradeRefund(string outTradeNo, string outRequestNo) + { + Dictionary<string, object> runtime_ = new Dictionary<string, object> + { + { + "ignoreSSL", + _kernel.GetConfig("ignoreSSL") + }, + { + "httpProxy", + _kernel.GetConfig("httpProxy") + }, + { "connectTimeout", 15000 }, + { "readTimeout", 15000 }, + { + "retry", + new Dictionary<string, int?> { { "maxAttempts", 0 } } + } + }; + TeaRequest _lastRequest = null; + Exception innerException = null; + long _now = DateTime.Now.Millisecond; + int _retryTimes = 0; + while (TeaCore.AllowRetry((IDictionary)runtime_["retry"], _retryTimes, _now)) + { + if (_retryTimes > 0) + { + int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes); + if (backoffTime > 0) + { + TeaCore.Sleep(backoffTime); + } + } + + _retryTimes++; + try + { + TeaRequest teaRequest = new TeaRequest(); + Dictionary<string, string> dictionary = new Dictionary<string, string> + { + { "method", "alipay.trade.fastpay.refund.query" }, + { + "app_id", + _kernel.GetConfig("appId") + }, + { + "timestamp", + _kernel.GetTimestamp() + }, + { "format", "json" }, + { "version", "1.0" }, + { + "alipay_sdk", + _kernel.GetSdkVersion() + }, + { "charset", "UTF-8" }, + { + "sign_type", + _kernel.GetConfig("signType") + }, + { + "app_cert_sn", + _kernel.GetMerchantCertSN() + }, + { + "alipay_root_cert_sn", + _kernel.GetAlipayRootCertSN() + } + }; + var queryOptions = new string[] { "gmt_refund_pay" }; + Dictionary<string, object> bizParams = new Dictionary<string, object> + { + { "out_trade_no", outTradeNo }, + { "out_request_no", outRequestNo }, + { "query_options", queryOptions } + }; + Dictionary<string, string> dictionary2 = new Dictionary<string, string>(); + teaRequest.Protocol = _kernel.GetConfig("protocol"); + teaRequest.Method = "POST"; + teaRequest.Pathname = "/gateway.do"; + teaRequest.Headers = new Dictionary<string, string> + { + { + "host", + _kernel.GetConfig("gatewayHost") + }, + { "content-type", "application/x-www-form-urlencoded;charset=utf-8" } + }; + teaRequest.Query = _kernel.SortMap(TeaConverter.merge<string>(new object[3] + { + new Dictionary<string, string> { + { + "sign", + _kernel.Sign(dictionary, bizParams, dictionary2, _kernel.GetConfig("merchantPrivateKey")) + } }, + dictionary, + dictionary2 + })); + teaRequest.Body = TeaCore.BytesReadable(_kernel.ToUrlEncodedRequestBody(bizParams)); + _lastRequest = teaRequest; + TeaResponse response = await TeaCore.DoActionAsync(teaRequest, runtime_); + Dictionary<string, object> respMap = await _kernel.ReadAsJsonAsync(response, "alipay.trade.fastpay.refund.query"); + if (_kernel.IsCertMode()) + { + if (_kernel.Verify(respMap, _kernel.ExtractAlipayPublicKey(_kernel.GetAlipayCertSN(respMap)))) + { + return TeaModel.ToObject<AlipayTradeFastpayRefundQueryResponse>(_kernel.ToRespModel(respMap)); + } + } + else if (_kernel.Verify(respMap, _kernel.GetConfig("alipayPublicKey"))) + { + return TeaModel.ToObject<AlipayTradeFastpayRefundQueryResponse>(_kernel.ToRespModel(respMap)); + } + + throw new TeaException(new Dictionary<string, string> { { "message", "楠岀澶辫触锛岃妫�鏌ユ敮浠樺疂鍏挜璁剧疆鏄惁姝g‘銆�" } }); + } + catch (Exception ex) + { + if (TeaCore.IsRetryable(ex)) + { + innerException = ex; + continue; + } + + throw ex; + } + } + + throw new TeaUnretryableException(_lastRequest, innerException); + } + } } \ No newline at end of file -- Gitblit v1.9.1