微信支付报错参数问题,急! 一只眼睛视力突然下降正常,突然出错得。

每当我集成一个第三方的东西的时候,我习惯把过程写下来,这样不管是留给后人还是以后自己再遇到的是都可以再翻翻看。1.官方demo 下载下来,跑一一遍支付成功了,然后再重试,先获得token,通过,可是跳转的时候提示“返回-1”。你大爷我什么都没改好不好?(另外,可见微信支付SDK一点也不智能,给我这个提示鬼知道是什么错误啊!)这个是keystore问题,替换下key,id改下keystore文件即可。2. &五个重要参数:PARTNER_KEY,APP_SECRET,APP_KEY,APP_ID,PARTNER_ID。只有一个APP_SECRET没有替换,然后获取token就出错了。提示:“获取assces_token出错,原因ERR_JSON”。我擦。仔细翻代码,发现APP_SRCRET错了!ok!把APP_SECRET替换掉之后通过。3. 然后,妈蛋,token获取成功了,获取预付订单的时候,提示“获取prepayid失败,原因ERR_JSON”。log如下:doInBackground, content = {&errcode&:,&errmsg&:&签名错误&}-----好了,发现我走投无路了。-----那么开始分析一下原因,这里提示是json错误!根据以前集成支付宝的时候的经验,可以推断如下原因:a.key的不对,b.包名不对,c.我这里的订单号是之前用过的了,妈蛋微信是不可能让你个大傻X重复支付的。d.是我RP不行! &4.仔细看下:发现订单号是随机生成的,排除d。PayActivity.class339行 & & &partner& &这里他们的demo竟然是写死的卧槽。草泥马。 &改Constants.PARTNER_ID &好了。5.然后运行通过上面的问题了。报错 &冷尼玛 这个错误是什么吊东西 。什么都没有好吗? {&errcode&:1001,&errmsg&:&&}6。谷哥一下,发现 &total_fee &这个我给改成0.01是不对的。好吧!根据我做支付宝的概念,1是1元,不是1分,而微信是的。然后改回来之后发现跳转到支付页面了。如图:&&&7.支付完成,想一下逻辑。妈蛋不对劲,按照支付宝的流程,支付完成应该有个回调的,来通知我已经支付完成了。可是没有回调成功,我擦你大爷的。 &百度上谷歌了一下,发现了这个贴了 &/?p=393& 。微信开放平台有个 不成文的规定(文档里没有说明),就是回调的Activity必须是:你的包名(微信demo里是:net.sourceforge.simcpux)+.wxapi.WXPayEntryActivity.java哎呀!我操!这就是鹅厂的作风。你妹。我辣油厂要干掉鹅厂!回调不成功的问题就是需要加一个.wxapi.WXPayEntryActivity。8.根据上面这个帖子我发现还是不能成功,添加如下代码到Mainfast里面就行了。& & & &&&activity
android:name=&.wxapi.WXPayEntryActivity&
android:exported=&true&
android:launchMode=&singleTop&
android:configChanges=&keyboardHidden|orientation&
android:screenOrientation=&portrait&
android:theme=&@style/TransparentActivity&
&&!--设置为 singleTop 你懂得 --&
&/activity&所以我需由于我不想写在同一个Activity中,所以我重新写了一个页面,但是我又不想给用户看到新开了一个页面。所以,我弄了一个半透明的style。@style/TransparentActivityOK! 客户端流程走完了,那么接下来就是要为了做安全性设计,把一些重要的东西放到服务器生生成,这样是为防止客户端被反编译。反编译之后,带来的就是别人拿到key 模拟支付过程,把某个订单号支付完成。那么,腾讯那边收到钱就会同时给客户端 和我们自己的服务器发送请求。那么,我们自己的服务器收到腾讯的通知之后,就会把这个订单的状态置为已经支付。呵呵!说的蛮顺嘴的,你听懂了吗 &?就是因为订单信息在我们的服务器上,腾讯不知道订单的价格,他只管收钱就行了。也就是支付的时候100元的订单,修改价格为1元之后,也可以支付成功。问题就在这里。官方的代码里面 是建议genPackage 这个方法在服务端生成。这里只是一个签名在服务端生成。 &那么依据之前做支付宝的逻辑,签名和一堆body什么字段都在服务端生成吧!所以我跟做服务器的说,这个方法genProductArgs()。也在服务端生成吧。这样我什么都不管。PS: genProductArgs的时候,发现很多key,id都返回回来了仔细想想发现微信在保护的不过是PARTNER_KEY。我这边支付都走通了之后,就是跟web人员交流一些东西在服务端生成的啦!因为安全性的问题,很多东西不得不在服务端生成。接下来是服务端遇到的问题1. 老是提示签名错误,和上面的代码一样的。后来web开发人员,发现是他的文件编码还有字节流编码。官方的的里,有个UTF-8 &大小写的问题。2.后来还是出错,发现body里不能用特殊字符,“&_ ,”等字符都不行的 。//PS:总结微信支付流程1.启动异步线程GetPrepayIdTask,用httpGet方式,获得临时token。2.把获得的token传给GetPrepayIdTask线程。3.genProductArgs服务器给我这么一堆代码{& & &dataMap&: {& & & & &appid&: &wxd1d8a8d23dc5384784&,& & & & &noncestr&: &69b4fa3be19bdf400df34e41b93636a4&,& & & & &package&: &Sign=bank_type=WX&body=%E8%A3%85%E7%94%B5%E8%84%91%E7%B3%BB%E7%BB%9F%7C&fee_type=1&input_charset=UTF-8?ify_url=http%3A%2F%2F114.215.204.15%3A8080%2Fayly_web%2FencryptService%2FmicroMsgReturn.action&out_trade_no=&partner=&sign=EEEFAFEC&spbill_create_ip=121.237.253.44&total_fee=1&,& & & & &partnerid&: &&,& & & & &prepayid&: &edb1ecc3a86ce&,& & & & &sign&: &fcd132ab7a491fc9f57db0bd230a3&,& & & & &timestamp&: &&& & },& & &desc&: &取支付信息成功!&,& & &result&: 1}我直接修改sendPayReq()方法。在sendPayReq里面掉微信就行了。安全性刚刚的!(^_^)&&国之画&&&& &&&&
版权所有 京ICP备号-2
迷上了代码!}

我要回帖

更多关于 一只耳朵突然耳鸣 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信