将Demo下载下来,放到你的eclipse中,不要急着跑起来,因为跑起来就坑爹了. 这个时候你要做一件事,就是将Demo里面有一个debug.keystore文件拷贝出来,覆盖掉你自己的 .android 的文件夹里面的debug.keystore,这个时候你跑起Demo就会用到他提供的debug.keystore来签名了. 另外一种方法也是可以的,在你的eclipse>>window>>preferences >>android >> build >> custom debug keystore 选择Demo里面的keystore. 这个时候你就可以试这跑你的demo的.
2.为什么要用Demo里面的debug.keystore呢? 我之前也是直接集成进去,就开始跑. 他就给我报一个-1 ,啥?啥?啥? -1是什么错啊……… 微信开发文档中有提到,但是太笼统了,你也不知道什么问题? 最后只能自己慢慢找资料. 原来微信会根据你的 包名+ 应用名 +keystore 生成联合key来判断你当前用到他的支付的应用,是否有在他的平台上注册. 意思就是说:你的应用要在微信的商家平台上面注册,并且通过申请,才能去支付,如下图所示: 当然我也不是商家,肯定不能通过,因为这申请要填很多的信息的.有兴趣的可以去试试. 所以我们用他的demo就只能用他提供的debug.keystore来测试了,否则(重点哦,后果会是什么): 如果你不用他提供的debug.keystore ,那么你就不能支付,即使你换回用他的debug.keystore,也没有用了(因为它把数据保存到了微信里面).这个时候,我们就付出一点代价,把微信卸载,清空微信的数据,这个时候,你就发现可以用咯.
1.第一步:创建你的应用 2.第二部:将上面demo中的jar包拷贝进去 3.开始写代码了:四步走
<1.请求服务器数据 请求公司后台服务器,拿到appid(微信平台审核通过的appid),partnerid(微信支付分配的商户号),prepayid(微信返回的支付交易回话id),package(固定值Sign=WXPay),noncestr(随机生成的字符串),timestamp(时间戳),sign(签名); <2.解析数据 将上面的数据解析出来填到下面提交支付的代码中 <3.提交支付 PayReq request = new PayReq(); request.appId = appid; request.partnerId = partnerid; request.prepayId = prepayid; request.packageValue = "Sign=WXPay"; request.nonceStr =noncestr; request.timeStamp = timestamp; request.sign = sign; Log.e("TAG", "checkArgs=" + request.checkArgs());// 这个只有在true的情况才有可能调起支付页面。 Boolean re = msgApi.sendReq(request); <4.同步返回,异步通知 这个就不写,直接从微信扣皮下 [https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5] 参照微信SDK Sample,在net.sourceforge.simcpux.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),在WXPayEntryActivity类中实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准 public void onResp(BaseResp resp){ if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){ Log.d(TAG,"onPayFinish,errCode="+resp.errCode); AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder.setTitle(R.string.app_tip); } }