关闭

【Android】解决微信调起支付接口没反应,调不起来微信的问题

标签: android微信支付
5220人阅读 评论(1) 收藏 举报
分类:

//#前言
吐槽一下,微信支付的sdk真难用,文档混乱,坑不少。

正文:可能引起这种情况的问题

1. 最不能出现的

你的APPID和商户号写错了。appid是你open.weixin.qq.com里你设置的应用的id。

2. 最可能出现的

你应用的签名弄错了,这里坑比较多。
* 当你直接用AndroidStudio调试,在手机上直接Run的时候,用给的那个签名软件,获取到签名更新到你应用信息的这里:
更新到应用签名处
* 当你在另外一台电脑上调试的时候,你的应用的签名其实是会改变的,所以用那个签名软件,获取到签名后,再次更新到你的应用的信息里。
* 当你的APP开发的差不多了,需要发布(Generate Signed APK)时,先安装到一台手机上,然后获取签名,再次更新到你的应用的信息里。

3. 也有很大可能出现的

其实这个具体是怎么引起的我也不知道,有时候你重启下手机或者清理下微信的缓存,就会发现,竟然能调起来微信了。对,就是这么神奇!!

可能对你有些帮助的

在下面的代码中通过查看request.checkArgs())和api.sendReq(request)的返回值,帮助你定位错误。

我的代码提供参考

public void onClick(View view) {
                Unifiedorder unifiedorder = new Unifiedorder();
                final SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
                parameters.put("appid", ConstantStrings.APP_ID);
                unifiedorder.setAppid(ConstantStrings.APP_ID);
                parameters.put("mch_id", ConstantStrings.MCH_ID);
                unifiedorder.setMch_id(ConstantStrings.MCH_ID);
                //获取随机数的方法
                String nonce_str = Utils.getNonce_str();
                parameters.put("nonce_str", nonce_str);
                unifiedorder.setNonce_str(nonce_str);
                parameters.put("body", "weimabang shopping");//not support cn-zh
                unifiedorder.setBody("weimabang shopping");
                //order_id就是订单号
                parameters.put("out_trade_no", "20170405120603");//我这里的订单号只是举个例子,不要一直用这一个,千万不能写死
                unifiedorder.setOut_trade_no("20170405120603");//我这里的订单号只是举个例子,不要一直用这一个,千万不能写死
                //总金额
                parameters.put("total_fee", 1);//单位是分
                unifiedorder.setTotal_fee("1");
                //ip地址
                parameters.put("spbill_create_ip", "123.123.123.123");
                unifiedorder.setSpbill_create_ip("123.123.123.123");
                //支付成功的回调地址
                String notify_url = "http://www.baidu.com";
                parameters.put("notify_url", notify_url);
                unifiedorder.setNotify_url(notify_url);
                parameters.put("trade_type", "APP");
                unifiedorder.setTrade_type("APP");
                //方法生成的sign值
                String sign = Utils.createSign(parameters);
                unifiedorder.setSign(sign);


                OkHttpUtils.postString().content(XMLHelper.getXMLFromUnifiedorder(unifiedorder))
                        .url(ConstantStrings.UNIFORMORDERURL).build().execute(new StringCallback() {
                    @Override
                    public void onError(Call call, Exception e) {

                    }

                    @Override
                    public void onResponse(Call call, String s) {
                        //返回值
                        //Toast.makeText(PayActivity.this, s, Toast.LENGTH_LONG).show();

                        int startIndex=s.indexOf("prepay_id");
                        startIndex=s.indexOf("wx",startIndex);
                        int endIndex=s.indexOf("]",startIndex);
                        String prepayID=s.substring(startIndex,endIndex);


                        Log.d("jim","data is "+s);
                        Log.d("jim","prepay id is "+prepayID);

                        String nonceStr=Utils.getNonce_str();
                        String timeStamp=System.currentTimeMillis()/1000+"";
                        final SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
                        parameters.put("appid",ConstantStrings.APP_ID);
                        parameters.put("partnerid",ConstantStrings.MCH_ID);
                        parameters.put("prepayid",prepayID);
                        parameters.put("package","Sign=WXPay");
                        parameters.put("noncestr",nonceStr);
                        parameters.put("timestamp",timeStamp);
                        String sign=Utils.createSign(parameters);

                       IWXAPI api= WXAPIFactory.createWXAPI(PayActivity.this,ConstantStrings.APP_ID);
                        PayReq request=new PayReq();

                        request.appId=ConstantStrings.APP_ID;
                        request.partnerId = ConstantStrings.MCH_ID;
                        request.prepayId= prepayID;
                        request.packageValue = "Sign=WXPay";
                        request.nonceStr= nonceStr;
                        request.timeStamp= timeStamp;
                        request.sign= sign;
                        Log.d("jim","check args "+request.checkArgs());
                        Log.d("jim","send return :"+api.sendReq(request));

                    }
                });
                }
0
0
查看评论

android 微信 sdk api调用不成功解决方案 api.sendReq(localReq );

有一位博主写得非常好:路径如下: http://blog.csdn.net/hxg130435477/article/details/8395441
  • wuqilianga
  • wuqilianga
  • 2015-12-15 17:49
  • 4324

微信分享无反应问题可能是因为这个

换了个图片资源微信分享就没反应了!坑爹的开始还以为是超过了微信规定的32k大小,结果错误出在了微信的Util.bmpToByteArray();默认的CompressFormat.PNG !而我的是JEPG了~ 默哀此坑,而QQ分享的直接可以是一个图片地址的url,方便多了!public vo...
  • qq_33529011
  • qq_33529011
  • 2017-04-20 14:45
  • 1028

【Android】解决微信调起支付接口没反应,调不起来微信的问题

前言吐槽一下,微信支付的sdk真难用,文档混乱,坑不少。可能引起这种情况的问题1. 最不能出现的你的APPID和商户号写错了。appid是你open.weixin.qq.com里你设置的应用的id。2. 最可能出现的你应用的签名弄错了,这里坑比较多。 * 当你直接用AndroidStudio调试,...
  • catshitone
  • catshitone
  • 2017-06-23 10:49
  • 5220

微信分享 突然就 没反应,不好使的问题

微信分享这个功能在好几个版本迭代之前就做好了,测试也ok了,一起好好的. 突然,前端弄了个新的html5活动,就发现 微信分享就突然不好使了,点击的没反应, MyBaseApplication.wXapi.sendReq(req) 返回的是false.  最后找到了原因,原来是 分...
  • heming9174
  • heming9174
  • 2017-07-03 15:57
  • 481

微信遇到的一些问题

这两天项目又用到微信,这次半路接手,发现之前的代码调不起来微信,后台是重新申请的appid并审核通过的,试了好几次都不行,就是没反应,网上有说还是参数值不对,但是和后台对了对,没有错,partnerId,appId都没错,该传的也传了,这些都是后台返回的。前端也可以签名,但是推荐是后台返回。 最后...
  • baidu_31308653
  • baidu_31308653
  • 2018-01-19 17:06
  • 16

微信支付-支付验证签名失败,跳转无响应等

微信支付比起支付宝支付感觉要麻烦很多,或者微信内部实现更严谨吧 ,下面来说说微信支付过程中遇到的一些问题:1、运行[WXApi sendReq:req];,运行这句代码就是跳转微信,调起支付,但是发现并没有跳转微信,没有任何反应,任何错误提示都没有解决方法: 查看调起微信支付是所传的参数是否有问题,...
  • Kaiccy
  • Kaiccy
  • 2017-12-21 16:35
  • 661

微信分享[WXApi sendReq:req]失败原因

在做微信分享时按照文档一步步设置,最后真机调试点击分享却没任何反应。 最后一个方法 微信分享,返回值为NO. [WXApi sendReq:req]; 后来终于找到了原因,是因为该方法图片设置问题。 [message setThumbImage:[UIImage ima...
  • u013886407
  • u013886407
  • 2017-04-28 21:46
  • 2405

iOS微信支付[WXApi sendReq:req]调用小技巧

微信支付碰到一些小坑记录下。 凡是涉及到第三方的东西个人都是比较简单的东西。例如,支付宝,微信,京东支付,百度钱包等。.虽然简单,但是在开发的过程中,可能出现这样那样的问题滴。今天就我在微信过程中碰到的问题记录下。 1.首先把微信支付down下来,然后添加进去,目前不支持pods,然后把相关的框...
  • defuliu66
  • defuliu66
  • 2015-12-24 17:07
  • 3728

微信支付无法调起支付页面的部分原因

今天,调了下微信支付,因为看了些微信支付的demo 和文章,基本上都已配置好了,可是一直都无法调起微信支付的页面,搞了很久终于搞好了,所以稍微记下,以免今后出现同样的问题。 主要注意的问题有: 1.先检查签名和包名是否正确,在微信上注册的是你打包后的签名,所以你最好打包出来测,如果你没有打包...
  • tell_m
  • tell_m
  • 2016-10-11 10:41
  • 9717

Android微信支付无法掉起支付的原因

1.第一种原因就是上边的这些参数有问题。一般都是秘钥有问题。需自己登陆商家版后台修改  2.需要知道微信支付是需要打包才能运行。这也是蛋疼的一点,测试只能通过log和Toast来推断。掉不起来可以去微信开放平台看自己配置的参数是否正确。 3.微信支付跟支付宝支付不一样。微信支付...
  • a940659387
  • a940659387
  • 2015-10-13 10:16
  • 12864
    个人资料
    • 访问:206183次
    • 积分:2788
    • 等级:
    • 排名:第14688名
    • 原创:90篇
    • 转载:18篇
    • 译文:1篇
    • 评论:36条
    文章分类
    最新评论