支付宝官方文档:
https://opendocs.alipay.com/open/1f1fe18c_alipay.trade.pay?scene=32&pathHash=29c9a9ba
NuGet 包下载:
AliPaySDKNet.Standard
/// <summary>
/// 支付宝
/// </summary>
/// <returns></returns>
public IAopClient CreateAliPayClient()
{
IAopClient alipayClient = new DefaultAopClient(GetAlipayConfig());
return alipayClient;
}
private AlipayConfig GetAlipayConfig()
{
string privateKey = _AliPayPrivateKey; // 支付宝私钥
string alipayPublicKey = _AliPayPublicKey; // 支付宝公钥
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.ServerUrl = "https://openapi.alipay.com/gateway.do";
alipayConfig.AppId = _AliPayAppId; // 支付宝AppId
alipayConfig.PrivateKey = privateKey;
alipayConfig.Format = "json";
alipayConfig.AlipayPublicKey = alipayPublicKey;
alipayConfig.Charset = "UTF-8";
alipayConfig.SignType = "RSA2";
return alipayConfig;
}
/// <summary>
/// 统一收单线下交易预创建
/// </summary>
[DisplayName("统一收单线下交易预创建")]
public async Task<dynamic> CreatePayTransactionPrecreate([FromBody] AliPayInput input)
{
var client = _aliPayApiHttpClient1.CreateAliPayClient();
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
AlipayTradePrecreateModel model = new AlipayTradePrecreateModel()
{
Body = input.Body,
Subject = input.Subject,
OutTradeNo = input.OutTradeNo,
TotalAmount = input.TotalAmount,
TimeoutExpress = "5m", //分钟
};
request.SetBizModel(model);
AlipayTradePrecreateResponse response = client.Execute(request);
SysAliPay aliPay = new SysAliPay()
{
Body = response.Body,
QrCode = response.QrCode,
OutTradeNo = response.OutTradeNo,
IsError = response.IsError,
Code = response.Code,
Msg = response.Msg,
Description = input.Body,
TotalAmount = input.TotalAmount,
};
if (!response.IsError)
{
await _repSysAliPay.InsertAsync(aliPay);
}
else
{
}
return new
{
response.QrCode,
response.OutTradeNo,
aliPay.Id
};
}