ASP.NET Core Web 支付功能接入 微信-扫码支付篇
时间: 2023-06-24 15:05:29 浏览: 186
ASP.NET Core Web 可以通过微信支付提供的 API 进行扫码支付的接入。下面是实现步骤:
1. 申请微信支付账号和开通扫码支付功能。在申请过程中,需要提供商户信息和开户银行信息等。
2. 在 ASP.NET Core Web 中引入微信支付 SDK,可以通过 NuGet 包管理器安装。
```
Install-Package Senparc.Weixin.MP.Pay
```
3. 在 ASP.NET Core Web 项目中添加配置文件 appsettings.json,用于存储微信支付相关的配置参数,如下所示:
```
{
"WeixinPay": {
"MchId": "微信支付分配的商户号",
"AppId": "应用ID",
"Key": "商户支付密钥"
}
}
```
4. 在 ASP.NET Core Web 项目中创建一个控制器,用于处理扫码支付的请求。控制器代码如下所示:
```
[Route("api/[controller]")]
[ApiController]
public class WeixinPayController : ControllerBase
{
private readonly IOptions<WeixinPayOptions> _options;
public WeixinPayController(IOptions<WeixinPayOptions> options)
{
_options = options;
}
[HttpPost("unifiedorder")]
public async Task<IActionResult> UnifiedOrder([FromBody]UnifiedorderRequest request)
{
// 设置请求参数
var data = new TenPayV3UnifiedorderRequestData(
body: request.Body,
outTradeNo: request.OutTradeNo,
totalFee: request.TotalFee,
spbillCreateIp: request.SpbillCreateIp,
notifyUrl: request.NotifyUrl,
tradeType: "NATIVE",
productId: request.ProductId
);
// 调用统一下单 API 进行支付
var result = await TenPayV3.UnifiedorderAsync(_options.Value.AppId, _options.Value.MchId, _options.Value.Key, data);
// 处理返回结果
if (result.ReturnCode == "SUCCESS" && result.ResultCode == "SUCCESS")
{
// 生成二维码图片
var url = result.CodeUrl;
var qrCode = new QRCodeGenerator().CreateQrCode(url, QRCodeGenerator.ECCLevel.Q);
// 返回二维码图片
return File(qrCode.GetGraphic(20), "image/png");
}
// 返回错误信息
return BadRequest(result.ReturnMsg);
}
}
```
5. 创建一个模型类,用于保存扫码支付的请求参数。
```
public class UnifiedorderRequest
{
public string Body { get; set; }
public string OutTradeNo { get; set; }
public int TotalFee { get; set; }
public string SpbillCreateIp { get; set; }
public string NotifyUrl { get; set; }
public string ProductId { get; set; }
}
```
6. 在 Startup.cs 文件中添加微信支付相关的配置,代码如下所示:
```
services.Configure<WeixinPayOptions>(Configuration.GetSection(nameof(WeixinPayOptions)));
```
7. 启动 ASP.NET Core Web 项目,使用 Postman 或其他工具向接口发送扫码支付的请求,请求参数包括:商品描述、商户订单号、总金额、终端 IP、通知地址、商品 ID 等。
```
POST /api/weixinpay/unifiedorder HTTP/1.1
Host: localhost:5000
Content-Type: application/json
{
"body": "测试商品",
"outTradeNo": "123456",
"totalFee": 1,
"spbillCreateIp": "127.0.0.1",
"notifyUrl": "http://localhost:5000/api/weixinpay/notify",
"productId": "123456"
}
```
8. 如果请求成功,将返回一个二维码图片,可以使用扫码工具扫描该二维码进行支付。如果请求失败,将返回错误信息。
以上就是 ASP.NET Core Web 支付功能接入微信扫码支付的实现步骤。
阅读全文