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);
            }

    }
}
相关推荐
2501_916007474 小时前
Bundle ID 注册与管理 App ID 创建指南 命名规则 权限开关与删除注意事项
android·ios·小程序·https·uni-app·iphone·webview
PedroQue999 小时前
uni-app路由插件化:解锁高效开发新姿势
前端·uni-app
凡科网小帆9 小时前
2026小程序商城做的比较好的品牌,怎么选小程序商城品牌
小程序·小程序商城
2501_9159090610 小时前
iOS 证书创建与管理 类型限制 p12 密码与云备份实操
android·ios·小程序·https·uni-app·iphone·webview
anyup10 小时前
【2026年8月】uView Pro 千星,还拿到了 GVP
前端·uni-app·github
andr_gale1 天前
02_uniapp自定义上凸效果的底部TabBar
前端·javascript·uni-app·移动端
拖孩1 天前
用 AI 重解千年观音灵签,做了一个微信小程序,每天摇一摇,命运给你回应
前端·后端·微信小程序
黄华SJ520it1 天前
顶俏洗衣液模式制度开发介绍:S2B2C社交分销+多门店核销系统全解析
前端·数据库·小程序·零售·系统开发
不爱说话郭德纲1 天前
uni-app x iOS 扫码模糊怎么办?AVFoundation 灰尘级别摄像头助你超广角聚焦
前端·uni-app·app
北极糊的狐1 天前
钉钉小程序报错data.formatTime is not a function是因为 axml 模板中不能直接调用 Page 内自定义方法!
java·小程序·钉钉