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

//#前言

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

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

1. 最不能出现的

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

2. 最可能出现的

你应用的签名弄错了,这里坑比较多。

* 当你直接用AndroidStudio调试,在手机上直接Run的时候,用给的那个签名软件,获取到签名更新到你应用信息的这里:



* 当你在另外一台电脑上调试的时候,你的应用的签名其实是会改变的,所以用那个签名软件,获取到签名后,再次更新到你的应用的信息里。

* 当你的APP开发的差不多了,需要发布(Generate Signed APK)时,先安装到一台手机上,然后获取签名,再次更新到你的应用的信息里。

3. 也有很大可能出现的

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

可能对你有些帮助的

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

我的代码提供参考

  1. public void onClick(View view) {
  2. Unifiedorder unifiedorder = new Unifiedorder();
  3. final SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
  4. parameters.put("appid", ConstantStrings.APP_ID);
  5. unifiedorder.setAppid(ConstantStrings.APP_ID);
  6. parameters.put("mch_id", ConstantStrings.MCH_ID);
  7. unifiedorder.setMch_id(ConstantStrings.MCH_ID);
  8. //获取随机数的方法
  9. String nonce_str = Utils.getNonce_str();
  10. parameters.put("nonce_str", nonce_str);
  11. unifiedorder.setNonce_str(nonce_str);
  12. parameters.put("body", "weimabang shopping");//not support cn-zh
  13. unifiedorder.setBody("weimabang shopping");
  14. //order_id就是订单号
  15. parameters.put("out_trade_no", "20170405120603");//我这里的订单号只是举个例子,不要一直用这一个,千万不能写死
  16. unifiedorder.setOut_trade_no("20170405120603");//我这里的订单号只是举个例子,不要一直用这一个,千万不能写死
  17. //总金额
  18. parameters.put("total_fee", 1);//单位是分
  19. unifiedorder.setTotal_fee("1");
  20. //ip地址
  21. parameters.put("spbill_create_ip", "123.123.123.123");
  22. unifiedorder.setSpbill_create_ip("123.123.123.123");
  23. //支付成功的回调地址
  24. String notify_url = "http://www.baidu.com";
  25. parameters.put("notify_url", notify_url);
  26. unifiedorder.setNotify_url(notify_url);
  27. parameters.put("trade_type", "APP");
  28. unifiedorder.setTrade_type("APP");
  29. //方法生成的sign值
  30. String sign = Utils.createSign(parameters);
  31. unifiedorder.setSign(sign);
  32. OkHttpUtils.postString().content(XMLHelper.getXMLFromUnifiedorder(unifiedorder))
  33. .url(ConstantStrings.UNIFORMORDERURL).build().execute(new StringCallback() {
  34. @Override
  35. public void onError(Call call, Exception e) {
  36. }
  37. @Override
  38. public void onResponse(Call call, String s) {
  39. //返回值
  40. //Toast.makeText(PayActivity.this, s, Toast.LENGTH_LONG).show();
  41. int startIndex=s.indexOf("prepay_id");
  42. startIndex=s.indexOf("wx",startIndex);
  43. int endIndex=s.indexOf("]",startIndex);
  44. String prepayID=s.substring(startIndex,endIndex);
  45. Log.d("jim","data is "+s);
  46. Log.d("jim","prepay id is "+prepayID);
  47. String nonceStr=Utils.getNonce_str();
  48. String timeStamp=System.currentTimeMillis()/1000+"";
  49. final SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
  50. parameters.put("appid",ConstantStrings.APP_ID);
  51. parameters.put("partnerid",ConstantStrings.MCH_ID);
  52. parameters.put("prepayid",prepayID);
  53. parameters.put("package","Sign=WXPay");
  54. parameters.put("noncestr",nonceStr);
  55. parameters.put("timestamp",timeStamp);
  56. String sign=Utils.createSign(parameters);
  57. IWXAPI api= WXAPIFactory.createWXAPI(PayActivity.this,ConstantStrings.APP_ID);
  58. PayReq request=new PayReq();
  59. request.appId=ConstantStrings.APP_ID;
  60. request.partnerId = ConstantStrings.MCH_ID;
  61. request.prepayId= prepayID;
  62. request.packageValue = "Sign=WXPay";
  63. request.nonceStr= nonceStr;
  64. request.timeStamp= timeStamp;
  65. request.sign= sign;
  66. Log.d("jim","check args "+request.checkArgs());
  67. Log.d("jim","send return :"+api.sendReq(request));
  68. }
  69. });
  70. }

【Android】解决微信调起支付接口没反应,调不起来微信的问题的更多相关文章

  1. 微信小程序支付接口之Django后台

    本文链接:https://blog.csdn.net/qq_41860162/article/details/89098694Python3-django-微信小程序支付接口调用工具类生成一系列微信官 ...

  2. 微信支付接口开发之---微信支付之JSSDK(公众号支付)步骤

    1.准备     1.1.公众号为服务号,开通微信支付功能     1.2.为了方便调试微信后台的回调URL(必须为外网),我用了nat123软件来做一个映射     1.3.官方微信开发的示例WxP ...

  3. 黄聪:详解申请微信h5支付方法,开通微信h5网页支付接口(转)

    版权声明:图文并茂的微信小程序教程!欢迎转载,请保留作者名字和链接:商业合作请联系子恒老师助理 QQ : 2334512685 https://blog.csdn.net/towtotow/artic ...

  4. 详解申请微信h5支付方法,开通微信h5网页支付接口(转)

    现在大街小巷的商家都在使用微信支付,但是一些商家使用的是个人微信收款,这个虽然很便利,但是如果你想要数据统计汇总,让客户在网络上在线付款,就需要用到微信的h5支付. 微信h5支付 今天子恒老师跟你分享 ...

  5. ThinkPHP微信扫码支付接口

    最近折腾微信扫码支付,看了微信官方文档,找了很多网页,发现和文档/demo不匹配,现在自己算是弄出来了(文件名称有所更改),贴出来分享一下 一.将有用的官方lib文件和使用的相关文件放置到vendor ...

  6. 如何对接payjs的个人微信扫码支付接口

    在众多个人支付接口的产品中,要寻找一个稳定可靠的产品是比较难的,所幸遇到payjs,感觉逼格较高,非常满足自己的品味.推荐大家使用.下边是我在对接payjs的过程中的一些经验和技巧,分享给大家. 一. ...

  7. 小程序红包开发跳坑记 微信小程序红包接口开发过程中遇到的问题 微信小程序红包开发

    现在做小程序的越来越多,商家推广也是一个瓶颈,谁不发点红包,都很难找到人来用你的微信小程序了.于是不管你开发什么小程序功能,你或多或少都要用到小程序来发红包吧.  我们自己之前做公众号发红包,做了两三 ...

  8. 微信公众号支付(三):页面调用微信支付JS并完成支付

    一.调用微信的JS文件 1.首先要绑定[JS接口安全域名],“公众号设置”的“功能设置”中 2.引入JS文件 备注:支持使用 AMD/CMD 标准模块加载方法加载 <script type=&q ...

  9. 微信支付接口调用问题(android正常,iphone调不起)

    转自:http://blog.csdn.net/tt123123/article/details/53897035 碰到的问题 :根据微信提供的示例代码(ASP.NET),配置好一切后, 用andro ...

随机推荐

  1. hadoop2.7全然分布式集群搭建以及任务測试

    要想深入的学习hadoop数据分析技术,首要的任务是必需要将hadoop集群环境搭建起来,本文主要讲述怎样搭建一套hadoop全然分布式集群环境. 环境配置:2台64位的redhat6.5 +  1台 ...

  2. 【30.23%】【codeforces 552C】Vanya and Scales

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  3. [Angular Directive] Structure directive and <template>

    The structure directive is just a sugar syntax of <template>. Such as: <div *ngIf="nam ...

  4. python启动应用程序和终止应用程序

    python启动应用程序和终止应用程序 1. 目的 每天上班,工作需要,电脑上需要每天开机启动一些软件,下班时候,需要关掉一些软件.一个一个打开和关闭貌似是很繁琐的,于是乎,这个脚本产生了. 2. 环 ...

  5. html5-1 网页结构描述

    html5-1 网页结构描述 一.总结 一句话总结:注意head中的title,keywords,description,这对seo优化很有帮助 1.如何给某元素动态使用类似onclick方法? 点o ...

  6. Qt Roadmap for 2018(对3D有很多改进)

    When it comes to new features, we have many things ongoing related to graphics, so I’ll start with t ...

  7. 小强的HTML5移动开发之路(36)——jQuery中的DOM操作

    1.查询 利用选择器查找节点 使用 html() / text() / attr() 输出节点文本和属性值. 注意:下拉列表使用 val() <html> <head> < ...

  8. 一个封装了的选项卡效果js

    转载自:http://www.cnblogs.com/skyblue/archive/2008/04/26/1171968.html <!DOCTYPE HTML PUBLIC "-/ ...

  9. C/C++ 常量的定义与应用(编程中的常量)

    常量一般定义为全局变量,且大写: 1. 字符串常量 const string EXPAND_X = "X+YF"; const string EXPAND_Y = "FX ...

  10. 深度学习实战 Tricks

    1. 梯度消失与梯度爆炸 gradient clipping 梯度爆炸:min(grad_max,grad) grad_max:梯度上限 梯度消失:max(grad_min, grad) grad_m ...