100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【Android】解决微信调起支付接口没反应 调不起来微信的问题

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

时间:2022-12-29 09:44:34

相关推荐

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

一、前言

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

二、可能引起这种情况的问题

1. 极小概率

你的APPID和商户号写错了。appid是你open.里你设置的应用的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-zhunifiedorder.setBody("weimabang shopping");//order_id就是订单号parameters.put("out_trade_no", "0405120603");//我这里的订单号只是举个例子,不要一直用这一个,千万不能写死unifiedorder.setOut_trade_no("0405120603");//我这里的订单号只是举个例子,不要一直用这一个,千万不能写死//总金额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 = "";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() {@Overridepublic void onError(Call call, Exception e) {}@Overridepublic 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));}});}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。