using System.Text; using System.Net.Cache; using System.Security.Cryptography.X509Certificates; using System; using Aop.Api; using WingServerCommon.Config; using WingServerCommon.Config.Parameters; using Aop.Api.Request; using Newtonsoft.Json; using Aop.Api.Domain; using System.Collections.Generic; using WingServerCommon.Log; using WingServerCommon.Utilities; using Aop.Api.Response; using System.Net; using System.Web; namespace WingPaymentService.Common { /// /// 支付宝支付 /// public class AlipayCommon { private string _gatewayHost => EnvironmentConfigManager.GetParammeter("Alipay", "GatewayHost").Value; private string _signType => EnvironmentConfigManager.GetParammeter("Alipay", "SignType").Value; private string _appId => EnvironmentConfigManager.GetParammeter("Alipay", "AppId").Value; private string _merchantPrivateKey => EnvironmentConfigManager.GetParammeter("Alipay", "MerchantPrivateKey").Value; private string _alipayPublicKey => EnvironmentConfigManager.GetParammeter("Alipay", "AlipayPublicKey").Value; private string _merchantCertPath => EnvironmentConfigManager.GetParammeter("Alipay", "MerchantCertPath").Value; private string _certPath => EnvironmentConfigManager.GetParammeter("Alipay", "AlipayCertPath").Value; private string _rootCertPath => EnvironmentConfigManager.GetParammeter("Alipay", "AlipayRootCertPath").Value; private string _notifyUrl => EnvironmentConfigManager.GetParammeter("Alipay", "NotifyUrl").Value; /// /// 支付宝网站支付 /// /// /// /// /// public (string, string) AlipayPagePay(string subject, double totalAmount, string recordCode, string payReturnUrl) { try { var serverUrl = $"{_gatewayHost}/gateway.do"; // 组装业务参数model AlipayTradePagePayModel model = new AlipayTradePagePayModel { Subject = subject, TotalAmount = totalAmount.ToString("0.00"), OutTradeNo = recordCode, ProductCode = "FAST_INSTANT_TRADE_PAY" }; // 1. 创建IAopClient实例 IAopClient client = new DefaultAopClient ( serverUrl, _appId, //请更换为您的AppId _merchantPrivateKey, //请更换为您的PKCS1格式的应用私钥 "json", "1.0", _signType, _alipayPublicKey, "utf-8" //请更换为您使用的字符集编码,推荐采用utf-8 ); Aop.Api.Request.AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); // 设置异步通知接收地址 request.SetNotifyUrl(_notifyUrl); request.SetProdCode("FAST_INSTANT_TRADE_PAY"); request.SetBizModel(model); request.SetReturnUrl(payReturnUrl); // 3. 发起请求并处理响应 Aop.Api.Response.AlipayTradePagePayResponse response = client.SdkExecute(request); if (!response.IsError) { var url = $"{serverUrl}?{response.Body}"; Logger.WriteLineInfo($"AlipayWapPay success pay url:{url}"); return (url, response.Body); // AlipayMarketingEncodeShortlinkCreateRequest createShortRequest = new AlipayMarketingEncodeShortlinkCreateRequest(); // createShortRequest.BizContent = "{" + // "\"biz_identifier\":\"other\"," + // "\"encode_url\":\"" + WebUtility.UrlEncode(url) + "\"," + // "\"timeout\":\"10\"" + // "}"; // AlipayMarketingEncodeShortlinkCreateResponse shortUrlResponse = client.SdkExecute(createShortRequest); // Logger.WriteLineInfo(shortUrlResponse.Body); // return (shortUrlResponse.Content, response.Body); } else { Logger.WriteLineError($"AlipayPagePay error:{response.Msg},{response.SubMsg}"); return (string.Empty, response.Body); } } catch (Exception ex) { Logger.WriteLineError($"AlipayPagePay error:{ex}"); return (string.Empty, $"AlipayPagePay error:{ex}"); } } /// /// 支付宝手机网站支付 /// /// /// /// /// public (string, string) AlipayWapPay(string subject, double totalAmount, string recordCode, string payReturnUrl) { try { var serverUrl = $"{_gatewayHost}/gateway.do"; // 组装业务参数model AlipayTradeWapPayModel model = new AlipayTradeWapPayModel { Subject = subject, TotalAmount = totalAmount.ToString("0.00"), OutTradeNo = recordCode, ProductCode = "QUICK_WAP_WAY" }; // 1. 创建IAopClient实例 IAopClient client = new DefaultAopClient ( _gatewayHost, _appId, //请更换为您的AppId _merchantPrivateKey, //请更换为您的PKCS1格式的应用私钥 "json", "1.0", _signType, _alipayPublicKey, "utf-8" //请更换为您使用的字符集编码,推荐采用utf-8 ); Aop.Api.Request.AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); // 设置异步通知接收地址 request.SetNotifyUrl(_notifyUrl); request.SetProdCode("QUICK_WAP_WAY"); request.SetBizModel(model); request.SetReturnUrl(payReturnUrl); // 3. 发起请求并处理响应 Aop.Api.Response.AlipayTradeWapPayResponse response = client.SdkExecute(request); if (!response.IsError) { var url = $"{serverUrl}?{response.Body}"; Logger.WriteLineInfo($"AlipayWapPay success pay url:{url}"); return (url, response.Body); // AlipayMarketingEncodeShortlinkCreateModel createShortModel = new AlipayMarketingEncodeShortlinkCreateModel(); // createShortModel.BizIdentifier = "other"; // createShortModel.EncodeUrl = WebUtility.UrlEncode("http://www.baidu.com"); // createShortModel.Timeout = "10"; // AlipayMarketingEncodeShortlinkCreateRequest createShortRequest = new AlipayMarketingEncodeShortlinkCreateRequest(); // request.SetProdCode("QUICK_WAP_WAY"); // createShortRequest.SetBizModel(createShortModel); // AlipayMarketingEncodeShortlinkCreateResponse shortUrlResponse = client.SdkExecute(createShortRequest); // Logger.WriteLineInfo(shortUrlResponse.Body); // return (shortUrlResponse.Content, response.Body); } else { Logger.WriteLineError($"AlipayWapPay error:{response.Msg},{response.SubMsg}"); return (string.Empty, response.Body); } } catch (Exception ex) { Logger.WriteLineError($"AlipayWapPay error:{ex}"); return (string.Empty, $"AlipayWapPay error:{ex}"); } } } }