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;
namespace WingPaymentService.Common
{
///
/// 支付宝支付
///
public class AlipayCommon
{
private string _gatewayHost => ConfigurationManager.GetParammeter("Alipay", "GatewayHost").Value;
private string _signType => ConfigurationManager.GetParammeter("Alipay", "SignType").Value;
private string _appId => ConfigurationManager.GetParammeter("Alipay", "AppId").Value;
private string _merchantPrivateKey => ConfigurationManager.GetParammeter("Alipay", "MerchantPrivateKey").Value;
private string _alipayPublicKey => ConfigurationManager.GetParammeter("Alipay", "AlipayPublicKey").Value;
private string _merchantCertPath => ConfigurationManager.GetParammeter("Alipay", "MerchantCertPath").Value;
private string _certPath => ConfigurationManager.GetParammeter("Alipay", "AlipayCertPath").Value;
private string _rootCertPath => ConfigurationManager.GetParammeter("Alipay", "AlipayRootCertPath").Value;
private string _notifyUrl => ConfigurationManager.GetParammeter("Alipay", "NotifyUrl").Value;
///
/// 支付宝网站支付
///
///
///
///
///
public (string, string) AlipayPagePay(string subject, double totalAmount, string recordCode)
{
try
{
var serverUrl = $"{_gatewayHost}/gateway.do";
// 组装业务参数model
AlipayTradePagePayModel model = new AlipayTradePagePayModel
{
Subject = subject,
TotalAmount = totalAmount.ToString("0.00"),
OutTradeNo = recordCode,
ProductCode = "QUICK_WAP_WAY"
};
// 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);
// 3. 发起请求并处理响应
Aop.Api.Response.AlipayTradePagePayResponse response = client.SdkExecute(request);
if (!response.IsError)
{
var url = $"{serverUrl}?{response.Body}";
Logger.WriteLineInfo($"AlipayPagePay success pay url:{url}");
return (url, 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)
{
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);
// 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);
}
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}");
}
}
}
}