Uniapp微信小程序开发:微信小程序支付功能后台代码
需要的组件:
SKIT.FlurlHttpClient.Wechat.TenpayV3
代码示例
using SKIT.FlurlHttpClient.Wechat.TenpayV3;
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings;namespace MyWxPay.Controllers
{[Route("api/[controller]")][ApiController]public class TenPayApiV3Controller : ControllerBase{[HttpGet("CreateOrder")]public async Task<IActionResult> CreateOrder(){var options = new WechatTenpayClientOptions(){MerchantId = "微信商户号",MerchantV3Secret = "微信商户 v3 API 密钥",MerchantCertificateSerialNumber = "微信商户证书序列号",MerchantCertificatePrivateKey = System.IO.File.ReadAllText("/微信商户证书私钥文件路径/apiclient_key.pem"),PlatformAuthScheme = PlatformAuthScheme.PublicKey,PlatformPublicKeyManager = new InMemoryPublicKeyManager()};var client = WechatTenpayClientBuilder.Create(options).Build();var openId = "下单的人的微信OpenId";var request = new CreatePayTransactionJsapiRequest(){OutTradeNumber = "设置订单号,一般是传入自己内部系统的订单号",AppId = "微信小程序的Appid",Description = "测试商品",NotifyUrl = "写的支付成功的回调地址,必须是https",Amount = new CreatePayTransactionJsapiRequest.Types.Amount() { Total = 设置金额 注意单位是分 },Payer = new CreatePayTransactionJsapiRequest.Types.Payer() { OpenId = openId }};var response = await client.ExecuteCreatePayTransactionJsapiAsync(request);if (response.IsSuccessful()){Console.WriteLine("PrepayId:" + response.PrepayId);List<IDictionary<string, string>> keyValuePairs = new List<IDictionary<string, string>>();//传入小程序的appid及微信返回的预支付ID获取想要返回给前端的数据var paramMap = client.GenerateParametersForJsapiPayRequest(request.AppId, response.PrepayId);keyValuePairs.Add(paramMap);IDictionary<string, string> orderdic = new Dictionary<string, string> { { "orderid", "request.OutTradeNumber" } };keyValuePairs.Add(orderdic);return Ok(keyValuePairs);}else{return BadRequest(response.ErrorMessage);}}
}