php网站忘记后台密码,桑葚 wordpress,浏览器游戏网址,图片搜集网站怎么做最近公司研发了几个电商小程序#xff0c;还有一个核心的电商直播#xff0c;只要是电商一般都会涉及到交易信息#xff0c;离不开支付系统#xff0c;这里我们统一实现小程序的支付流程#xff08;与服务号实现步骤一样#xff09;。目录1、开通小程序的支付能力2、商户… 最近公司研发了几个电商小程序还有一个核心的电商直播只要是电商一般都会涉及到交易信息离不开支付系统这里我们统一实现小程序的支付流程与服务号实现步骤一样。目录1、开通小程序的支付能力2、商户后台绑定同一主体的APPID并授权3、预先设置回调地址商户后台设置开发的配置4、代码实现统一支付5、微信支付回调6、总结1开通小程序的支付能力开通小程序支付功能比较简单基本上按微信文档一步一步的申请就好如图以上三个步骤就申请完成1、提交资料给微信2、微信审核并签署协议3、商户后台绑定同主体的APPID2商户后台绑定同一主体的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?chapter9_1引用包Senparc.Weixin.WxOpenSenparc.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?chapter9_7index3 //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与私有镜像仓库管理点击【在看】与好朋友一起分享写留言一起交流