微信支付开发。遇到问题,求解。

Prometheusbxb 发布于 2016/06/21 11:55
阅读 562
收藏 1

最近在做微信支付开发。遇到了点问题。

<xml>
  <appid>wxe94e1*******</appid>
  <body>3</body>
  <mch_id>1337678***</mch_id>
  <nonce_str>f6cdd75f44ba46dcbe7a2e2eeaef3578</nonce_str>
  <notify_url>http://localhost:8080/wxpay/payResultServlet<;/notify_url>
  <out_trade_no>1</out_trade_no>
  <spbill_create_ip>127.0.0.1</spbill_create_ip>
  <total_fee>2</total_fee>
  <trade_type>NATIVE</trade_type>
  <sign>1F428BB8455419364A5AD2EE******</sign>
</xml>

这是我的xml内容。在官网页测试通过了。

代码测试的时候怎么回签名错误呢,传入的xml格式一样。经过ascii码排序的。


但是他返回的却是签名错误。

这是代码!

public static String sendPost(String url, String param) {
		PrintWriter out = null;
		BufferedReader in = null;
		String result = "";
		try {
			URL realUrl = new URL(url);
			// 打开和URL之间的连接
			HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
			// 发送POST请求
			conn.setRequestMethod("POST");
			conn.setDoOutput(true);
			conn.setUseCaches(false);
			// 获取URLConnection对象对应的输出流
			out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(),"UTF-8"));
			// 发送请求参数
			out.print(param);
			out.flush();
			// 定义BufferedReader输入流来读取URL的响应
			in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String line;
			while ((line = in.readLine()) != null) {
				result += line;
			}
		} catch (Exception e) {
			log.info("发送 POST 请求出现异常!" + e);
			e.printStackTrace();
		}
		// 使用finally块来关闭输出流、输入流
		finally {
			try {
				if (out != null) {
					out.close();
				}
				if (in != null) {
					in.close();
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
		return result;



求解,求解!!
加载中
0
就是个精虫上脑的地方
P
Prometheusbxb
编码没有问题,都一致。
0
腾讯公告
腾讯公告
估计是商户key错误,注意商户key的获取位置
P
Prometheusbxb
能排除的地方喔都排出了一遍,感觉没什么错的,可能就是商户key的原因吧。
0
Shellexec
Shellexec

找到微信sdk内jssdk.php

第94,95行,ssl验证

改为

P
Prometheusbxb
谢啦,我用的是java。
0
M
Mr_Han1024
你可以用微信在线调试工具生成签名,然后再用你自己的代码签名比较一下是否一致,如果不一致,有可能是对大小写的排序跟微信官方的排序不一样导致的
返回顶部
顶部