微信app支付android客户端以及.net服务端实现
2017-04-25 17:32
561 查看
由于公司运营需要,需要在客户端(android/ios)增加微信以及支付宝支付,在调用微信app支付时遇到一些问题,也算是一些踩过的坑,记录下来
,希望能对.net开发者服务端网站更快的集成微信app支付。
1.开发所需资料:微信开放平台应用的appid以及appsecert,商户平台的商户号以及api安全里面里面设置的key,详见 微信支付账户相关信息;
2.微信开发者平台完善应用平台的相关信息,android应用签名必须用打包签名过的发布版本apk(这一步很重用),包名必须一致,可以用微信提供的签名工具获得,签名工具下载地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk
以下是交互时序图,统一下单API、支付结果通知API和查询订单API等都涉及签名过程,调用都必须在商户服务器端完成(来源微信支付开发文档):
微信回调通知参考代码
微信支付官方文档
微信.NET集成可参考现有轮子 JeffreySu/WeiXinMPSDK
,希望能对.net开发者服务端网站更快的集成微信app支付。
1.开发所需资料:微信开放平台应用的appid以及appsecert,商户平台的商户号以及api安全里面里面设置的key,详见 微信支付账户相关信息;
2.微信开发者平台完善应用平台的相关信息,android应用签名必须用打包签名过的发布版本apk(这一步很重用),包名必须一致,可以用微信提供的签名工具获得,签名工具下载地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk
以下是交互时序图,统一下单API、支付结果通知API和查询订单API等都涉及签名过程,调用都必须在商户服务器端完成(来源微信支付开发文档):
[AllowAnonymous] public ActionResult PayResult() { ResponseHandler resHandler = new ResponseHandler(null); string return_code = resHandler.GetParameter("return_code"); string return_msg = resHandler.GetParameter("return_msg"); string res = null; EngineContext.Current.Resolve<ILogger>().Information("收到微信支付通知"+resHandler.ParseXML()); //EngineContext.Current.Resolve<ILoggingService>().Write(LogType.Pay, resHandler.ParseXML()); string orderno = resHandler.GetParameter("out_trade_no"); string payno = resHandler.GetParameter("transaction_id"); string nonce_str = resHandler.GetParameter("nonce_str"); var order = _wechatService.GetWechatPayResult(orderno); if (order != null) { var first = order.FirstOrDefault(r => r.nonce_str == nonce_str); if (first != null) { var payProvider = _wechatService.GetWechatPayProvider(first.appid); resHandler.SetKey(payProvider.MchKey); if (resHandler.IsTenpaySign()) { if (return_code == TenPayTypeResult.SUCCESS.ToString()) { int totaled= int.Parse(resHandler.GetParameter("total_fee")); if (totaled == first.total_fee) { first.IsSuccess = true; first.time_end = DateTime.Now; first.total_fee_ed = int.Parse(resHandler.GetParameter("total_fee")); first.transaction_id = payno; first.Content = resHandler.ParseXML(); _wechatService.UpdateWechatPayResult(first); EngineContext.Current.Resolve<IEventPublisher>().Publish(resultEvent); }else { EngineContext.Current.Resolve<ILogger>().Information("微信支付金额与订单金额不匹配" + resHandler.ParseXML()); } } } } //验证请求是否从微信发过来(安全) 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"); }
微信回调通知参考代码
微信支付官方文档
微信.NET集成可参考现有轮子 JeffreySu/WeiXinMPSDK
相关文章推荐
- PHP服务端集成微信APP支付以及回调
- java实现微信App支付服务端
- 实现微信App支付---关于Android实现App支付时的注意事项(或者叫坑)
- .net 微信APP支付接口的开发流程以及坑
- Android客户端之“微服私访”App的系统学习(五)使用Picasso实现轮播图以及使用自定义View实现个人中心页面
- Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信
- android 不调用微信,易信等SDK实现实现一键分享图片文字到微信,易信,以及全部可选app
- C#+Hybrid App(Android)实现微信APP支付
- Android BLE与终端通信(三)——客户端与服务端通信过程以及实现
- Android作为客户端,PC作为服务端:实现网络通信!
- Android中实现Launcher功能之二 ----- 添加窗口小部件以及AppWidget的创建详解
- Android作为客户端,PC作为服务端:实现网络通信
- android APP 中微信分享功能实现 的总结
- Android客户端WebService访问接口(Ksoap2Android调用.net服务端)
- Android Socket 聊天工具(一个服务端实现多个客户端间通信)
- 足迹二:Android客户端与PC服务端之间的SOCKET通讯实现登陆功能(客户端 仅供学习)
- android APP 中微信分享功能实现 的总结
- 用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM(三)——搭建Android开发环境,用Hibernate生成Android项目的Model层
- Android作为客户端,PC作为服务端:实现网络通信
- 用.Net打造一个移动客户端(Android/IOS)的服务端框架NHM(一)