微信支付app

最近老大要上微信支付,将相应的key申请下来后,就开始工作了。一开始,看了一下app里面的接口说明,但是里面都是提到Android该如何处理,而没有提到服务端的接口该如何处理。所以就直接把服务端demo的代码放到工程里面了。

就这样,开始了无头苍蝇的漫步,乱飞~~~。


一开始,吧appkey 、appsecret 等参数都直接发给客户端了。后面才看到 【注意:appsecret、appkey、partnerkey 不应硬编码到客户端程序中,建议需要用到这三个字段的过程都在服务器端完成】╮(╯▽╰)╭,要怪就怪自己没细看文档。。。。。。。。


接着,相关的参数都直接由服务端生成了,然而传到客户端,在调用微信支付的时候报-2。看来,又出事了。用了最笨的方法来校验:不用服务端的数据,直接用appkey 、appsecret来调用微信支付(不用问阿贵,肯定能成功。。。。。);


然后对比一下代码,才知道要把代码给修改一下:


//获取prepayId
		String prepayid = prepayReqHandler.sendPrepay();
		//吐回给客户端的参数
		if (null != prepayid && !"".equals(prepayid)) {
			//输出参数列表
			clientHandler.setParameter("appid", ConstantUtil.APP_ID);
			clientHandler.setParameter("appkey", ConstantUtil.APP_KEY);
			clientHandler.setParameter("noncestr", noncestr);
			//clientHandler.setParameter("package", "Sign=" + packageValue);
			clientHandler.setParameter("package", "Sign=WXPay");
			clientHandler.setParameter("partnerid", ConstantUtil.PARTNER);
			clientHandler.setParameter("prepayid", prepayid);
			clientHandler.setParameter("timestamp", timestamp);
			//生成签名
			sign = clientHandler.createSHA1Sign();
			clientHandler.setParameter("sign", sign);

			xml_body = clientHandler.getXmlBody();
			retcode = 0;
			retmsg = "OK";
		} else {
			retcode = -2;
			retmsg = "错误:获取prepayId失败";
		}

就是这句:
clientHandler.setParameter("package", "Sign=WXPay");

要修改为:

//clientHandler.setParameter("package", "Sign=" + packageValue);
因为【注意:appsecret、appkey、partnerkey 不应硬编码到客户端程序中,建议需要用到这三个字段的过程都在服务器端完成】,故服务端要把 sign 等重要参数生成,再传给客户端。

修改完成后,再试,o 耶。。。。,能调用了。

然后,在支付成功后,却发现,回调报错:

后台调用通信失败

找啊,找啊,最后,发现 String key 的key给搞错了,本应该是:PARTNER_KEY //商户号对应的密钥  却被我用了APP_SECRET//应用对应的凭证


真是被自己给搞晕。。。


另外,在查看的过程中,发现access_token的请求是有限制的,故。。。得固化到数据库中了.


以上就是这两天在调微信支付遇到的一些错误,最后,建议在处理过程,先看官方接口文档(底部):


公众开发者文档

http://mp.weixin.qq.com/wiki/index.php?title=首页

提到token的频率

http://mp.weixin.qq.com/wiki/index.php?title=接口频率限制说明


评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值