微信公众号关注回调支付回调问题

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
微信公众号支付付款之后收不到回调。我们把请求参数拿出来,找到notify_url,自己用浏览器去访问这个url是通的,说明这个url本身是没有提问的。但是付款之后微信就是回调不回来。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以折中一下,在接口未审核通过的时候,回调没用,这时候你可以主动发起查询,就是在用户扫码的页面,后端AJAX10秒查一次即可。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
看看web服务器日志,有没有腾讯的ip过来的请求。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你的域名被微信屏蔽了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可能是没有设置支付授权目录。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
url中不可以带参数
如?param=value
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你的url是要外网能访问的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
针对这个问题,我不赞成
的答案,因为轮询需要消耗太多的性能。官网也给出了查询订单的适用场景:
需要调用查询接口的情况:
当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知;
调用支付接口后,返回系统错误或未知交易状态情况;
调用被扫支付API,返回USERPAYING的状态;
调用关单或撤销接口API之前,需确认支付状态;
回归正题,建议题主按照如下的方式进行检查:
检查 notify_url 是否可以访问,注意是 POST 方式,不是 GET 方式。
检查服务端日志,在调用相关 API 之后,是否有来自腾讯的 IP 请求。
检查 Web 接口是否可以接受 XML 格式数据请求。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
楼主你好,请问你的问题现在解决了吗?我现在也遇到了一样的问题
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
确定URL准确并且外网可访问
如下图确定是否配置授权目录
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
楼主可以搜一下叫natapp这个软件,能直接在本地开启外网访问,这样调试起来方便一些!!
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
建议用花生壳开启80端口调试。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。公众号支付流程中,为什么商户后台调用统一下单接口获得参数后要返回给H5页面向微信支付后台发起支付请求? - 知乎49被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答274 条评论分享收藏感谢收起21 条评论分享收藏感谢收起写回答微信公众支付成功确不回调可能有哪些原因_百度知道
微信公众支付成功确不回调可能有哪些原因
我有更好的答案
这应该是微信接口不对呀,接入微信支付,要回调官方的支付接口才能实现支付。 你是自己有开放微信支付通道和接口吗?没有的话要找有通道的支付公司开放接口,不然是不能回调成功的,这也是聚合支付不是所有人能做的原因之一.
微信智慧生活
主营:金融
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。微信公众号支付开发(java)实例详解-java教程-PHP中文网QQ群微信公众号还没有收藏微信公众号支付开发(java)实例详解之前公司项目开发中支付是用阿里的支付做的,那叫一个简单,随意;悲催的是,现在公司开发了微信公众号,所以我步入了全是坑的微信支付开发中。。。业务流程:  这个微信官网说的很详细的(传送门:)。    大概的流程就是:用户点击一个支付按钮--&后台处理(其实就是封装支付必要的数据以及获取prepay_id,然后将它和一些必须参数封装传给前台)--&前台接收数据并且调用微信的js处理数据并调用支付--&用户看到了一个输入密码的界面,包含金额等一些信息--&用户输入密码后出来一个支付成功的页面,同时微信会回调我们的接口通知我们支付结果(这部分流程都是微信自己完成的,我们不用管)--&返回系统自己的页面。开发步骤:一、设置支付目录  这个官方文档写的很恶心,看的我一头雾水,真心有点晕。虽然看不懂,但是觉得很厉害的样子!传送门:二、设置授权域名这2步完成之后,你可以休息一下了,因为巨坑要来了。。。三、商户server调用统一下单接口请求订单这是干啥的?刚开始做的时候一头雾水,但是谁叫人家微信支付团队nb啊,不整点你不理解的东西,怎能体现出他们的高大上。。。不理解,没关系照着文档做呗传送门:,
微信官方给了个参数的详细说明。看了半天,总结了一下,就是封装一些必要参数然后去访问这个接口获取数据。下面是几个常用的参数,直接copy别人的介绍非常详细:appid ==应用ID==登陆微信公众号后台-开发-基本配置mch_id == 微信支付商户号==登陆微信支付后台,即可看到device_info==设备号==终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传&WEB&body==商品描述==商品或支付单简要描述(建议刚开始最好传英文,尽量先别传汉子,要不之后签名出问题都没法查)trade_type==交易类型==取值如下:JSAPI,NATIVE,APP。我们这里使用的JSAPI。标题已经说了,是微信公众号支付。他们的区别,请参考      ps:JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付,统一下单接口trade_type的传参可参考这里。MICROPAY--刷卡支付,刷卡支付有单独的支付接口,不调用统一下单接口nonce_str==随机字符串==随机字符串,不长于32位(参考算法)   notify_url==通知地址==接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。(这,起个什么名字好呢。随便起吧,反正一时半会也用不到)out_trade_no==商户订单号==商户系统内部的订单号,32个字符内、可包含字母(参考:)(每次看完微信的官方解释就更迷茫了,有木有。没关系,我就传个1咋了。)total_fee==总金额==订单总金额,单位为分(这个注意一下,我开始没注意,传的是0.01,开发么都用1分钱,然后就悲剧了,看了好多遍才发现单位是分 分 分)openid==用户标识==trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识。(要是不知道这个从哪里来的话,没关系。微信不是给咱写文档了吗)还有最最重要的一个,重要的角色总要在最后登场。attach==附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用。(这个我觉得挺有用的,可以用来放业务数据,因为我是在微信回调中处理业务数据的,用这个参数安全无痛)sign==签名==官方给的签名算法。。没有看懂,看不太懂,你觉得你看懂了,没关系,不遇到几次签名错误,好意思说自己做过微信支付开发吗(个人推荐开发时候用官方sdk中的工具来做,能省很多麻烦在这里下载java的API对应的SDK和调用示例,里面工具很全)说道这个sign还有一个更重要的参数。参与签名的参数。反正我是找了好久才找到。(公司运营申请的微信支付,当我找她要的时候,他的表情是这样子的。)key==key设置路径:微信商户平台(pay.weixin.qq.com)--&账户设置--&API安全--&密钥设置(这个很重要,签名都用它)这部分总结就是,先将数据封装成map然后通过工具转化成xml(工具上面提到了,自己回去看),然后通过post请求请求【微信统一下单接口】,如果sign没有问题就会返回一个xml,里面很多数据,其中我们要的是prepay_id,就是这个参数,然后生成签名返回到前台,ok这步也完成了。问题总结(我在这过程中遇到的问题):1(重要)appid与openid必须是匹配的,换句话说就是用户的openid必须是在当前的公众号下用户(我们好几个公众号,可能你们不会遇到这个问题,但是这很重要,说以第一个说)2第二步,生成签名并返回到前台这个过程中一定要注意参数一定要写对了,大小写,是否有空格,我在这上面掉了一个大坑,界面调用支付时一直闪退,注意.四、H5调起微信支付的内置JS 后台传回前台的参数中,应包含以下几项:appId==这个是不变的==永远不变timeStamp==时间戳==规则:。看完仍是一脸迷茫的,没关系,我们有工具类。 nonceStr ==反正我用的跟刚才签名是同一个随机字符串。理论上不用应该也没有关系的,勤快的小伙伴可以试试package==订单详情扩展字符串==统一下单接口返回的prepay_id参数值,提交格式如:prepay_id=***(你猜对了。刚才我们费那么大力气,获得到的prepay_id就是在这里用的)signType==签名方式==签名算法,暂支持MD5paySign==签名==这个签名,要重新生成,在后台。使用如上4个参数+一个key(永远不变)。(我生成签名的时间戳和传回给前台的时间戳就是timeStamp是同一个。不一样行不行,木有验证)生成paySign的代码注意:生成prepay_id时appid是小写的i,生成paySign时,appId是大写的I,这俩是不同的 如果一切顺利的话,就会出现这个页面这些都做完了你就可以放松一下了五,微信回调处理该部分有以下3小步骤    1)解析传过来的流信息,通过重新签名的方式验证流中包含的信息的正确性。就是判断这个信息到底是不是微信发的    2)return_code和result_code都是SUCCESS的话,处理商户自己的业务逻辑。就是订单的支付状态啊等一些信息。    3)告诉微信,我收到你的返回值了。不用在发了。话不多说,直接贴代码!public String return_data(HttpServletRequest request, HttpServletResponse response) throws Exception {
logger.info(&微信支付请求回调了&);
String resXml = &&;
Map&String, String& backxml = new HashMap&String, String&();
InputStream inStry {
inStream = request.getInputStream();
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
outSteam.close();
inStream.close();
String result = new String(outSteam.toByteArray(), &utf-8&);// 获取微信调用我们notify_url的返回信息Map&String, String& map = WXPayUtil.xmlToMap(result);if (map.get(&result_code&).toString().equalsIgnoreCase(&SUCCESS&)) {if (WXPayUtil.isSignatureValid(map, PayConfigUtil.API_KEY)) {
logger.info(&微信支付-签名验证成功&);//
backxml.put(&return_code&, &SUCCESS&);//
backxml.put(&return_msg&, &OK&);//
String toXml = WXPayUtil.mapToXml(backxml);//
response.getWriter().write(toXml);resXml = &&xml&& + &&return_code&&![CDATA[SUCCESS]]&&/return_code&&+ &&return_msg&&![CDATA[OK]]&&/return_msg&& + &&/xml& &;//业务处理开始
//业务处理结束
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());out.write(resXml.getBytes());out.flush();out.close();
} catch (IOException e) {
e.printStackTrace();
}return resX
}还记得,三、商户server调用统一下单接口请求订单 中attach参数么,这里用来带业务数据很方便以上就是微信公众号支付开发(java)实例详解的详细内容,更多请关注php中文网其它相关文章!共3篇953点赞收藏分享:.php.cn&猜你喜欢PHP中文网:独家原创,永久免费的在线,php技术学习阵地!
All Rights Reserved | 皖B2-QQ群:关注微信公众号一、开通微信支付的首要条件是:认证服务号或政府媒体类认证订阅号(一般认证订阅号无法申请微信支付)
二、微信支付分为老版支付和新版支付,除了较早期申请的用户为老版支付,现均为新版微信支付。
三、公众平台微信支付开发配置参数:
1、支付授权目录:www.weixunyunduan.com/yunduanwx/wxpay/(主域名状态下填写此目录)
2、支付授权目录:www.weixunyunduan.com/yunduanwx/Cashier/pay/wxpay/(主域名状态下使用收银台填写此目录)
3、支付授权目录:abc.wap.weixinyunduan.com/yunduanwx/wxpay/(三级域名状态下填写此目录,abc用系统分配的前缀替换)
4、支付授权目录:abc.wap.weixinyunduan.com/yunduanwx/Cashier/pay/wxpay/(三级域名状态下使用收银台填写此目录,abc用系统分配的前缀替换)
5、支付授权目录:wx.cnxuntu.com/yunduanwx/wxpay/(备用域名状态下填写此目录)
6、支付授权目录:wx.cnxuntu.com/yunduanwx/Cashier/pay/wxpay/(备用域名状态下使用收银台填写此目录)
7、支付回调URL:http://www.weixunyunduan.com/yunduanwx/wxpay/getpackage
注意:以上链接只作微信支付配置使用,在电脑上打开授权目录与回调URL均无法打开。
四、微信支付具体设置填写的方法:
1、请把以上链接填写到公众平台微信支付的开发配置中,请对应填写;
2、如微信支付配置中无对应接口,可以不用填写,目前新版微信支付只需要填写两个链接就可以了;
3、同时再到微信商户平台上的账号安全中设置32位的API安全密钥,此32位API密钥是由用户自行设置;
4、最后再到我方平台上的微支付管理内配置相关的支付接口,具体请根据里面的说明设置即可;
5、微信支付的最小金额是0.1元,所以在测试支付时金额必须大于0.1元,否则会提示微信支付配置错误。
微信公众平台微信支付开发配置图示:
微信商户平台32位API安全密钥配置图示:
&& & TODO: 修改这里配置为您自己申请的商户信息&& && 微信公众号信息配置&& & && & APPID:绑定支付的APPID(必须配置,开户邮件中可查看)&& & MCHID:商户号(必须配置,开户邮件中可查看)&& && KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置)&& && 设置地址:https://pay.weixin.qq.com/index.php/account/api_cert&& & && & APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置),&& & 获取地址:https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=&lang=zh_CN&&
如需帮助请联系QQ:,会收取一定的服务费。
阅读(...) 评论()

我要回帖

更多关于 微信支付回调问题 的文章

 

随机推荐