手机版

NET Core实现微信小程序支付功能(统一下单)

时间:2021-08-20 来源:互联网 编辑:宝哥软件园 浏览:

最近,公司开发了几个小型电商节目和一个核心电商直播。只要电子商务普遍涉及交易信息,支付系统就不可或缺。在这里,我们统一实现了小程序的支付流程(步骤与服务号相同)。

开通小程序的支付能力

打开小程序支付功能相对简单,基本上按照微信文档一步一步申请,如图

以上三个步骤已经完成

1.将信息提交到微信

2.微信审核并签署协议

3.商家在后台绑定同一主体的APPID

商户后台绑定同一主体的APPID并授权

1.登录商户后台https://pay.weixin.qq.com,进入产品中心——APPID授权管理,进入授权页面,如下图所示:

2.填写相关认证APPID信息,阅读并签署《微信支付商户号与APPID授权协议》,点击“确认”提交,发起授权申请,如下图:所示

3.授权申请发起后,商家需要到相应的平台确认授权申请。

小程序:前往公共平台,点击“微信支付-商户号管理”,查看相关商户号信息,确认授权申请,或确认“公共平台安全助手”发布的模板消息中的授权信息;

微信官方账号/订单号:前往公共平台,点击“微信支付-商户号管理”,查看相关商户号信息,确认授权申请;

APP:前往开放平台,点击“管理中心-查看-微信支付-商户号管理”,查看相关商户号信息,确认授权申请;

4.以上步骤绑定成功,即可实现微信支付功能。

预先设置回调地址,商户后台设置开发的配置

提前设置好回拨地址后,付款成功后接收微信通知办理业务比较方便,设置也比较简单,如图:

根据自己的要求设置不同的回拨地址。

代码实现统一支付

1.统一支付,只要微信官方账号平台的同一主体可以使用同一支付,只需要在商家后台绑定APPID即可。

微信小程序支付官方地图:

微信支付单据描述地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?章=9_1

参考包:

森帕克。Weixin.WxOpen

森帕克。微信.财付通

注册公众号,小程序信息

服务。添加服务(配置)。添加服务(配置);前端调用统一订购接口获取预付费标识

IRegisterService register=register service。Start(env,senparcSetting。值)。UseSenparcGlobal(false,null);注册。使用senparcweixin(senparcweixin setting。值,senparcSetting。value .)registerstenpayv3(senparcWeixinseting。Value,' appid ');

部分前端代码如下:

从代码后端部分的截图中获取预付费Id,如果需要代码,请联系我

提交统一支付成功后,会出现下图:

注意:一般情况下,可以在正常获得预付款后开始付款。请确保给出的参数是正确的。

微信支付回拨

微信支付回拨规则如下:

回调代码实现

///摘要///微信支付回调地址////summary///returns/returns[Http set(' paynotifyURl ')]public action result paynotifyURl(){ response result=new response result();ResponseHandler resHandler=new ResponseHandler(HttpContext);字符串return_code=resHandler .GetParameter(' return _ code ');字符串return_msg=resHandler .GetParameter(' return _ msg ');尝试{ var mch_key=Senparc .微信。配置。senparcweixinseting。tenpayv3 _ Key重装机.setKeY(mch _ key);var notifyXml=resHandler .ParseXML();bool signFlag=resHandler .IsTenpaySign();如果(签名标志返回_代码.ToOpper()==' SUCCESS '){ 0字符串附加=resHandler .getParameter(' attach ');string device_info=resHandler .GetParameter(' device _ info ');string out_trade_no=resHandler .GetParameter(' out _ trade _ no ');字符串事务id=Reshandler .getParameter(' transaction _ id ');字符串total_fee=resHandler .GetParameter(' total _ fee ');payordernityparam参数=new payordernityparam(){ 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?章节=9_7index=3 //Logger .信息(字符串。格式('支付回调接收参数成功,notifyXml={0},参数={1},notifyXml,参数. SerializeObject()));结果=服务PayNotifyUrl(参数);if (result.errno!=0) { //回调处理逻辑失败伐木工。错误(字符串。格式('支付回调处理失败:支付单号:{0},{1},参数支付号,结果。errmsg));} else { Logger .信息(字符串。格式('支付回调处理成功,支付单号:{0} ',参数PayNo));字符串xml=字符串。格式(@ XML return _ code![CData[{ 0 }]/return _ code return _ msg![CData[{ 1 }]/return _ msg/XML ',return_code,return _ msg);返回内容(xml,‘text/XML’);} } else { //错误的订单处理伐木工。错误(字符串。格式('支付回调接失败,signFlag={0},notifyXml={1} ',signFlag,notifyXml));} } catch (Exception ex) { Logger .错误(字符串。格式('支付回调异常:消息={0},堆栈跟踪={1},例如。留言,前任堆栈跟踪));}返回内容("失败"、"文本/XML ");}回调接口最好验证下签名是否正确,验证签名请先设置下商户关键,如签名成功,微信支付成功,这时可以处理业务数据。

注:如果业务处理成功最好返回成功成就告诉微信,否则微信会隔一段时间就会回调一次,直到回调次数用尽,这里也需要自己业务处理好状态。

总结

以上流程就是微信支付过程,以上步骤由于一些隐私问题部分代码采用了截图,如有不明白之处请与我联系,我们一起交流学习,下一篇文章我们将实现微信退款功能。

以上所述是小编给大家介绍的。净核心实现微信小程序支付功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

版权声明:NET Core实现微信小程序支付功能(统一下单)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。