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}");
}
}
}
}