.netCore微信转账至零钱——V3

微信支付 V3 开发教程(一):初识 Senparc.Weixin.TenPayV3 我在 9 年前发布了我们也总在第一时间及时更新微信官方的各类接口,其中也包括微信支付。。即使您没有开发过之前版本的微信支付也没有关系,因为这是一个完全崭新的开始,下面让我们开始最新一代的微信支付开发之旅。 阅读详情

1.需要登录商户平台申请微信转账至零钱
2.申请成功之后在产品设置里设置上限金额以及白名单IP
3.需要在IIS上程序池对应的高级设置把加载用户配置文件改成“True”
4.上请求代码
5.微信API,https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter4_3_1.shtml

//提现转账

                IDictionary<string, object> moneyrequest = new Dictionary<string, object>();
                List<Dictionary<string, object>> transfer_detail_list = new List<Dictionary<string, object>>();
                Dictionary<string, object> dic = new Dictionary<string, object>();

                moneyrequest.Add("appid", "1111"); //商户账号的appid
                moneyrequest.Add("out_batch_no", "11" + DateTime.Now.ToString("yyyyMMddHHmmss"));
                moneyrequest.Add("batch_name", "11" + DateTime.Now.ToString("yyyyMMddHHmmss"));
                moneyrequest.Add("batch_remark", "11" + DateTime.Now.ToString("yyyyMMddHHmmss"));
                moneyrequest.Add("total_amount", entity.Money * 100); //转账金额,单位为分
                moneyrequest.Add("total_num", 1);
                dic.Add("out_detail_no", DateTime.Now.ToString("yyyyMMddHHmmss"));
                dic.Add("transfer_amount", entity.Money * 100);
                dic.Add("transfer_remark", "11:" + entity.Money  + "元");
                dic.Add("openid", userEntity.OpenID);//收款用户openid
                transfer_detail_list.Add(dic);
                moneyrequest.Add("transfer_detail_list", transfer_detail_list);

                var json = Newtonsoft.Json.JsonConvert.SerializeObject(moneyrequest);

                LogHelper.Info("json:" + json);

                var ret = WithDrawsToWx.WxV3PostJson(json);

请求微信API

public class WithDrawsToWx
    {
        private const string mch_appid = "111"; //商户账号的appid
        private const string merchantId = "111"; //商户号
        private const string key = "111"; //微信支付平台商家设置的私钥
        private static string url = "https://api.mch.weixin.qq.com/v3/transfer/batches"; //请求微信接口地址
        private static string privateKey = "私密密钥";//不要-----BEGIN PRIVATE KEY-----  -----END PRIVATE KEY-----
        private static string serialNo = "证书序列号";

        /// <summary>
        /// V3版本请求接口
        /// </summary>
        /// <param name="url">微信的接口地址</param>
        /// <param name="postData">post请求的数据,json格式 </param>
        /// <param name="privateKey">apiclient_key.pem中的内容,不要-----BEGIN PRIVATE KEY-----  -----END PRIVATE KEY-----</param>
        /// <param name="merchantId">发起请求的商户(包括直连商户、服务商或渠道商)的商户号 mchid</param>
        /// <param name="serialNo">商户证书号</param>
        /// <param name="method"></param>
        /// <returns></returns>
        public static string WxV3PostJson( string postData,string method="POST")
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = method;
            request.ContentType = "application/json;charset=UTF-8";
            request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3100.0 Safari/537.36";
            request.Accept = "application/json";

            string Authorization = GetAuthorization(url, method, postData, privateKey, merchantId, serialNo);

            string value = $"WECHATPAY2-SHA256-RSA2048 {Authorization}";

            request.Headers.Add("Authorization", value);

            if (!string.IsNullOrEmpty(postData))
            {
                byte[] paramJsonBytes;
                paramJsonBytes = System.Text.Encoding.UTF8.GetBytes(postData);
                request.ContentLength = paramJsonBytes.Length;
                Stream writer;
                try
                {
                    writer = request.GetRequestStream();
                }
                catch (Exception e)
                {
                    writer = null;
                    LogHelper.Info("请求接口失败:" + e.Message);
                }
                writer.Write(paramJsonBytes, 0, paramJsonBytes.Length);
                writer.Close();
            }

            HttpWebResponse response;
            try
            {
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
                response = ex.Response as HttpWebResponse;
            }
            Stream resStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(resStream);
            string text = reader.ReadToEnd();

            return text;
        }

        /// <summary>
        /// 获取authorzation 值
        /// </summary>
        /// <param name="url">微信的接口地址</param>
        /// <param name="method">请求的方式GET,POST,PUT</param>
        /// <param name="jsonParame">post请求的数据,json格式  ,get时传空</param>
        /// <param name="privateKey">apiclient_key.pem中的内容,不要-----BEGIN PRIVATE KEY-----  -----END PRIVATE KEY-----</param>
        /// <param name="merchantId">发起请求的商户(包括直连商户、服务商或渠道商)的商户号 mchid</param>
        /// <param name="serialNo">商户证书号</param>
        /// <returns></returns>
        private static string GetAuthorization(string url, string method, string jsonParame, string privateKey, string merchantId, string serialNo)
        {
            var uri = new Uri(url);
            string urlPath = uri.PathAndQuery;
            string nonce = Guid.NewGuid().ToString();
            var timestamp = DateTimeOffset.Now.ToUnixTimeSeconds();
            //数据签名     HTTP请求方法n接口地址的urln请求时间戳n请求随机串n请求报文主体n
            method = string.IsNullOrEmpty(method) ? "" : method;
            string message = $"{method}\n{urlPath}\n{timestamp}\n{nonce}\n{jsonParame}\n";
            string signTxt = Sign(message, privateKey);
            //Authorization和格式

            string authorzationTxt = $"mchid=\"{merchantId}\",nonce_str=\"{nonce}\",timestamp=\"{timestamp}\",serial_no=\"{serialNo}\",signature=\"{signTxt}\"";

            return authorzationTxt;
        }

        /// <summary>
        /// 获取签名
        /// </summary>
        private static string Sign(string message, string privateKey)
        {
            byte[] keyData = Convert.FromBase64String(privateKey);

            var rsa = RSA.Create();

            rsa.ImportPkcs8PrivateKey(keyData, out int bytesRead);

            byte[] data = Encoding.UTF8.GetBytes(message);

            return Convert.ToBase64String(rsa.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1));
        }

        public class WithDrawsV3Back
        {
            /// <summary>
            /// 微信批次单号
            /// </summary>
            public string batch_id { get; set; }
            /// <summary>
            /// 商家批次单号
            /// </summary>
            public string out_batch_no { get; set; }
            public string create_time { get; set; }
            public string code { get; set; }
            public string message { get; set; }
        }

      
    }

在这里插入图片描述

微信支付V3.net版.cs ● 公众平台(mp.weixin.qq.com):注册、配置服务号、订阅号、小程序的入口,注册成功后系统就会下发一个与之一一对应的APPID(其中订阅号的APPID不支持申请和使用微信支付)。 ● 商户平台( pay.weixin.qq.com):微信支付业务管理中心,商户可以在商户平台进行所有支付业务相关操作,例如退款、下载对账单、查询订单、提现、账号绑定、API证书下载、API密钥设置、查看证书序列号等操作。 ● 开放平台(open.weixin.qq.com):注册、配置APP移动应用、网站应用的入口,注册成功后系统就会下发一个与之一一对应的APPID。 ● APPID:在公众平台或开放平台申请注册之后由平台下发,在支付接口中通常作为配置参数,必须上传。 ● MCH_ID:在公众平台、开放平台申请微信支付成功后由微信支付下发,或者直接在商户平台注册也可获得MCH_ID,在支付接口中通常作为配置参数,必须上传。 注意: 支付接口要求APPID与MCH_ID必须有绑定关系,在商户平台注册获得的MCH_ID需要在【商户平台—>产品中心—>APPID授权管理】菜单下与APPID进行绑定后方可使用。 立即下载

相关推荐

c#微信支付、微信企业支付到个人,微信企业付款到零钱, 代码DEMO

微信支付、企业支付、微信企业支付到个人,微信企业付款到零钱, 代码DEMO 供大家参考 微信支付apiJSAPI支付 刷卡支付 扫码支付 订单退款 订单查询 退款查询 下载账单

微信支付V3版Native支付C#版

微信支付V3版系列课程详细讲解微信支付的JSAPI支付、H5支付、Native支付、申请退款、支付结果通知、退款结果通知、申请交易账单、申请资金账单、下载账单、关闭订单。提供java版、c#版、python3版、php版课程。按照课程体系,课程分为大全家桶、小全家桶、套餐1、套餐2、套餐3,以便于学员选择。购课请提前联系九宝老师

netCore 接入微信支付,V3服务商模式支付,分账,退款,支付回写等

1/netCore 接入微信支付,内含普通支付,微信V3支付,服务商模式 2、【普通支付,支付回写,退款,分账给个人,服务商模式支付,服务商模式支付回写,服务商模式分账给子商户,V3支付退款】 3、源码分享

C# .Net Core开发微信转账到零钱遇到的坑

首先,我要吐槽一下微信这些人办事的态度,真是不负责任,之前的【商家付款到零钱】用的好好的,强制换成这个东西,换了就换了吧,你把文档弄完善好吗,文档写的含糊不清,有些地方的链接点进去居然还是V2的东西,甚至404,我只能说呵呵了。

qq_40414697的博客 846

BlenderGis安装碰到问题,ImageIO、无法点击和地图不加载

BlenderGis安装碰到问题,ImageIO、无法点击和地图不加载问题

qq_45176349的博客 4964

Zemax热分析实战:5分钟搞定双胶合透镜温度漂移优化(附操作数详解)

本文详细解析了使用Zemax进行光学系统热分析的全流程,以双胶合透镜为例,重点阐述了如何通过多重结构编辑器模拟温度变化,并利用关键操作数优化系统以抵抗温度漂移。文章提供了从基础设置到高级优化的实战技巧,帮助工程师快速掌握无热化设计方法,确保系统在宽温范围内保持稳定成像性能。

n4o5p6q7r的博客 397

c# 微信支付V3商家转账到零钱避坑宝典(一)

微信支付V3商家转账到零钱

Desire染指年华 3055

LVI-SAM适配KITTI数据集避坑指南:IMU频率与数据同步问题解析

本文深入解析了将LVI-SAM框架适配KITTI数据集时,在IMU频率与多传感器数据同步方面遇到的核心挑战与解决方案。针对KITTI数据集中sync与extract两种数据包的差异,文章提供了从数据选择、参数调优到时间戳诊断与修复的完整避坑指南,帮助开发者实现稳定高效的SLAM系统部署。

7z8x2c4v6b9的博客 247

微信支付APIv3

微信支付

xzy的博客 8304

【STM32】433MHz OOK信号软解码实战:从EV1527协议到嵌入式实现

本文详细介绍了基于STM32微控制器实现433MHz OOK信号软解码的完整实战过程。文章从EV1527协议解析入手,重点阐述了利用STM32的GPIO和定时器进行信号采样、脉宽还原、同步头识别以及数据位判决的核心算法,并提供了对抗无线干扰的容错优化策略,帮助开发者深入理解并掌握低成本无线通信的嵌入式实现方案。

weixin_29299807的博客 784

【立创EDA-PCB设计基础】6.布线铺铜实战及细节详解

本文进行布线铺铜实战及详解布线铺铜的细节

嵌入式阿齐Archie 4万+

C# .Net Core 微信H5支付API V3【统一下单,回调】

的开发体验,我们推出了全新的微信支付API v3。

书写人生 6122

《嵌入式-STM32开发指南》第三部分 外设篇 - 第2章 温度传感器DS18B20

2.1 理论分析 2.1.1概述 DS18B20 是 DALLAS 最新单线数字温度传感器,新的"一线器件"体积更小、适用电压更宽、更经济。Dallas 半导体公司的数字化温度传感器 DS1820 是世界上第一片支持 "一线总线"接口的温度传感器。 DS18B20采用的单总线协议,也就是只需占用主机一个I/O口,无需其他外围电路,直接将环境温度转换为数字信号,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。另外,以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量

不问归期的博客 8305

【小5聊】.net core2.1对接微信支付开发时自己挖的坑

对接微信支付开发,其实官方文档已经写的足够详细,大多数小伙伴遇到的情况上面也有注明注意的地方,但是为什么,我们在实际对接时,往往还是会遇到很多情况? 个人觉得,还是和经验积累、认知程度和理解有关,还有部分原因是文档没仔细看 对接的是微信JSAPI支付 提前说下我在对接微信支付开发时,自己挖的坑 返回前端时,签名应该是四个字段进行组合生成签名,由于自己粗心,直接将预支付返回来的sign签名值当前了前端的签名值,所以,一直提示支付签名验证失败 前端JSAPI需要的参数 "appId":..

小5聊的博客 1050

企业级 Token 中转架构设计:高并发、多模型、费用监控一次搞定

摘要:本文针对企业级AI开发中的多模型接口混乱、高并发稳定性差及Token费用失控等痛点,提出一套2026年企业级Token中转架构解决方案。该方案采用五层分层设计(接入层、网关层、调度层、服务层、存储层),实现多模型统一接口、智能路由、高并发限流容错及精细化成本监控。核心功能包括:异构模型标准化接入、动态路由策略(场景/成本/负载/容灾)、多级限流熔断机制、全链路Token计费与安全防封体系(指纹清洗、IP池隔离)。通过分层解耦与模块化设计,企业可降低50%成本、提升99%稳定性,并避免封号风险。文章还提

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 146

【史上最全面esp32教程】网络篇和tcp/ip的使用

ESP32史上最全面wifi和tcp/ip连接及示例程序

m0_62599305的博客 9521

微信支付V3版商家转账到零钱

微信支付V3商家转账到零钱

lixiaoyu123456的博客 4735

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

微信支付、企业转账到零钱、商家转账到零钱、退款

微信支付、企业转账到零钱、商家转账到零钱、退款

鲸落的博客 3366

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

微信支付Native下单API V3接口开发详解

微信支付、Native下单API

lilian129的专栏 2271

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

.NET WebAPI+微信支付

全面解析.NET WebAPI如何使用微信支付以及配置

weixin_62232239的博客 6543

c# 微信商家转账到零钱,最详细代码

注意,查询的时候,https://api.mch.weixin.qq.com/v3/transfer/batches/out-batch-no/"+partner_trade_no+ "?need_query_detail=True&detail_status=ALL这个True,需要大写,我第一次的时候只有need_query_detail这一个参数,总是提示参数不正确,后来加上detail_status之后,好像就行了,大家注意一下!

Little_Code的博客 3044

.net企业付款到零钱_PHP的微信零钱功能

小编唠叨一下:又有友友在寻找微信企业付款到个人的功能了,其实这类文章,PHP自学中心有与大家分享过,还是建议有需要的你在PHP自学中心或者微信搜一搜搜索这类文章,你只要输入关键词就好了。今天小编在这里再次与大家分享微信企业付款到个人的文章,整个流程很清晰,就差你自己懂得编码了,调试接口了微信支付企业付款到零钱功能应用广泛,比如微信红包奖励,业务结算等。通过企业向个人付款,付款资金将直接进入用户微信...

weixin_39630048的博客 244

.net 调用v3微信支付

【代码】.net 调用v3微信支付。

a1779887712的博客 1038

.net core 微信支付API V3支付成功回调通知使用

由于最近在接了个项目做微信支付,特将自认为比较麻烦支付回调 .net 版本记录下来,以备不时之需。

qq_45751136的博客 2170

接入微信提现Api(企业付款到零钱--向微信用户个人付款)

文章目录业务场景接口介绍接入流程第一步第二步 业务场景   微信提现使用场景一般为用户客户端发起提现申请,服务端收到请求后调用微信Api发起微信提现。然后通过查询提现结果接口确认一下即可。 接口介绍   https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers 特别注意:该接口对微信商户有如下要求: 商户号已入驻90日且截止今日回推30天商户号保持连续不间断的交易。 接入流程 第一步   登录微信商户平台,配置一下(配置微信商

嘻嘻的博客 2万+

VS Visual Studio C#项目引用显示黄色感叹号

VS Visual Studio 项目引用显示黄色感叹号 1.解决方案 1.1打开web项目的.csproj 文件,找到下面代码 进行删除 即可。 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> <ErrorText>This project references NuGet package(s) that are missin

Stupid_Insect的博客 6494
上一篇: 关于C# 导出excel下载到服务端返回下载链接
Stupid_Insect
博客等级 码龄7年 5粉丝 48原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值