最近公司研发了几个电商小程序,还有一个核心的电商直播,只要是电商一般都会涉及到交易信息,离不开支付系统,这里我们统一实现小程序的支付流程(与服务号实现步骤一样)。
目录
1、开通小程序的支付能力
2、商户后台绑定同一主体的APPID并授权
3、预先设置回调地址,商户后台设置开发的配置
4、代码实现统一支付
5、微信支付回调
6、总结

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 微信小程序支付——(统一下单)相关推荐

  1. 微信小程序支付统一下单接口and异步回调

     统一下单接口: <?phpnamespace pay;class WxPay {protected $appid;protected $mch_id;protected $key;protec ...

  2. 微信小程序之统一下单

    统一下单 话不多说上效果图 微信小程序支付 统一下单需要的参数 Java后端代码 小程序端代码 话不多说上效果图 微信小程序支付 1.需要企业或者个体工商户申请,个人主体小程序不支持开通微信支付 2. ...

  3. 微信小程序支付:下单账号与支付账号不一致

    原因:同一个账号两个人登录导致的bug

  4. .NET Core 微信小程序退款——(统一退款)

    点击上方"dotNET名人堂",选择"设为星标" 用学习的姿态,步入工作的状态 继上一篇".NET Core 微信小程序支付--(统一下单)后&quo ...

  5. 微信小程序支付接口报错:appid和openid不匹配

    一.接口地址 二.接口几个字段讲解 三.报错的原因 四.解决方法 一.接口地址 地址在 -> 微信官方文档 -> 微信支付 -> 小程序支付 -> 统一下单 对比 V2-旧版, ...

  6. 微信小程序支付返回签名错误_java 微信小程序微信支付统一下订单及数字签名错误问题(后端)...

    今天来分享一下之前做微信小程序微信支付遇到的一些坑,博主这里是微信小程序支付功能,因此选择的微信支付方式是JSAPI支付方式(温馨提示左下角有音乐哦). 首先我们肯定是要在小程序后台绑定一个商户号的, ...

  7. SpringBoot对接微信小程序支付功能开发(一,下单功能)

    1,接入前准备: 接入模式选择直连模式: 申请小程序,得到APPID,并开通微信支付: 申请微信商户号,得到mchid,并绑定APPID: 配置商户API key,下载并配置商户证书,根据微信官方文档 ...

  8. 微信小程序php后台支付,微信小程序 支付功能实现PHP实例详解

    微信小程序 支付功能实现PHP实例详解 前端代码: wx.request({ url: 'https://www.yourhost.com/weixin/WeiActivity/payJoinfee' ...

  9. python个人微信支付接口_Python实现微信小程序支付功能

    正文 由于最近自己在做小程序的支付,就在这里简单介绍一下讲一下用python做小程序支付这个流程.当然在进行开发之前还是建议读一下具体的流程,清楚支付的过程. 1.支付交互流程 2.获取openid( ...

最新文章

  1. [转]Eclipse中的Web项目自动部署到Tomcat
  2. 2012年上半年网工考试试题分析
  3. mac git安装及github配置
  4. 【转】Linux awk命令详解
  5. linux 查看磁盘空间 文件 文件夹 大小
  6. 在nagios中使用nrpe自定义脚本
  7. rar x64 5.50 linux,WinRAR 5.50 简体中文正式版发布
  8. FileZilla客户端连接腾讯云FTP服务器时出现“227 Entering Passive Mode”
  9. Zookeeper 夺命连环 9 问
  10. [面试] C/C++ 语法(七)—— C++ 类型转换
  11. 二十四、Java集合框架(一)
  12. SDIO接口(4)——SDIO通信
  13. java字体推荐_最适合编程的10大字体推荐
  14. 什么是网站前端框架?目前常用的网站前端框架都有哪些?
  15. 【虫师--系列15】性能测试知多少---系统架构分析
  16. LTE上行物理层传输机制(6)-周期CQI、PMI和RI的发送时机
  17. win10卸载软件_win10系统频繁闪屏刷新解决方法
  18. 万变不离其宗之ZYNQ串口介绍
  19. Benchmark 第一篇 了解Benchmark
  20. python(第八天)

热门文章

  1. airdroid黑屏_如何使用AirDroid从PC控制Android设备
  2. ELKstack-Elasticsearch各类安装部署方法
  3. 【ACR2015】依那西普按需维持治疗策略有效抑制RA骨破坏进展
  4. C#中的多线程 - 并行编程 z
  5. 微软推出 .NET 官方社区论坛
  6. C# WPF MVVM模式下在主窗体显示子窗体并获取结果
  7. 数据资产纳入国资保值增值考核
  8. .NET 6 预览版 7 Released
  9. 把HttpClient换成IHttpClientFactory之后,放心多了
  10. 记一次 .NET 医院CIS系统 内存溢出分析