轻量级.net standard微信支付登录Nuget开源库
我个人编写的库,在我个人网站,小程序等很多地方都在使用中,大家可以搜索小程序 什邡市宅猫君网络工作室 或者到我的网站 store.zhaimaojun.cn 去体验支付和登录效果。
本库主要实现了native pay(二维码支付)jsapi pay(小程序直接调起支付),需要注意的是这是基于api3的,非api2。
以下演示如何使用:
第一步 搜索安装ZmjWxApi
打开nuget,直接搜索和安装ZmjWxApi,如下图:

第二步 引入namespace和创建支付对象
1 /**引入命名空间*/
2 using ZmjWxApi;
3
4 /**创建支付对象*/
5 var npay = new WxPayApi("商户的id", "商户API证书序列号", "商户API证书本地路径", "微信app的id", "支付结果通知的url");
第三步 微信登录
1 /**创建用于登录的对象*/
2 var wx = new ZmjWxApi.WxUserApi("小程序的id", "小程序的密钥");
3 /**网站页面跳转到扫码页面或者页面嵌入二维码*/
4 var rurl = WxUserApi.GetLoginRedirectUrl("网站应用的id","扫码完成后跳转的链接","code","snsapi_login","自定义的附加信息");//获取到这个链接后就直接regedit到这个链接就可以了
5 /**或者小程序中调用wx.login来获取用户的code*/
6 wx.login({
7 success(r){
8 wx.request({
9 url:'你的登录api' + r.code,
10 method: 'GET',
11 header: {
12 'content-type': 'application/json', // 默认值
13 },
14 success(lres: any) {
15 }
16 }
17 })
18 }
19 })
20 /**拿到用户的code后*/
21 var user = await wx.GetWxUserInfo(code!);//通过用户的code获取具体信息
22 var opid = user!.OpenId!;//用户在小程序或者网站中的openid
23 var nickname = user!.NickName!;//用户昵称
24 var icon = user!.Icon!;//用户的头像
第四步 调起支付
1 /**调起二维码支付*/
2 var url = npay!.NativePlaceOnOrder("商户自己的订单编号", "商品名称和描述", "附加信息", money);//money为订单总价格,按照分来算,比如:1元=100分,所以money=100标识一元
3 /**将url变成二维码,扫码就可以支付了*/
4 <img src="https://www.zhaimaojun.cn/QrCode/?color=black&code={上面调用方法得到的url}" />
5
6 /**下面是小程序小游戏等中使用jsapi调起支付*/
7 var turl = npay.JsApiPlaceOnOrder("支付者的openid", "商户自己的订单编号", "商品名称和描述", "附加信息", money);//money为订单总价格,按照分来算
8 var res = WxPayApi.GetApiPaySign("商户自己的订单编号", "小程序的appid", turl, "商户证书的本地地址", "商户id");//这里返回的res是一个object,发送给小程序后,小程序上调起支付如:
9 wx.requestPayment({timeStamp:r.data.timestamp,nonceStr:r.data.nonce,package:'prepay_id=' + r.data.prepayid,signType:'RSA',paySign:r.data.sign,success(e){})
10 /**小程序中调起支付需要注意:需要小程序用户先登录并且获取到openid,其次小程序要绑定到微信商户上,否则调起jsapi会失败*/
第五步 处理支付结果通知
1 /**以下代码在应该在webapi中*/
2 using var ms = new System.IO.MemoryStream();
3 await Request.BodyReader.CopyToAsync(ms);
4 ms.Seek(0, SeekOrigin.Begin);
5 var req = Encoding.UTF8.GetString(ms.ToArray());
6 var msg = WxPayApi.GetTransActionMessageFromContent(req, "wx支付api3的私钥", out _);
7 //完善交易信息(可根据自己的需要)
8 oder.PayerOpenId = msg.Payer!.Openid!;//支付者的openid
9 oder.Attach = msg.Attach ?? "";//附加数据,也就是下单时写入的附加内容
10 oder.TradeType = msg.TradeType!;//支付类型,jsapi,二维码支付等
11 oder.TradeState = msg.TradeState!;//支付结果,一般都是success表示支付成功
轻量级.net standard微信支付登录Nuget开源库的更多相关文章
- 一行代码实现Vue微信支付,无需引用wexin-sdk库,前后端分离HTML微信支付,无需引用任何库
前后端分离项目实现微信支付的流程: 1:用户点击支付 2:请求服务端获取支付参数 3:客户端通过JS调起微信支付(微信打开的网页) * 本文主要解决的是第3步,视为前两步已经完成,能正确拿到支付参数, ...
- 使用开源库MAGICODES.WECHAT.SDK进行微信公众号支付开发
概要 博客使用Word发博,发布后,排版会出现很多问题,敬请谅解.可加群获取原始文档. 本篇主要讲解微信支付的开发流程,相关业务基于MAGICODES.WECHAT.SDK实现.通过本篇教程,您可以很 ...
- 对接微信红包时:CA证书出错,请登录微信支付商户平台下载证书
今天在对接微信支付的微信红包发放时,出现““CA证书出错,请登录微信支付商户平台下载证书”的错误,特此记录一下: 如果你也在对接微信红包,并且你也在这个页面上下载了demo,再就是你也参照了里面的文档 ...
- react-native 的微信SDK辅助包,支持微信登录、微信分享、微信支付
微信SDK集成示例,现已完成微信授权登录,之后将陆续包装分享等其他功能. ReactNative高级交流群 127482131 或访问 http://blog.1ygowu.com ReactNat ...
- React Native绑定微信分享/登录/支付(演示+实现步骤+注意事项)
React Native(以下简称RN)绑定微信分享/微信登录/微信支付的实现演示+源码+注意事项!微信的调用大同小异,本文实现了微信的分享功能,其他功能可以在链接文档里面找到具体的方法. 本文分文三 ...
- 开源微信支付SDK
应该有一年多没在博客园上写文章了,毕竟是一个记录自己技术成长的平台,没能将写博客长期坚持下来,说起来也是挺惭愧的.对于自己的近况而言,确实平常加班也比较多,时间会比较压缩,所以到后来博客也基本停止了更 ...
- Android调试大法 自定义IDE默认签名文件==>微信支付、微信登录、微信分享,debug时调试通过,release时调不起微信
转载地址:http://blog.yanzhenjie.com Android调试大法之自定义IDE默认签名文件,你是否为调试第三方SDK时debug签名和release签名发生冲突而烦恼?你是否在d ...
- Unity接入微信登录 微信分享 微信支付 支付宝SDK
你将会学到的unity集成SDK游戏中接入微信支付与支付宝支付游戏中接入微信登录与微信分享 目录 mp4格式,大小2.2GB 扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop13 ...
- 基于.Net Standard开发的微信服务端开源库
一直想做一个开源库, 为社区贡献一份力量, 同时提高一下自己 一年来在给公司做一款微信小程序, 于是突发奇想用.Net Standard做一整套微信开发服务端类库 地址: https://gitee. ...
- angularjs 微信授权登录 微信支付
最近做一个项目,用angular 一个单页应用,打算打包成 跨平台移动App 以及在微信里面使用.给大家一个案例 首先,熟悉一下微信授权部分的源代码,如下所示: javascript 前端代码: va ...
随机推荐
- PS-AXI-PL流水灯设计(2)
PS-AXI-PL流水灯设计(2) 1.实验原理 承接上一次的实验,这里对AXI的总线结构做出分析,将AXI的理论具体对应到设计上去.为后面自己设计AXI的发送和接受器做好准备. 2.实验操作 (1) ...
- jQuery获得或设置内容和属性、添加属性 append和after的区别
来自w3school 在线教程 jQuery获得或设置内容和属性 text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设 ...
- vector优化
C++的stdvector使用优化 #include<iostream> #include<vector> using namespace std; class Vectex ...
- #二分,负环#JZOJ 3852 单词接龙
题目 只要一个单词的最后两个字母和另一个单词的前两个字母相同,那么这两个单词就可以有序的连接起来.给出\(n\)个单词组成单词环,求所有环的环中单词平均长度最大值. 分析 二分答案,判断是否存在正环( ...
- #状压dp#C 计划带师
分析 状压dp显然,主要是字典序的问题, 考虑初态终态转换就可以保证字典序最小了 代码 #include <cstdio> #include <cctype> #include ...
- 玩转OpenHarmony智能家居:如何实现树莓派“碰一碰”设备控制
一.简介 "碰一碰"设备控制,依托NFC短距通信协议,通过碰一碰的交互方式,将OpenAtom OpenHarmony(简称"OpenHarmony")标准系统 ...
- 深入解析 Java 面向对象编程与类属性应用
Java 面向对象编程 面向对象编程 (OOP) 是一种编程范式,它将程序组织成对象.对象包含数据和操作数据的方法. OOP 的优势: 更快.更易于执行 提供清晰的结构 代码更易于维护.修改和调试 提 ...
- HMS Core机器学习服务实现同声传译,支持中英文互译和多种音色语音播报
当用户有跨语种交流或音频内容翻译的需求时,应用需要能自动检测语音内容再输出为用户需要的语言文字. HMS Core机器学习服务提供同声传译能力,同声传译实现将实时输入的长语音实时翻译为不同语种的文本以 ...
- 如何使用ODBC应用程序接口连接数据库
如何使用 ODBC 应用程序接口连接数据库? 安装 unixODBC. yum install -y unixODBC yum install -y unixODBC-devel 下载并安装 open ...
- 【Nano Framework ESP32 篇】刷入 nanoCLR 固件以及相关问题
老周在几个世纪前曾写过树莓派相关的 iOT 水文,之所以没写 Nano Framework 相关的内容,是因为那时候这货还不成熟,可玩性不高.不过,这货现在已经相对完善,老周都把它用在项目上了--第一 ...