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

简介: 原文:【Android】解决微信调起支付接口没反应,调不起来微信的问题 //#前言 吐槽一下,微信支付的sdk真难用,文档混乱,坑不少。
原文: 【Android】解决微信调起支付接口没反应,调不起来微信的问题

//#前言
吐槽一下,微信支付的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));

                    }
                });
                }
目录
相关文章
|
2月前
|
监控 Devops Java
大型IM工程重构实践:企业微信Android端的重构之路
本文将探讨我们在大型IM工程实践中采用的一些行之有效的重构方法和实例,以及如何让一个大型软件系统持续保持活力。
48 0
|
8月前
|
小程序 Android开发 iOS开发
微信小程序-虚拟支付:适用场景 / iPhone调试用支付成功,Android调用失败,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”
微信小程序-虚拟支付:适用场景 / iPhone调试用支付成功,Android调用失败,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”
255 0
|
10月前
|
数据采集 缓存 前端开发
漏刻有时数据可视化大屏常见问题(4)手机端数据采集ajax安卓手机安卓微信浏览器无法跳转的问题解决方案
漏刻有时数据可视化大屏常见问题(4)手机端数据采集ajax安卓手机安卓微信浏览器无法跳转的问题解决方案
79 0
|
11月前
|
前端开发 Android开发
Android高仿qq及微信底部菜单的几种实现方式
Android高仿qq及微信底部菜单的几种实现方式
|
11月前
|
小程序 JavaScript 前端开发
基于安卓Android微信小程序的校园报修管理APP
本文论述了校园报修管理小程序的设计和实现,该网站从实际运用的角度出发,运用了计算机网站设计、数据库等相关知识,基于微信小程序和Mysql数据库设计来实现的,网站主要包括用户注册、用户登录、查看通知公告,并进行报修,对维修信息进行评价、缴费等,以及维修工注册、维修工登录,查看报修信息并上门维修等,管理员可以对用户信息、维修工信息、报修、维修等信息进行管理。网站界面进行了人性化的设计,操作简单具有一定的使用价值。任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场进行调研,论文需求进行分析,概要设计,系统详细设计,测试和编码等步骤,设计并实现了疫苗接种预约系统小程序。系统选用B/S
133 0
|
移动开发 JavaScript Android开发
通过howler.js实现在Android下的微信浏览器自动播放音频
通过howler.js实现在Android下的微信浏览器自动播放音频
410 0
通过howler.js实现在Android下的微信浏览器自动播放音频
|
XML Java Android开发
Android 实战之模拟微信首页界面 (java实现)
Android 实战之模拟微信首页界面 (java实现)
562 0
Android 实战之模拟微信首页界面 (java实现)
|
Android开发
android 微信支付 简单实用
android 微信支付 简单实用
627 0
|
测试技术 Android开发
Android 微信登录授权、微信分享
Android 微信登录授权、微信分享
380 0
|
Android开发 iOS开发
Android - 安卓设备在微信中播放视频结束后出现广告的解决办法
Android - 安卓设备在微信中播放视频结束后出现广告的解决办法
169 0