请问微信支付支付成功后如何获取所谓notify的返回值

情况其实不复杂,就是有一个地方一直没搞明白。我已经按照demo构成好了xml包,顺利的换取到了prepal_id,也通过js的那个接口,顺利的能弹出输入密码的对话框,也能输入密码并且钱也到了我的账户上来,都OK。
但一直困扰我的是这个:$input->SetNotify_url("http://www.xxxx.com/index.php/aaa/bbb");这一行似乎一直不起作用。因为在调用了获取prepal_id的unifiedOrder接口后,返回的数据已经不包含这个参数了。而在付完钱也弹出相应的官方的账单页面后,我发现bbb函数压根没有执行(已经提前在bbb函数中写了一段创建文件的代码,但未有新文件生成)。
其他教程基本都教到掉用JS接口弹出输入框就结束了,后面附加一句,当交易成功中,通知接口会收到一份XML文档(含有transaction_id等参数),可以用GET方法获取。所谓通知接口应该就是我们事先设置好的notify_url没跑了。但这个notify_url在文档的解释是异步处理,那理论上不需要我们另外调用,我试过另行跳转,但无法GET到相关信息。
那么不主动跳转的话,这个异步动作是在什么时候执行的呢?我要如何GET到transaction_id等参数,在收到钱的同时做些别的事情呢(给买家派发短信等)?

7个回答

问题就在你的notify_url上
微信的异步通知地址不能携带参数 也解析不了index.php/xxxx/这种地址
比如按你设定的url它会发送到http://www.xxxx.com/index.php

微信就是这么逗比,这个问题也纠结了我几天orz tmd腾讯就没考虑过我们用tp之类框架的码奴么?
反正微信支付就是个神坑 表示支付宝接口好用多了= =

qq_40209589
风流倜傥好姑娘 对啊,我们用tp框架的该怎么写url呢
接近 2 年之前 回复
Alvin__Yang
Alvin__Yang 使用django 表示我想死。。。妈的~
3 年多之前 回复
qq_34914121
深海空间 如何处理从notify_url返回来的数据呢
3 年多之前 回复

烦。。支付没问题,但是回调怎么搞。

yesefuxiao
yesefuxiao 你好,我现在也是和你一样,你怎么解决的呀
大约 2 年之前 回复

prepal_id几天都没有获取到,我心烦

有个连续方式吗 我也遇到这个问题了 请教下!

$xml = $GLOBALS['HTTP_RAW_POST_DATA'];把$xml写入文件,一看便知

我也是啊 支付没问题 就是不知道怎么获取notify.php的数据 第一次弄 文档感觉好坑

用的是微信给的demo文档,我在jsapi页面加了个跳转,
if(res.err_msg == "get_brand_wcpay_request:ok"){
//支付成功
alert('恭喜您支付成功,请耐心等待页面跳转');

window.location.href="jspairefund.php?act=ok&out_trade_no=<?php echo $out_trade_no;?>";
}
这样写,在两千单里会产生二十份支付成功但是状态没改掉的问题,还在想办法解决

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
微信H5支付成功后业务处理
微信支付成功后,我有两个地方处理了业务 ①微信页面内支付成功后返回,如下: WeixinJSBridge.invoke( 'getBrandWCPayRequest',response.msg, function(res){ if(res.err_msg == "get_brand_wcpay_request:ok" ) {} }); ②微信支付通知notify 这两个我想做的是只要有一个处理成功另一个就不用处理了,因为业务中有增加充值记录的程序(两种处理共用这个),所以当支付成功后会导致增加两条记录,这种情况怎么避免呢?求大神赐教
微信支付成功后,如何把支付信息更新到本地的数据库
初学微信,用的官方微信支付的php DEMO,在自己的服务器调试成功了,log里也有notify返回的正确信息(订单号、额度等等),想请教下高手,在哪里添加代码后,可以把服务器回调接收到的成功订单信息出入到自己的数据库。是在notify.php里面添加吗,大概怎么写,求高手指教
微信公众号支付获取不到notify_url通知
2015-07-23 10:06:07,848 INFO -SaleAction.wechat_paymentResult 微信支付后台通知结果:{} 2015-07-23 10:06:07,848 INFO -微信支付后台通知结果: 微信支付后台通知结果:{} 2015-07-23 10:06:07,849 INFO -微信支付后台通知结果: 微信支付后台通知结果:{} 2015-07-23 10:06:07,849 INFO -微信支付后台通知结果: 2015-07-23 10:06:07,849 INFO -微信支付后台通知结果: 微信通知: 后台代码: System.out.println("微信支付后台通知结果:"+request.getParameterMap()); InputStream inputStream = request.getInputStream(); String requestXml = IOUtils.toString(request.getInputStream(),request.getCharacterEncoding()); logger.info("微信支付后台通知结果:"+requestXml); ActionContext cxt = ActionContext.getContext(); HttpServletRequest req = (HttpServletRequest) cxt.get(ServletActionContext.HTTP_REQUEST); System.out.println("微信支付后台通知结果:"+req.getParameterMap()); String reque = IOUtils.toString(req.getInputStream(),req.getCharacterEncoding()); logger.info("微信支付后台通知结果:"+reque); HttpServletRequest re = ServletActionContext.getRequest(); System.out.println("微信支付后台通知结果:"+re.getParameterMap()); String rq = IOUtils.toString(re.getInputStream(),re.getCharacterEncoding()); logger.info("微信支付后台通知结果:"+rq);
微信JsAPI(java)支付,支付完成后notify_url无法调用
最近做微信支付,以前也没做过微信方面的东西,所以都不懂。。 只能求助各位大神了。。 微信文档中说明,在支付成功后会根据notify_url中设置的地址通知商户支付成功的信息, 但是现在不管是将地址设置为xxx.do还是设置为授权目录下的xxx.jsp都不行。 麻烦各位做过的帮忙解答下吧。 谢谢。
微信扫码支付成功后的回调
微信支付成功的时候,我的程序想调用notify_url来通知,但是想在后面带一些参数验证,因为自己的程序也会验证,如果不带参数就会一直回调,最后报错,但是微信的notify_url又不允许带参数,大神们,怎么解决这个问题。
微信支付统一下单notify_url回调重复返回数据
微信的异步通知地址notify_url ,支付成功后,会不断接收微信的回调信息,官方api上说 接收到要返回应答,就不会继续返回信息。但是api上也没说如何响应微信,。。在线等![图片说明](https://img-ask.csdn.net/upload/201603/14/1457935825_66575.png) ![图片说明](https://img-ask.csdn.net/upload/201603/14/1457935998_218218.png)
微信JSAPI支付成功,回调接口没进去?
微信支付已经成功了,但是传的那个notify_url支付回调地址没进入,我把回调接口写的很简单,就system输出一下,支付后服务器都没输出。我自己直接访问那个接口服务器就可以输出。地址是外网的,域名那个地址。而且没有传参数。
微信支付开发如何在用户支付成功后在notify.php上把支付成功的订单号写进数据库
就是无法取得微信返回的xml中的out_trade_no,商户订单号
微信支付的回调url即notify_url可以是一个函数吗?
我的notify_url是一个servelet,可是我只想执行一个函数,别的不执行
安卓、ios APP调用微信支付时,页面出现空白 。(php微信支付,app发起微信支付白屏)?
安卓、ios APP调用微信支付时,页面出现空白 我的后端是用php开发的。我是先调用微信的统一下单生成,生成prepay_id预支付订单号,代码如下: <?php public function send_pay(){ //使用统一支付接口 $unifiedOrder = new UnifiedOrder_pub(); $amount = trim($this->config['money'])*100; $notify_url=$this->config['NotifyUrl']; //通知URL //设置统一支付接口参数 //设置必填参数 //appid已填,商户无需重复填写 //mch_id已填,商户无需重复填写 //noncestr已填,商户无需重复填写 //spbill_create_ip已填,商户无需重复填写 //sign已填,商户无需重复填写 //iconv("gb2312","utf-8//IGNORE", $unifiedOrder->setParameter("body",$this->config['title']);//商品描述 //自定义订单号,此处仅作举例 $out_trade_no = $this->config['code']; $create_ip = $_SERVER["REMOTE_ADDR"]; $unifiedOrder->setParameter("out_trade_no",$out_trade_no);//商户订单号 $unifiedOrder->setParameter("total_fee",$amount);//总金额 $unifiedOrder->setParameter("notify_url",$notify_url);//通知地址 $unifiedOrder->setParameter("spbill_create_ip",$create_ip);//用户端实际ip $unifiedOrder->setParameter("trade_type","APP");//APP交易类型 $unifiedOrder->setParameter("attach","111");//附加数据 //获取统一支付接口结果 $unifiedOrderResult = $unifiedOrder->getResult(); //商户根据实际情况设置相应的处理流程 if ($unifiedOrderResult["return_code"] == "FAIL") { //商户自行增加处理流程 echo "通信出错:".$unifiedOrderResult['return_msg']."<br>"; } elseif($unifiedOrderResult["result_code"] == "FAIL") { //商户自行增加处理流程 echo iconv("utf-8","gb2312//IGNORE","错误代码:".$unifiedOrderResult['err_code']."<br>"); echo iconv("utf-8","gb2312//IGNORE","错误代码描述:".$unifiedOrderResult['err_code_des']."<br>"); } elseif($unifiedOrderResult["return_code"] == "SUCCESS") { /** 成功后返回如下信息 <xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[wx2421b1c4370ec43b]]></appid> <mch_id><![CDATA[10000100]]></mch_id> <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str> <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign> <result_code><![CDATA[SUCCESS]]></result_code> <prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id> <trade_type><![CDATA[APP]]></trade_type> </xml> **/ $result = array(); $result['appid'] = $unifiedOrderResult['appid']; $result['partnerid'] = $unifiedOrderResult['mch_id']; $result['prepayid'] = $unifiedOrderResult['prepay_id']; $result['noncestr'] = $unifiedOrderResult['nonce_str']; $result['timestamp'] = time(); $result['package'] = "Sign=WXPay"; //'Sign=WXPay' $result['sign'] = $unifiedOrderResult['sign']; echo json_encode($result); exit; //商户自行增加处理流程 //...... } } ?> 将生成的下面这几个参数发给安卓、ios那边: $result['appid'] = $unifiedOrderResult['appid']; $result['partnerid'] = $unifiedOrderResult['mch_id']; $result['prepayid'] = $unifiedOrderResult['prepay_id']; $result['noncestr'] = $unifiedOrderResult['nonce_str']; $result['timestamp'] = time(); $result['package'] = "Sign=WXPay"; //'Sign=WXPay' $result['sign'] = $unifiedOrderResult['sign']; 但是,安卓、ios那边调用微信支付时居然显示空白,什么出错提示也没有,如下截图: ![图片说明](https://img-ask.csdn.net/upload/201607/28/1469675997_571548.jpg) ![图片说明](https://img-ask.csdn.net/upload/201607/28/1469676022_208092.jpg) ![图片说明](https://img-ask.csdn.net/upload/201607/28/1469676035_433067.jpg) 将上面的交易类类改为扫码支付时,生成的二维码又是可以成功支付的 已经弄了一个多星期了,卡在这里一直动不了,求大神帮忙看看,这是什么问题,万分感谢? 参考网址: http://www.cocoachina.com/bbs/read.php?tid-321546.html ​http://www.cnblogs.com/CrazySL/p/5585393.html ​http://www.xl779.com/news/zhanchangxinwen/2016/0507/197.html
用restful写微信支付,统一下单成功,返回的支付信息正确,前端支付成功,回调接口显示签名失败。
下面是统一下单设置参数的代码 ``` public WxPayUnifiedOrderResult createOrder(YsUser ysUser, YsOrder order, String attach, HttpServletRequest request) throws WxPayException { LocalDateTime now = LocalDateTime.now(); WxPayUnifiedOrderRequest payRequest = new WxPayUnifiedOrderRequest(); payRequest.setDeviceInfo("WEB"); payRequest.setBody("壹送便利店微信商城订单"); payRequest.setOutTradeNo(order.getOrderId()); payRequest.setTotalFee(BaseWxPayRequest.yuanToFen("" + order.getPayPrice())); payRequest.setAttach(attach); payRequest.setSpbillCreateIp(IPUtils.getIpAddress(request)); payRequest.setTimeStart("" + now.getYear() + String.format("%02d", now.getMonth().getValue()) + String.format("%02d",now.getDayOfMonth()) + String.format("%02d", now.getHour()) + String.format("%02d", now.getMinute()) + String.format("%02d", now.getSecond())); LocalDateTime expireTime = now.plusMinutes(10); payRequest.setTimeExpire("" + expireTime.getYear() + String.format("%02d", expireTime.getMonth().getValue()) + String.format("%02d",expireTime.getDayOfMonth()) + String.format("%02d", expireTime.getHour()) + String.format("%02d", expireTime.getMinute()) + String.format("%02d", expireTime.getSecond())); payRequest.setNotifyUrl("http://" + Constants.DOMAIN + "/payments/weixin/notify/"); payRequest.setTradeType(WxPayConstants.TradeType.JSAPI); payRequest.setOpenid(ysUser.getOpenid()); return wxPayService.unifiedOrder(payRequest); } ``` 下面是回调接口的代码 ``` @PostMapping("/weixin/notify") public WxPayNotifyResponse wepayNotify(@RequestBody String xmlData) throws WxPayException { this.logger.info("开始回调了嘛"); WxPayOrderNotifyResult payResult = wxPayService.parseOrderNotifyResult(xmlData); if (payResult != null && !StringUtils.isEmpty(payResult.getOutTradeNo())) { //订单状态确认 this.logger.info("开始处理结果了嘛"); WxPayOrderQueryResult confirmResult = wxPayService.queryOrder(null, payResult.getOutTradeNo()); if (!StringUtils.isEmpty(confirmResult.getOutTradeNo()) && confirmResult.getOutTradeNo().equals(payResult.getOutTradeNo())) { YsOrder order = orderService.findByOrderId(payResult.getOutTradeNo()); this.logger.info("找到订单了嘛"); order.setPayType(Constants.ONLINE_PAY); order.setPayStatus(Constants.PAY_ORDER); order.setPayTime(new Date()); orderService.pay(order); ylyService.print(order); } } WxPayNotifyResponse response = new WxPayNotifyResponse(); response.setReturnCode(Constants.WEPAY_NOTIFY_SUCCESS); return response; } ``` 下面是后台日志输出的回调结果 ![图片说明](https://img-ask.csdn.net/upload/201807/21/1532163842_614905.png)
H5微信支付成功但回调页面进不去0
有几个点描述下, 1.代码应该问题不大。notify_url是 http://xx.xx.com/xx/xxx/ 2.我在iis日志中发现,微信有给我服务器post 这个地址。只是代码没有调用,标识302 3.我在这个回调页中第一行代码就输出调试代码,没反应。证明调用没有进来过。 有没有人能提供个线索,还有就是怎么能获取所有post服务器iis的全路径。
微信支付回调sign与发送的sign不一致
我使用的是微信**官方的PHP微信支付demo** 可以正常生成支付二维码,也可以正常支付。 但是发送的签名和回调页面接收的签名不一致! 比如: 发送的数据如下: ( [values:protected] => Array ( [appid] => wx76f7cd2ec7b8ab2d [attach] => test [body] => test [goods_tag] => test [mch_id] => 1488792332 [nonce_str] => 8qr8mtclw9jy8xba2rvhcq32vc8wk2do [notify_url] => http://xxx.xxx.com/wxpay/callback [out_trade_no] => 148879233220171115161152 [product_id] => 123456789 [spbill_create_ip] => 192.168.1.37 [time_expire] => 20171115162152 [time_start] => 20171115161152 [total_fee] => 1 [trade_type] => NATIVE [sign] => BB76D04E3DCAD9CE70257E3ACC9151D2 ) 返回的数据如下: array ( 'appid' => 'wx76f7cd2ec7b8ab2d', 'attach' => 'test', 'bank_type' => 'CFT', 'cash_fee' => '1', 'fee_type' => 'CNY', 'is_subscribe' => 'Y', 'mch_id' => '1488792332', 'nonce_str' => '8qr8mtclw9jy8xba2rvhcq32vc8wk2do', 'openid' => 'oBKxE1S1yV9LbhVE6u50Jd0Uu_uM', 'out_trade_no' => '148879233220171115161152', 'result_code' => 'SUCCESS', 'return_code' => 'SUCCESS', 'sign' => 'FA8ECA45F2AB40D7ABEC5A0D7308ADC8', 'time_end' => '20171115161214', 'total_fee' => '1', 'trade_type' => 'NATIVE', 'transaction_id' => '4200000028201711154840327436', ) 可以看到sign字段不一致!求大神解答!
c#.net jsapi微信支付提示缺少参数total_fee
页面 <script type="text/javascript"> wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '<%=AppId %>', // 必填,公众号的唯一标识 timestamp: "<%=Timer %>", // 必填,生成签名的时间戳 nonceStr: "<%=RdCode %>", // 必填,生成签名的随机串 signature: "<%=GetSignature() %>", // 必填,签名,见附录1 jsApiList: ['chooseWXPay'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function () { wx.chooseWXPay({ appId: '<%=AppId %>', timestamp: '<%=Timer %>', nonceStr: '<%=RdCode %>', package: 'prepay_id=<%=prepay_id%>', signType: 'MD5', paySign: '<%=paySign %>', success: function (res) { }, cancel: function () { }, error: function (e) { } }); }); </script> 后台 public void GetprepayIdAndpaySign() { //公众账号ID string appid = AppId; //商品描述 string OrderCode = DateTime.Now.ToString("yyyyMMddHHmmss"); string body = "订单号:" + OrderCode; //商户号 string mch_id = "1262625001"; //随机字符串 string nonce_str = RdCode; //通知地址-接收微信支付成功通知 string notify_url = "http://a.k-bean.com/notify_url.aspx"; //用户标识 -用户在商户appid下的唯一标识 string openid = OpenId; //商户订单号 string out_trade_no = OrderCode; //下单IP string spbill_create_ip = GetIP(this.Context); //总金额 分为单位 int total_fee = 1; //交易类型 -JSAPI、NATIVE、APP 如果是生成二维码请填写NATIVE string trade_type = "JSAPI"; //微信签名 string tmpStr = "appid=" + appid + "&body=" + body + "&mch_id=" + mch_id + "&nonce_str=" + nonce_str + "&notify_url=" + notify_url + "&openid=" + openid + "&out_trade_no=" + out_trade_no + "&spbill_create_ip=" + spbill_create_ip + "&total_fee=" + total_fee + "&trade_type=" + trade_type + "&key=" + key + ""; string Getprepay_idSign = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "MD5").ToUpper(); string url = "https://api.mch.weixin.qq.com/pay/unifiedorder"; string xml = "<xml>"; xml += "<appid>" + appid + "</appid>"; xml += "<body>" + body + "</body>"; xml += "<mch_id>" + mch_id + "</mch_id>"; xml += "<nonce_str>" + nonce_str + "</nonce_str>"; xml += "<notify_url>" + notify_url + "</notify_url>"; xml += "<openid>" + openid + "</openid>"; xml += "<out_trade_no>" + out_trade_no + "</out_trade_no>"; xml += "<spbill_create_ip>" + spbill_create_ip + "</spbill_create_ip>"; xml += "<total_fee>" + total_fee + "</total_fee>"; xml += "<trade_type>" + trade_type + "</trade_type>"; xml += "<sign>" + Getprepay_idSign + "</sign>"; xml += "</xml>"; string v = PostWebRequests(url, xml); //获取的prepay_id prepay_id = v; //获取paySign,请对照前后台的大小写 string v_tmpStr = "appId=" + appid + "&nonceStr=" + RdCode + "&package=prepay_id=" + v + "&signType=MD5&timeStamp=" + Timer + "&key=" + key + ""; paySign = FormsAuthentication.HashPasswordForStoringInConfigFile(v_tmpStr, "MD5").ToUpper(); }
微信支付返回“签名失败”的XML。
在日志里找到的post出去的XML ``` <xml><appid><![CDATA[手动打码]]></appid><attach><![CDATA[test]]></attach><body><![CDATA[test-test]]></body><mch_id><![CDATA[手动打码]]></mch_id><nonce_str><![CDATA[0782fe5a427b4e3bb87b182e72fca660]]></nonce_str><notify_url><![CDATA[http://pyxsl.pyxfgj.com/WeChat/ResultNotifyPage.aspx]]></notify_url><openid><![CDATA[oJqqU0gpjt1qpw6E-30q6LxRFi9Y]]></openid><out_trade_no><![CDATA[151531509120181017094502161]]></out_trade_no><sign><![CDATA[098C23600F929B8C0F7833F75DE3165B]]></sign><spbill_create_ip><![CDATA[8.8.8.8]]></spbill_create_ip><time_expire><![CDATA[20181017095502]]></time_expire><time_start><![CDATA[20181017094502]]></time_start><total_fee>1</total_fee><trade_type><![CDATA[JSAPI]]></trade_type></xml> ``` 返回的XML ``` <xml><return_code><![CDATA[FAIL]]></return_code> <return_msg><![CDATA[签名错误]]></return_msg> </xml> ``` 用这个post出去的XML在官方的微信支付接口签名校验工具里面的结果 ![图片说明](https://img-ask.csdn.net/upload/201810/17/1539742765_374921.png) 什么鬼啊 大佬求救啊
微信 支付,{return_msg=mch_id参数格式错误, return_code=FAIL}
{return_msg=mch_id参数格式错误, return_code=FAIL} 这个错误是怎么犯的啊, 如何解决 ,求前辈们指教。在线等。。。。。 我的商户号对了好几遍,没有错误啊,不就是 申请成功后给的商户号吗。而且我把商户号这个参数去掉了,它还是报这个错误。 //发起微信支付请求 public static String httpsRequest(String requestUrl, String requestMethod, String outputStr) { try { URL url = new URL(requestUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); System.out.println(conn); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); // 设置请求方式(GET/POST) conn.setRequestMethod(requestMethod); conn.setRequestProperty("content-type", "application/x-www-form-urlencoded"); // 当outputStr不为null时向输出流写数据 if (null != outputStr) { OutputStream outputStream = conn.getOutputStream(); // 注意编码格式 outputStream.write(outputStr.getBytes("UTF-8")); System.out.println("999999999999999999999"+outputStream); outputStream.close(); } System.out.println("!!!!!!!!!!"+conn); // 从输入流读取返回内容 InputStream inputStream = conn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@"+inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null; StringBuffer buffer = new StringBuffer(); while ((str = bufferedReader.readLine()) != null) { System.out.println("121232"+str); buffer.append(str); } // 释放资源 bufferedReader.close(); inputStreamReader.close(); inputStream.close(); inputStream = null; conn.disconnect(); return buffer.toString(); } catch (ConnectException ce) { System.out.println("连接超时:{}"+ ce); } catch (Exception e) { System.out.println("https请求异常:{}"+ e); } return null; } //微信统一下单参数设置 public static String WXParamGenerate(String description,String out_trade_no,double total_fee,String product_id) throws Exception{ int fee = (int)(total_fee * 100.00); Map<String,String> param = new HashMap<String,String>(); param.put("appid",ConstantUtil.APP_ID); param.put("mch_id",ConstantUtil.MCH_ID); param.put("nonce_str",NonceStr()); //随机字符串 param.put("body",description); //商品描述 param.put("out_trade_no",out_trade_no); //商户订单号 param.put("total_fee",fee+""); //金额 param.put("spbill_create_ip",GetIp()); //获取Ip param.put("notify_url",ConstantUtil.WEIXIN_NOTIFY); //获取回调函数 param.put("trade_type","MWEB"); //支付类型 《H5支付》 param.put("product_id",product_id+""); //商品ID //获取签名 String sign = GetSign(param); param.put("sign", sign); /* StringBuffer d =new StringBuffer(); String dd =parseMapToXml(d,param); System.out.println("45645465465645465645"+dd);*/ return GetMapToXML(param); } 生成的xml <xml> <sign>![CDATA[861D4992EB4C8C1E044EE874DB241A84]]</sign> <body>![CDATA[sdfsdf]]</body> <mch_id>![CDATA[1236523159]]</mch_id> <product_id>![CDATA[1]]</product_id> <spbill_create_ip>![CDATA[10.100.1.20]]</spbill_create_ip> <total_fee>![CDATA[100]]</total_fee> <notify_url>![CDATA[http://www.weixin.com/mobile/weixin/weixin_pay_result.jsp]] </notify_url> <appid>![CDATA[wx6a1ed640f5a09b19]]</appid> <out_trade_no>![CDATA[1509506925f3981795-af0c-4931-af3a-3c8b7f732433]] </out_trade_no> <nonce_str>![CDATA[MC4zMjcxMzY1NDU1MjM1MDE3OjpXZW]]</nonce_str> <trade_type>![CDATA[MWEB]]</trade_type> </xml>
thinkphp3.2整合微信扫码支付模式二不执行回调
最近在用tp框架开发了一个微信支付的功能,现在的情况是能进行支付,但是并不执行我写的那个回调地址,哪位可以帮忙看看是怎么回事? ![图片说明](https://img-ask.csdn.net/upload/201711/28/1511836067_524470.jpg) 上面这个是我执行的回调路径 ![图片说明](https://img-ask.csdn.net/upload/201711/28/1511836096_24415.jpg) 这个是我在微信设置的回调 ![图片说明](https://img-ask.csdn.net/upload/201711/28/1511836173_65339.jpg) 这个是我做的pay.php,当访问到这里的时候会跳转到Wxpay控制器的notify方法。如果单独访问这个php,是可以在控制台输出success的,但是如果微信扫码完成以后,就不会输出,是不是就是没执行,还有 ![图片说明](https://img-ask.csdn.net/upload/201711/28/1511836315_957120.jpg) 这个是微信回调notify函数,我将返回的数据存入到了test.txt中,发现什么都没有,如果单独访问pay.php,test.txt中会有11,这更加说明了回调根本就没有执行,求解!
微信公众号jsApi支付问题
**支付目录:**http://testmecom.hhit.com.cn/mecom/micromall/page/wxPrePay.jsp **测试授权目录:**http://testmecom.hhit.com.cn/mecom/micromall/page/ **统一下单支付请求:** <com.trendcom.mecom.micromall.wxpay.model.UnifiedOrderReqData> <appid>****</appid> <mch_id>****</mch_id> <nonce_str>8fu8Z1206x9Bz5270ioAxdD2L23u066T</nonce_str> <sign>54B7F7BA12812F958E97844650543EE2</sign> <body>亲,请仔细核对交易金额,以免失误!</body> <out_trade_no>db331NIA2644817U59o3679891F077O2</out_trade_no> <total_fee>1</total_fee> <spbill_create_ip>219.136.133.131</spbill_create_ip> <notify_url>http://testmecom.hhit.com.cn/mecom/wxpay!notifyUrl.action</notify_url> <trade_type>JSAPI</trade_type> <openid>oneDCuL44fxwh-BNB_aC3xIBvnjA</openid> <product_id>10311106</product_id> </com.trendcom.mecom.micromall.wxpay.model.UnifiedOrderReqData> **统一下单返回结果:** <xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[****]]></appid> <mch_id><![CDATA[****]]></mch_id> <nonce_str><![CDATA[SbGmWWImFwvlh13z]]></nonce_str> <sign><![CDATA[8C123495A6777C95C24D976762F51CFA]]></sign> <result_code><![CDATA[SUCCESS]]></result_code> <prepay_id><![CDATA[wx201507301403575355b478720900716820]]></prepay_id> <trade_type><![CDATA[JSAPI]]></trade_type> </xml> ** h5请求:** function onBridgeReady(appId, timestamp, nonceStr, packages, signType, paySign) { WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId": appId, //公众号名称,由商户传入 "timeStamp": timestamp, //时间戳,自1970年以来的秒数 "nonceStr": nonceStr, //随机串 "package": packages, "signType": signType, //微信签名方式: "paySign": paySign //微信签名 }, function (res) { WeixinJSBridge.log(res.err_msg); alert(res.err_msg); ---->get_brand_wcpay_request:fail if (res.err_msg == "get_brand_wcpay_request:ok") { // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。 window.location.href = "${basePath}/mecom/MmOrderAction!findOrderListPageInfo.action?dataType=unsend" } } ); } 问题描述:公众号支付,在客户端使用H5网页端调起支付(jsApi),错误信息:get_brand_wcpay_request:fail,有知道怎么解决这个问题的大神吗?请指教
微信H5支付-提示“支付请求已失效,请重新发起支付”
各位大神们,目前我开发微信h5支付功能时,调用统一下单接口可以调通,但是我一访问 统一下单接口返回的mweburl链接就提示我_“支付请求已失效,请重新发起支付”, _哪位大神知道这是什么原因导致的吗?跪谢!!!!! 接口参数: <body>测试产品</body> <product_id>HNFX1525310398908</product_id> <spbill_create_ip>127.0.0.1</spbill_create_ip> <sign_type>MD5</sign_type> <notify_url>http://XXXXX.com&lt;/notify_url> <appid>wxa8bdcbc0da868b5b</appid> <time_start>20180725094241</time_start> <fee_type>CNY</fee_type> <nonce_str>e75aabd53f004d3991b421a203db7d03</nonce_str> <out_trade_no>CPS_ZJ20180725094238284596</out_trade_no> <device_info>WEB</device_info> <trade_type>MWEB</trade_type> <sign>D3FB49878218BC29311259E4106C6B14</sign> <time_expire>20180726094241</time_expire> <mch_id>1503939161</mch_id> <total_fee>1</total_fee> <scene_info>{"h5_info" :{"type":"Wap","wap_url":"http://XXX.com","wap_name":"XXXX"}}</scene_info>
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
阿里面试官问我:如何设计秒杀系统?我的回答让他比起大拇指
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
Android性能优化(4):UI渲染机制以及优化
文章目录1. 渲染机制分析1.1 渲染机制1.2 卡顿现象1.3 内存抖动2. 渲染优化方式2.1 过度绘制优化2.1.1 Show GPU overdraw2.1.2 Profile GPU Rendering2.2 卡顿优化2.2.1 SysTrace2.2.2 TraceView 在从Android 6.0源码的角度剖析View的绘制原理一文中,我们了解到View的绘制流程有三个步骤,即m...
微服务中的Kafka与Micronaut
今天,我们将通过Apache Kafka主题构建一些彼此异步通信的微服务。我们使用Micronaut框架,它为与Kafka集成提供专门的库。让我们简要介绍一下示例系统的体系结构。我们有四个微型服务:订单服务,行程服务,司机服务和乘客服务。这些应用程序的实现非常简单。它们都有内存存储,并连接到同一个Kafka实例。 我们系统的主要目标是为客户安排行程。订单服务应用程序还充当网关。它接收来自客户的请求...
致 Python 初学者们!
作者| 许向武 责编 | 屠敏 出品 | CSDN 博客 前言 在 Python 进阶的过程中,相信很多同学应该大致上学习了很多 Python 的基础知识,也正在努力成长。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 Python 这门编程语言,从2009年开始单一使用 Python 应对所有的开发工作,直至今...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
SpringBoot2.x系列教程(三十六)SpringBoot之Tomcat配置
Spring Boot默认内嵌的Tomcat为Servlet容器,关于Tomcat的所有属性都在ServerProperties配置类中。同时,也可以实现一些接口来自定义内嵌Servlet容器和内嵌Tomcat等的配置。 关于此配置,网络上有大量的资料,但都是基于SpringBoot1.5.x版本,并不适合当前最新版本。本文将带大家了解一下最新版本的使用。 ServerProperties的部分源...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
爬取薅羊毛网站百度云资源
这是疫情期间无聊做的爬虫, 去获取暂时用不上的教程 import threading import time import pandas as pd import requests import re from threading import Thread, Lock # import urllib.request as request # req=urllib.request.Requ...
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
HTML5适合的情人节礼物有纪念日期功能
前言 利用HTML5,css,js实现爱心树 以及 纪念日期的功能 网页有播放音乐功能 以及打字倾诉感情的画面,非常适合情人节送给女朋友 具体的HTML代码 具体只要修改代码里面的男某某和女某某 文字段也可自行修改,还有代码下半部分的JS代码需要修改一下起始日期 注意月份为0~11月 也就是月份需要减一。 当然只有一部分HTML和JS代码不够运行的,文章最下面还附加了完整代码的下载地址 &lt;!...
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问