Uniapp微信小程序开发:微信小程序支付功能后台代码

需要的组件:

SKIT.FlurlHttpClient.Wechat.TenpayV3

代码示例

csharp 复制代码
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);
            }

    }
}
相关推荐
00后程序员张18 小时前
HTTPS单向认证、双向认证、抓包原理与反抓包策略详解
网络协议·http·ios·小程序·https·uni-app·iphone
h_654321019 小时前
uniapp-APP端获取拍照时的方向角,同一位置横竖屏拍方向角一致
uni-app
梦梦代码精20 小时前
LikeShop按摩到家系统:2026年本地生活创业新风口,上门服务O2O源码私有化部署实战
大数据·docker·小程序·uni-app·生活·高并发·开源软件
leduo668899o21 小时前
商城小程序自由容器支持图片自适应详解:从入门到实战全攻略
小程序
这是个栗子1 天前
【uni-app微信小程序问题解决】Uni-app 微信小程序组件不渲染
微信小程序·小程序·uni-app
倒流时光三十年1 天前
第四章 WXSS 样式系统与布局
spring boot·微信小程序
万岳科技系统开发1 天前
外卖跑腿配送开发搭建指南:从用户下单到配送完成全流程解析
大数据·前端·小程序
靠谱品牌推荐官1 天前
【高性能工程】每秒万次物联网数据高频握手:如何设计一套抗丢包的工业级小程序后端微服务架构?
物联网·小程序·架构
靠谱品牌推荐官1 天前
【高并发实战】如何基于缓存穿透治理机制设计一套高可用的小程序本地缓存中台架构?
缓存·小程序·架构
梦梦代码精1 天前
LikeShop开源多端商城系统:半年使用记录
git·uni-app·github