-
微信支付不回调
2018-01-26 16:48:26在使用项目的过程中发现微信支付为回调,排查代码未发现问题。 最后在发现属于不符合微信规范。 微信要求回调地址,必须符合在公众平台配置的支付路径。 如: 公众平台配置路径为: www.xxx.com/pay 则回调...在使用项目的过程中发现微信支付为回调,排查代码未发现问题。
最后在发现属于不符合微信规范。
微信要求回调地址,必须符合在公众平台配置的支付路径。
如:
公众平台配置路径为:
www.xxx.com/pay
则回调路径必须为www.xxx.com/pay/开头的地址:
www.xxx.com/pay/paytype1
www.xxx.com/pay/paytype2 -
微信支付不回调方法。
2020-12-26 08:53:12<div><p> 支付成功和取消支付后都不回调onPaySuccess和onPayCancel()方法。是什么原因呢。提供的Demo也是一样。</p><p>该提问来源于开源项目:Javen205/JPay</p></div> -
Android开发中微信支付不回调
2017-04-01 11:53:44没找到原因。网上说WXPayEntryActivity类要建立在包名.wxapi下,我确定自己建立的没有错误,为什么就是不行 -
微信支付不回调支付成功的方法,这是为什么
2016-08-04 10:33:00如果你是Xcode7.2,或者IOS9.2的话,可能会遇见在微信客户端操作返回程序之后不能执行微信的onResp回调方法的问题,就是因为一下这两个方法被废弃掉了,所以我的新demo替换了一个新的方法在下面。就完美解决这个问题...如果你是Xcode7.2,或者IOS9.2的话,可能会遇见在微信客户端操作返回程序之后不能执行微信的onResp回调方法的问题,就是因为一下这两个方法被废弃掉了,所以我的新demo替换了一个新的方法在下面。就完美解决这个问题了(并不建议删除这两个方法,新方法是9.0以后的方法,可能系统低版本的用户不支持。所以我三种方法都留下了,如果有人发现不能都留下的话,请简信告诉我一下,再次谢过了)
//被废弃的方法如下-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;-(BOOL)application:(UIApplication *)application openURL:(NSURL *)urlsourceApplication:(NSString *)sourceApplicationannotation:(id)annotation;
//替换的新方法改用方法为- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options;
-
微信JSAPI支付回调notify的踩坑处理;微信支付回调调试方法
2019-04-15 07:24:23微信支付方式有很多,在公众号开发中比较常用的就是用JSAPI进行支付处理,方便快捷,官网提供的有sdk,接入方面比较简单,不做说明,或有时间了再整理吧,着重总结下在处理支付结果通知的方面遇到的恶心问题。...微信支付方式有很多,在公众号开发中比较常用的就是用JSAPI进行支付处理,方便快捷,官网提供的有sdk,接入方面比较简单,不做说明,或有时间了再整理吧,着重总结下在处理支付结果通知的方面遇到的恶心问题。
项目框架:tp5
头部引入微信支付类:
//微信支付类 use wxpay\database\WxPayUnifiedOrder; use wxpay\database\WxPayOrderQuery; use wxpay\JsApiPay; use wxpay\NativePay; use wxpay\PayNotifyCallBack; use wxpay\WxPayApi; use wxpay\WxPayConfig;
jsapi中支付回调域名:
$tools = new JsApiPay(); $openId = $member_session['openid']; //本站域名 $web_url = "http://".$_SERVER['HTTP_HOST']; //统一下单 $input = new WxPayUnifiedOrder(); $input->setBody("支付".($order_info['need_pay'])."元"); $input->setAttach("test"); $input->setOutTradeNo($out_trade_no); $input->setTotalFee($order_info['need_pay']*100); $input->setTimeStart(date("YmdHis")); $input->setTimeExpire(date("YmdHis", time()+600)); $input->setGoodsTag("Reward"); $input->setNotifyUrl($web_url."/index/base/notify/"); $input->setTradeType("JSAPI"); $input->setOpenid($openId); $order = WxPayApi::unifiedOrder($input); $jsApiParameters = $tools->getJsApiParameters($order);
踩坑一:回调域名中不能有参数,当时我为了方便,把订单id放到回调域名里面准备当做参数接收的,不可取
踩坑二:回调域名需要外网能访问【说了句废话】,同时不能有登陆等验证,比方说我放到会员控制器里面,结果在方法初始化的时候检测不到用户名结果做了302重定向,那这个回调域名就压根起不到作用了,所以我放在base公共页面里面用以接收。
base.php
因为有的服务器环境限制,file_get_contents无法使用,另外加上php7好像又限制了$GLOBALS['HTTP_RAW_POST_DATA']获取流文本,所以最好的方式就是把两个都加上:
$post = input("post."); if ($post == null) { $post = file_get_contents("php://input"); } if ($post == null) { $post = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : ''; }
至少保证有一个方法能获取到数据。
同时,因为支付通知是异步进行的,所以如何检测返回的信息是否正确以及对信息进行处理就变得比较重要了,这个地方我用的是写入日志文件:将支付信息以天为单位,存到文件夹中,如果文件夹不存在,则创建并赋予777权限
define('BASE_PATH',$_SERVER['DOCUMENT_ROOT']); $dir = BASE_PATH.'/backdata/'.date("Ymd")."/"; if(!file_exists($dir)){ mkdir($dir,0777,true); } file_put_contents($dir."backdata.txt",$post,FILE_APPEND);
如果不出权限意外,在指定文件夹里面应该能看到这样的数据:
<xml><appid><![CDATA[wx01158658e84b2546]]></appid> <attach><![CDATA[test]]></attach> <bank_type><![CDATA[CFT]]></bank_type> <cash_fee><![CDATA[10]]></cash_fee> <fee_type><![CDATA[CNY]]></fee_type> <is_subscribe><![CDATA[Y]]></is_subscribe> <mch_id><![CDATA[10035664]]></mch_id> <nonce_str><![CDATA[o33ez6qc4tdrlyl9vfcgegn47o5qfgeh]]></nonce_str> <openid><![CDATA[olrMRuIULa1k_GKC7XwLWPlH0IA8]]></openid> <out_trade_no><![CDATA[1003566420190415060218]]></out_trade_no> <result_code><![CDATA[SUCCESS]]></result_code> <return_code><![CDATA[SUCCESS]]></return_code> <sign><![CDATA[1FECDE9E69F7897AC0B2ED0D64CA75E0]]></sign> <time_end><![CDATA[20190415060225]]></time_end> <total_fee>10</total_fee> <trade_type><![CDATA[JSAPI]]></trade_type> <transaction_id><![CDATA[4200000277201904150652983274]]></transaction_id> </xml>
接下来就是处理接收到的xml数据了
调试技巧:返回上面xml数据后,可以将最开始的接收数据注释掉,然后用 file_get_contents 将刚获取并存入文件的xml数据当做数据源赋值给$post,然后就能直接进行下面的调试操作,非常方便。
libxml_disable_entity_loader(true); //禁止引用外部xml实体 $xml = simplexml_load_string($post, 'SimpleXMLElement', LIBXML_NOCDATA);//XML转数组 $post_data = (array)$xml; //订单号 $out_trade_no = isset($post_data['out_trade_no']) && !empty($post_data['out_trade_no']) ? $post_data['out_trade_no'] : 0; //查询订单信息 $order_info = Loader::model("Member")->order_info('',$post_data['out_trade_no']); //var_dump($order_info);exit; if(count($order_info) > 0 && $order_info['pay_status']==1){ //平台支付key $wxpay_key = ''; //接收到的签名 $post_sign = $post_data['sign']; unset($post_data['sign']); //重新生成签名 $newSign = $this->MakeSign($post_data,$wxpay_key); //签名统一,则更新数据库 if($post_sign == $newSign){ $pay_status = 2; Loader::model("Member")->update_order($pay_status,$order_info['ordernum']); } } public function MakeSign($params,$key){ //签名步骤一:按字典序排序数组参数 ksort($params); $string = $this->ToUrlParams($params); //参数进行拼接key=value&k=v //签名步骤二:在string后加入KEY $string = $string . "&key=".$key; //签名步骤三:MD5加密 $string = md5($string); //签名步骤四:所有字符转为大写 $result = strtoupper($string); return $result; } public function ToUrlParams( $params ){ $string = ''; if( !empty($params) ){ $array = array(); foreach( $params as $key => $value ){ $array[] = $key.'='.$value; } $string = implode("&",$array); } return $string; }
在操作完订单后,应该返回微信一个通知,让他不要再重复推送
$str='<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'; echo $str;exit;
至此,大功告成。
-
微信支付退款回调
2018-11-22 11:52:43这个步骤做过微信支付的都会就不说了 2、对加密串 req_info 做base64解码,得到加密串B (类型为byte[]) byte B[] = Base64.decode(reqInfo); 3、对商户key做md5,得到32位小写key* ( key设置路径:微信...四个步骤
1、将微信返回的xml数据转换成map,获取 req_info
这个步骤做过微信支付的都会就不说了
2、对加密串 req_info 做base64解码,得到加密串B (类型为byte[])
byte B[] = Base64.decode(reqInfo);
3、对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 )
SecretKeySpec key = new SecretKeySpec(MD5Util.MD5Encode(appKey,"utf-8").toLowerCase().getBytes(), "AES");
4、用key*对加密串B做AES-256-ECB解密
public static String decryptData(byte[] b, SecretKeySpec key) throws Exception { Cipher cipher = null; cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE,key); return new String(cipher.doFinal(b),"utf-8"); }
将得到的xml数据再转化成map即可。我并未遇到 “当使用PKCS7Padding 进行解密时报错: Cannot find any provider supporting AES/ECB/PKCS7Padding” 此情况。
最后 由于春运快到了,给大家安利一个抢火车票的小程序心到抢票,微信扫码关注点击立即抢票即可
个人亲测效率很高,抢票块,价格便宜,大家也可以加他们官方微信 xdticket 咨询。
-
微信支付WXPayEntryActivity 不回调
2018-10-16 10:58:51微信支付同步回调不回调问题记录 1.微信支付官方文档 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 第三方的东西都是比较简单的,直接看官方文档就可以,无论支付宝支付还是微信支付,客户端... -
支付宝支付和微信支付异步回调一直调用
2017-11-15 14:57:53最近公司在开发微信支付和支付宝支付,前期的工作都已经做好了,但是在异步回调取值的时候,异步回调一直在调用,弄得我数据一直重复的存入数据库,真觉得大姨妈来了,根本停不下来!哈哈,还是不要开车了,看到问题... -
微信支付获取回调的结果
2020-08-03 10:26:59支付完成支付我们的notify_url指定我们一个接口,用来做支付之后的回调,根据回调返回的信息去修改相对应的订单状态,我这里只说明了获取回调结果,具体订单怎么操作就看需求了 话不多说,上代码 // 微信回调 @... -
微信支付异步回调地址只有一个怎么办
2019-09-25 14:06:01如题:微信支付异步回调地址只能设置一个。但是在实际开发中,一个公司往往有好几个项目需要微信支付相关的业务,不同的项目有不同的域名解析。 多申请几个微信公众号显然过于浪费,且不利于财务的统一管理。 方法... -
微信支付重复回调
2018-11-29 13:01:40这个问题困扰了几天,问了很多人,网上也查...//所有输出必须为success,且输出必须使用echo方式且需要exit停止后续程序否则重复回调,return只返回值不能输出值 ini_set('date.timezone', 'Asia/Shanghai'); $xml... -
微信开发-微信支付-回调(notify_url)失败-解决思路
2017-07-01 20:40:12微信支付跟支付回调是分开的。支付回调通常是微信收款成功后,回调你的php接口(带上$attach_data),在php接口中你根据$attach_data将购买的信息存到数据库。但微信并不保证支付回调一定成功。回调不成功时,微信会... -
ios浏览器微信支付回调页面_iOS开发总结-微信支付回调
2021-01-14 15:42:45前言微信支付成功之后,会弹出一个支付成功的界面,点击返回返回我们的APP,我们才能接受到成功通知,当点击苹果左上角返回键是不走成功回调的,当然双击home键直接跳回我们的APP也是不走回调的解决思路需要在进入... -
微信支付,回调demo
2017-10-30 17:21:33首先 这个微信支付 官网的demo 是有bug的 研究了好几天 吸取了一些大神的指点才成功,还有csdn一些人发的代码都不全太坑,资源还少,今天我就整合一下, 把我的一些心得分享给大家 。 之前遇到的一些问题: ... -
微信支付无法回调 APP端
2016-08-25 07:40:43微信支付服务端的回调网上已经有很多例子了,如果你一直专注于服务端开发,那么应该是非常轻松的搞定,就是别忘了对业务数据处理加锁,因为微信会重复发来消息通知而造成数据重入的混乱。我想说说手机端Android开发... -
django 微信支付成功回调url(notify_url)
2019-01-22 07:56:37django 微信支付成功回调url(notify_url) 微信支付成功后,会访问notify_url这个地址,让你处理支付成功后的业务逻辑,微信会访问这个地址8次,直到notify_url返回个SUCCESS。 但是这个notify_url不能带参数,这个... -
Android集成支付——微信支付,能调启微信为何调启不了微信支付问题
2018-09-21 17:48:522、调启不了微信支付/调启微信支付闪退并跳转到回调页进行提示失败问题,这个问题的多半是签名的问题!!! 签名问题的由来: 这个签名问题出在哪里,需要去定位。因为官方的开发文档并没有说... -
081 关于微信支付的回调Notify_url
2018-06-29 12:41:30https的改成http,你可以在地址栏打一下这个回调地址,一定不能有错! notify_url不能有参数,外网可以直接访问,不能有访问控制(比如必须要登录才能操作),并且这个文件不能有错误啊。大部分都是这点没做到吧。... -
微信公众号开发--微信支付的回调函数
2017-06-14 16:23:42开发微信支付功能的时候出现了一个问题:可以正常支付,但是却不执行预先设置好的回调函数。 然后我打开服务端日志看了一眼有来自腾讯的调用,最后找到原因,原来是因为我没有将该调用地址加入拦截器的白名单,然后... -
ios浏览器微信支付回调页面_iOS 9.0后微信支付回调处理实例
2021-01-14 15:42:46如果是iOS 9.0之前,处理微信回调时,首先在APPDelegate中写如下的代码://iOS 9.0 之前的处理方法不保证正确,如有错误还望指正- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url source... -
微信支付并回调跳转成功页面的实现思路
2020-05-09 09:48:30当我们微信支付成功后有一个回调函数,可以去对订单进行某些处理。但是我们前端与后端是分离的,我们必须从前端再发送一个请求去询问是否已经支付成功,下面是解决这个问题的一些方法。 ajax短轮询(常用) 每隔几... -
关于微信支付的回调问题
2016-11-22 01:35:43在我跳转支付的页面,我写了个button,叫“去支付~” 点击时若用户登录,然后直接跳转到支付界面,若用户没有登录则登录之后...现在想:用户登录之后直接跳转到支付界面,并不返回我的app,等支付成功后,再返回。求解 -
前后端分离的支付宝支付回调和微信支付回调
2020-07-10 17:44:17公司有支付宝和微信支付的需求,所以花了点时间研究了一下 首先 我们的需求是前后端分离的支付功能(包括微信和支付宝),这个碰了几个坑,不多说 支付宝支付回调问题: 1、支付宝需要传的参数中有两个为... -
Java微信支付一直回调解决办法,好用,来看
2020-02-26 16:57:41Java微信支付一直回调解决办法 现在的百度十分不靠谱啊,有的说返回官方的那一串可行,有的说直接返回"SUCCESS"可行,还有的说把官方的那串转成xml再返回可行,然后就试了一下午,一个也不好用! 其实返回这一串就行了~~... -
微信支付:回调地址notify_url不能带参数
2015-10-22 09:47:00支付环节是正常的,微信端能收到支付成功的系统提示,然而回调url始终收不到微信服务器的POST,经过手动测试,回调页面的逻辑也没有问题。 问题究竟出在哪呢,忽然想到在开发者中心里面可以扫码加入一个接口报警群... -
ios浏览器微信支付回调页面_iOS集成H5微信支付实现跳转与回调的解决方案
2021-01-14 15:42:47前言最近有个需求,不能在iOS...这篇讲的是H5微信支付如何从App跳转微信以及如何从微信跳转回App,支付宝的见这篇:iOS集成支付宝H5支付实现跳转与回调的解决方案实现的效果是:App→微信→支付(成功失败或取消)... -
java接受微信回调_SpringMvc微信支付回调示例代码
2021-02-28 19:37:11介绍大家都知道微信支付的回调链接要求不能跟参数,但又要接收返回的xml数据。我开始使用@RequestBody注解在参数上,希望能获取xml数据,测试失败。最后使用HttpServletRequest去获取数据成功了。示例代码@... -
关于unity接入android微信支付无法回调的坑。
2020-04-26 11:46:26由于unity接入微信的安卓...懂点安卓的unity开发者在制作微信支付的过程中都会先看看微信自带的安卓工程的demo,但是奈何没啥注释,文档那也是相当节省文字。所以在自己的改造过程中要注意2点。 1.包名要和unity项... -
ios浏览器微信支付回调页面_iOS H5微信支付和微信支付完成之后跳转回APP
2021-01-14 15:42:44最近碰到一个需要用H5支付的商城,痛苦了一整天,查找了N多的资料,终于还是苦尽甘来了。话不多说,干货来了。我用的是WKWebView,套路是一样的。1.首先,设置白名单,确保你能顺利跳转微信。设置白名单2.在webView的... -
关于微信支付后回调验证的处理
2019-08-09 09:47:00参考来源: https://www.php.cn/php-weizijiaocheng-407545.html https://blog.csdn.net/rain_silently/article/details/79390377 ... 废话不多说,直接上代码:...