我个人编写的库,在我个人网站,小程序等很多地方都在使用中,大家可以搜索小程序 什邡市宅猫君网络工作室 或者到我的网站 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开源库的更多相关文章

  1. 一行代码实现Vue微信支付,无需引用wexin-sdk库,前后端分离HTML微信支付,无需引用任何库

    前后端分离项目实现微信支付的流程: 1:用户点击支付 2:请求服务端获取支付参数 3:客户端通过JS调起微信支付(微信打开的网页) * 本文主要解决的是第3步,视为前两步已经完成,能正确拿到支付参数, ...

  2. 使用开源库MAGICODES.WECHAT.SDK进行微信公众号支付开发

    概要 博客使用Word发博,发布后,排版会出现很多问题,敬请谅解.可加群获取原始文档. 本篇主要讲解微信支付的开发流程,相关业务基于MAGICODES.WECHAT.SDK实现.通过本篇教程,您可以很 ...

  3. 对接微信红包时:CA证书出错,请登录微信支付商户平台下载证书

    今天在对接微信支付的微信红包发放时,出现““CA证书出错,请登录微信支付商户平台下载证书”的错误,特此记录一下: 如果你也在对接微信红包,并且你也在这个页面上下载了demo,再就是你也参照了里面的文档 ...

  4. react-native 的微信SDK辅助包,支持微信登录、微信分享、微信支付

    微信SDK集成示例,现已完成微信授权登录,之后将陆续包装分享等其他功能. ReactNative高级交流群 127482131 或访问  http://blog.1ygowu.com ReactNat ...

  5. React Native绑定微信分享/登录/支付(演示+实现步骤+注意事项)

    React Native(以下简称RN)绑定微信分享/微信登录/微信支付的实现演示+源码+注意事项!微信的调用大同小异,本文实现了微信的分享功能,其他功能可以在链接文档里面找到具体的方法. 本文分文三 ...

  6. 开源微信支付SDK

    应该有一年多没在博客园上写文章了,毕竟是一个记录自己技术成长的平台,没能将写博客长期坚持下来,说起来也是挺惭愧的.对于自己的近况而言,确实平常加班也比较多,时间会比较压缩,所以到后来博客也基本停止了更 ...

  7. Android调试大法 自定义IDE默认签名文件==>微信支付、微信登录、微信分享,debug时调试通过,release时调不起微信

    转载地址:http://blog.yanzhenjie.com Android调试大法之自定义IDE默认签名文件,你是否为调试第三方SDK时debug签名和release签名发生冲突而烦恼?你是否在d ...

  8. Unity接入微信登录 微信分享 微信支付 支付宝SDK

    你将会学到的unity集成SDK游戏中接入微信支付与支付宝支付游戏中接入微信登录与微信分享 目录 mp4格式,大小2.2GB 扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop13 ...

  9. 基于.Net Standard开发的微信服务端开源库

    一直想做一个开源库, 为社区贡献一份力量, 同时提高一下自己 一年来在给公司做一款微信小程序, 于是突发奇想用.Net Standard做一整套微信开发服务端类库 地址: https://gitee. ...

  10. angularjs 微信授权登录 微信支付

    最近做一个项目,用angular 一个单页应用,打算打包成 跨平台移动App 以及在微信里面使用.给大家一个案例 首先,熟悉一下微信授权部分的源代码,如下所示: javascript 前端代码: va ...

随机推荐

  1. KingbaseES 查看函数中最耗时的sql

    测试 创建测试环境所需表及函数 create table test1(id int); INSERT INTO test1(id) VALUES (generate_series(1, 10000)) ...

  2. exist和left join 性能对比

    今天遇到一个性能问题,再调优过程中发现耗时最久的计划是exist 部分涉及的三个表. 然后计划用left join 来替换exist,然后查询了很多资料,大部分都说exist和left join 性能 ...

  3. KingbaseES 对象重命名需要注意的事项

    前言: Oracle 对视图或同义词依赖的底层对象表,如果被重命名,则视图或同义词失效.Oracle DBA 经常利用这个特点,对表进行重建,在重建过程中,无法通过视图或同义词访问,这就保证了数据的安 ...

  4. scala入门输出helloworld

    1 object HelloScala{ 2 def main(args : Array[String]){ 3 println("hello scala") 4 } 5 } He ...

  5. Python爬虫爬取国家统计局网站【统计用区划和城乡划分代码】并存入MySQL数据库

    国家统计局网站相关分级页面截图 基本思路 爬取每个页面的a标签内容,生成省市两级数据字典,最后合成区县对应的链接,爬取第三层区划代码和名字,结合省市两级名字生成最后的标准. 代码 1 import p ...

  6. #交互#CF1375F Integer Game

    题目 有三堆石子初始石子数分别为\(a,b,c\),可以选择先手还是后手操作, 每次操作形如先手选择一个正整数 \(k\) ,后手自由选择一堆石子加上 \(k\) , 但是不能和上一次操作选择的石堆相 ...

  7. #高精度,卡特兰数#洛谷 2532 [AHOI2012]树屋阶梯

    题目 分析 设\(dp[n]\)表示大小为\(n\)的树屋阶梯方案数,如何不算重也不算漏 考虑在左下角填充一个尽量大的矩形,一共有\(n\)种方法, 然后剩下的两头就可以用前面的结果表示 也就是\(d ...

  8. C#_面试题1

    C#_面试题1 1.维护数据库的完整性.一致性.你喜欢用触发器还是自写业务逻辑?为什么? 答:尽可能用约束(包括CHECK.主键.唯一键.外键.非空字段)实现,这种方式的效率最好:其次用触发器,这种方 ...

  9. MOGDB/openGauss索引推荐及虚拟索引

    MOGDB/openGauss 索引推荐及虚拟索引 索引推荐 在 ORACLE 的优化中,可能大家有接触过 SQL Tuning Advisor(SQL 调优顾问,STA),类似的 MOGDB/ope ...

  10. ODBC批量merge中出现主键冲突的分析

    ODBC 批量 merge 中出现主键冲突的分析 一. 文档概括 客户某个 merge 语句运行时,发生主键冲突报错. 经分析,其原因如下: 由于 merge 语句中,ON 里的判断条件(谓词)中存在 ...