【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工程实践中采用的一些行之有效的重构方法和实例,以及如何让一个大型软件系统持续保持活力。
49 0
|
8月前
|
小程序 Android开发 iOS开发
微信小程序-虚拟支付:适用场景 / iPhone调试用支付成功,Android调用失败,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”
微信小程序-虚拟支付:适用场景 / iPhone调试用支付成功,Android调用失败,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”
263 0
|
5月前
|
Web App开发 JSON Android开发
【Android App】实战项目之仿微信的视频通话(附源码和演示 超详细必看)
【Android App】实战项目之仿微信的视频通话(附源码和演示 超详细必看)
116 0
|
5月前
|
JSON 定位技术 Android开发
【Android App】实战项目之仿微信的附近的人(附源码和演示 超详细)
【Android App】实战项目之仿微信的附近的人(附源码和演示 超详细)
35 0
|
5月前
|
JSON 网络协议 Android开发
【Android App】实战项目之仿微信的私信和群聊App(附源码和演示视频 超详细必看)
【Android App】实战项目之仿微信的私信和群聊App(附源码和演示视频 超详细必看)
110 3
|
5月前
|
XML Java 数据库
Android App开发实战之实现微信记账本(附源码 超详细必看)
Android App开发实战之实现微信记账本(附源码 超详细必看)
50 0
|
10月前
|
数据采集 缓存 前端开发
漏刻有时数据可视化大屏常见问题(4)手机端数据采集ajax安卓手机安卓微信浏览器无法跳转的问题解决方案
漏刻有时数据可视化大屏常见问题(4)手机端数据采集ajax安卓手机安卓微信浏览器无法跳转的问题解决方案
81 0
|
11月前
|
前端开发 Android开发
Android高仿qq及微信底部菜单的几种实现方式
Android高仿qq及微信底部菜单的几种实现方式
|
11月前
|
小程序 JavaScript 前端开发
基于安卓Android微信小程序的校园报修管理APP
本文论述了校园报修管理小程序的设计和实现,该网站从实际运用的角度出发,运用了计算机网站设计、数据库等相关知识,基于微信小程序和Mysql数据库设计来实现的,网站主要包括用户注册、用户登录、查看通知公告,并进行报修,对维修信息进行评价、缴费等,以及维修工注册、维修工登录,查看报修信息并上门维修等,管理员可以对用户信息、维修工信息、报修、维修等信息进行管理。网站界面进行了人性化的设计,操作简单具有一定的使用价值。任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场进行调研,论文需求进行分析,概要设计,系统详细设计,测试和编码等步骤,设计并实现了疫苗接种预约系统小程序。系统选用B/S
136 0
|
11月前
|
小程序 JavaScript 前端开发
基于安卓Android微信小程序的汽车租赁小程序-app
随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,汽车租赁小程序就是信息时代变革中的产物之一。任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于Java语言、微信小程序技术设计并实现了汽车租赁小程序。系统主要包括系统首页、个人中心、用户管理、驾驶证管理、车辆品牌管理、车辆信息管理、预约租赁管理、汽车租赁管理、还车信息管理、费用结算管理、系统管理等功能模块。本文首先介绍了汽车租赁小
219 0