.NET Core 微信小程序支付——(统一下单)
1
开通小程序的支付能力
开通小程序支付功能比较简单,基本上按微信文档一步一步的申请就好,如图
以上三个步骤就申请完成
1、提交资料给微信
2、微信审核并签署协议
3、商户后台绑定同主体的APPID
2
商户后台绑定同一主体的APPID并授权
1、登录商户后台https://pay.weixin.qq.com,进入产品中心—APPID授权管理,进入授权页面如图:
2、填写相关已认证APPID信息,阅读并签署《微信支付商户号与APPID授权协议》,点击“确认”提交,发起授权申请,如下图:
3、发起授权申请后,商户需自行前往对应平台确认授权申请。
小程序:前往公众平台,点击“微信支付-商户号管理”,查看相关商户号信息,确认授权申请,或在“公众平台安全助手”下发的模板消息中确认授权信息;
公众号/订阅号:前往公众平台,点击“微信支付-商户号管理”,查看相关商户号信息,确认授权申请;
APP:前往开放平台,点击“管理中心-查看-微信支付-商户号管理”,查看相关商户号信息,确认授权申请;
4. 以上步骤绑定成功,可以实现微信支付功能。
3
预先设置回调地址,商户后台设置开发的配置
预先设置好回调地址后,方便支付成功后收到微信通知来处理业务,设置也比较简单不用多说,如图:
根据自己的需求设置不同的回调地址。
4
代码实现统一支付
1、统一支付,只要是微信公众号平台的同一主体都可以使用同一个支付,只需要在商户后台绑定APPID即可。
微信小程序支付官方图:
微信支付文档说明地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1
引用包:
Senparc.Weixin.WxOpen
Senparc.Weixin.TenPay
注册公众号,小程序信息
services.AddSenparcGlobalServices(Configuration)
.AddSenparcWeixinServices(Configuration);
IRegisterService register = RegisterService.Start(env, senparcSetting.Value).UseSenparcGlobal(false, null);
register.UseSenparcWeixin(senparcWeixinSetting.Value, senparcSetting.Value) .RegisterTenpayV3(senparcWeixinSetting.Value, "appid");
前端调用统一下单接口,获取prepayId
部分前端代码如下:
后端部分代码截图获取prepayId,如需代码请与我联系
提交统一支付成功后,会出现如下图:
注:一般正常获取到prepayid就可以发起支付,请确保所给的参数正确。
5
微信支付回调
微信支付回调规则如下:
回调代码实现
///<summary>
/// 微信支付回调地址
/// </summary>
/// <returns></returns>
[HttpPost("PayNotifyUrl")]
public ActionResult PayNotifyUrl()
{ ResponseResult result = new ResponseResult(); ResponseHandler resHandler = new ResponseHandler(HttpContext); string return_code = resHandler.GetParameter("return_code"); string return_msg = resHandler.GetParameter("return_msg"); try { var mch_key = Senparc.Weixin.Config.SenparcWeixinSetting.TenPayV3_Key; resHandler.SetKey(mch_key); var notifyXml = resHandler.ParseXML(); bool signFlag = resHandler.IsTenpaySign(); if (signFlag && return_code.ToUpper() == "SUCCESS") { string attach = resHandler.GetParameter("attach"); string device_info = resHandler.GetParameter("device_info"); string out_trade_no = resHandler.GetParameter("out_trade_no"); string transaction_id = resHandler.GetParameter("transaction_id"); string total_fee = resHandler.GetParameter("total_fee"); PayOrderNotifyParam param = new PayOrderNotifyParam() { PayNo = out_trade_no, Attach = attach, PayPrice = decimal.Parse(total_fee) / 100, TransactionNo = transaction_id, }; //回调参数说明:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_7&index=3 //Logger.Info(string.Format("支付回调接收参数成功,notifyXml={0},param={1}", notifyXml, param.SerializeObject())); result = Service.PayNotifyUrl(param); if (result.errno != 0) { //回调处理逻辑失败 Logger.Error(string.Format("支付回调处理失败:支付单号:{0},{1}", param.PayNo, result.errmsg)); } else { Logger.Info(string.Format("支付回调处理成功,支付单号:{0}", param.PayNo)); string xml = string.Format(@"<xml> <return_code><![CDATA[{0}]]></return_code> <return_msg><![CDATA[{1}]]></return_msg> </xml>", return_code, return_msg); return Content(xml, "text/xml"); } } else { //错误的订单处理 Logger.Error(string.Format("支付回调接失败,signFlag={0},notifyXml={1}", signFlag, notifyXml)); } } catch (Exception ex) { Logger.Error(string.Format("支付回调异常:Message={0},StackTrace={1}", ex.Message, ex.StackTrace)); } return Content("fail", "text/xml");
}
回调接口最好验证下签名是否正确,验证签名请先设置下商户KEY,如签名成功,微信支付成功,这时可以处理业务数据。
注:如果业务处理成功最好返回SUCCESS告诉微信,否则微信会隔一段时间就会回调一次,直到回调次数用尽,这里也需要自己业务处理好状态。
6
总结
以上流程就是微信支付过程,以上步骤由于一些隐私问题部分代码采用了截图,如有不明白之处请与我联系,我们一起交流学习,下一篇文章我们将实现微信退款功能。
相关推荐
.NET Core 小程序开发零基础系列(1)——开发者启用并牵手成功
.NET Core 小程序开发零基础系列(2)——小程序服务通知(模板消息)
.net core redis的全套操作
.NETCore 实现容器化Docker与私有镜像仓库管理
写留言一起交流
.NET Core 微信小程序支付——(统一下单)相关推荐
- 微信小程序支付统一下单接口and异步回调
统一下单接口: <?phpnamespace pay;class WxPay {protected $appid;protected $mch_id;protected $key;protec ...
- 微信小程序之统一下单
统一下单 话不多说上效果图 微信小程序支付 统一下单需要的参数 Java后端代码 小程序端代码 话不多说上效果图 微信小程序支付 1.需要企业或者个体工商户申请,个人主体小程序不支持开通微信支付 2. ...
- 微信小程序支付:下单账号与支付账号不一致
原因:同一个账号两个人登录导致的bug
- .NET Core 微信小程序退款——(统一退款)
点击上方"dotNET名人堂",选择"设为星标" 用学习的姿态,步入工作的状态 继上一篇".NET Core 微信小程序支付--(统一下单)后&quo ...
- 微信小程序支付接口报错:appid和openid不匹配
一.接口地址 二.接口几个字段讲解 三.报错的原因 四.解决方法 一.接口地址 地址在 -> 微信官方文档 -> 微信支付 -> 小程序支付 -> 统一下单 对比 V2-旧版, ...
- 微信小程序支付返回签名错误_java 微信小程序微信支付统一下订单及数字签名错误问题(后端)...
今天来分享一下之前做微信小程序微信支付遇到的一些坑,博主这里是微信小程序支付功能,因此选择的微信支付方式是JSAPI支付方式(温馨提示左下角有音乐哦). 首先我们肯定是要在小程序后台绑定一个商户号的, ...
- SpringBoot对接微信小程序支付功能开发(一,下单功能)
1,接入前准备: 接入模式选择直连模式: 申请小程序,得到APPID,并开通微信支付: 申请微信商户号,得到mchid,并绑定APPID: 配置商户API key,下载并配置商户证书,根据微信官方文档 ...
- 微信小程序php后台支付,微信小程序 支付功能实现PHP实例详解
微信小程序 支付功能实现PHP实例详解 前端代码: wx.request({ url: 'https://www.yourhost.com/weixin/WeiActivity/payJoinfee' ...
- python个人微信支付接口_Python实现微信小程序支付功能
正文 由于最近自己在做小程序的支付,就在这里简单介绍一下讲一下用python做小程序支付这个流程.当然在进行开发之前还是建议读一下具体的流程,清楚支付的过程. 1.支付交互流程 2.获取openid( ...
最新文章
- [转]Eclipse中的Web项目自动部署到Tomcat
- 2012年上半年网工考试试题分析
- mac git安装及github配置
- 【转】Linux awk命令详解
- linux 查看磁盘空间 文件 文件夹 大小
- 在nagios中使用nrpe自定义脚本
- rar x64 5.50 linux,WinRAR 5.50 简体中文正式版发布
- FileZilla客户端连接腾讯云FTP服务器时出现“227 Entering Passive Mode”
- Zookeeper 夺命连环 9 问
- [面试] C/C++ 语法(七)—— C++ 类型转换
- 二十四、Java集合框架(一)
- SDIO接口(4)——SDIO通信
- java字体推荐_最适合编程的10大字体推荐
- 什么是网站前端框架?目前常用的网站前端框架都有哪些?
- 【虫师--系列15】性能测试知多少---系统架构分析
- LTE上行物理层传输机制(6)-周期CQI、PMI和RI的发送时机
- win10卸载软件_win10系统频繁闪屏刷新解决方法
- 万变不离其宗之ZYNQ串口介绍
- Benchmark 第一篇 了解Benchmark
- python(第八天)
热门文章
- airdroid黑屏_如何使用AirDroid从PC控制Android设备
- ELKstack-Elasticsearch各类安装部署方法
- 【ACR2015】依那西普按需维持治疗策略有效抑制RA骨破坏进展
- C#中的多线程 - 并行编程 z
- 微软推出 .NET 官方社区论坛
- C# WPF MVVM模式下在主窗体显示子窗体并获取结果
- 数据资产纳入国资保值增值考核
- .NET 6 预览版 7 Released
- 把HttpClient换成IHttpClientFactory之后,放心多了
- 记一次 .NET 医院CIS系统 内存溢出分析