[위 챗 결제 가 밟 은 구덩이 들] 1. Android 위 챗 결제, body 는 중국어 문자, 서명 오류

1752 단어 지불 기능
질문: body 셀 프 세그먼트 가 영어 문자열 로 설정 되 었 을 때 서명 이 성 공 했 지만 중국어 문자 로 설정 되 었 을 때 서명 오류 가 발생 했 습 니 다.
해결 방법: 맞 춤 법 을 바 꾼 후 xml 문자열 형식 을 "ISO 8859 - 1" 로 바 꿉 니 다.
private String genProductArgs() {
		StringBuffer xml = new StringBuffer();
		
		try {
			String	nonceStr = genNonceStr();

			xml.append("");
           List packageParams = new LinkedList();
			packageParams.add(new BasicNameValuePair("appid", Constants.APP_ID));
			packageParams.add(new BasicNameValuePair("body", "  "));
			packageParams.add(new BasicNameValuePair("mch_id", Constants.MCH_ID));
			packageParams.add(new BasicNameValuePair("nonce_str", nonceStr));
			packageParams.add(new BasicNameValuePair("notify_url", "  notify_url"));
//			packageParams.add(new BasicNameValuePair("out_trade_no",genOutTradNo()));
			packageParams.add(new BasicNameValuePair("out_trade_no",ordercode)); 
			packageParams.add(new BasicNameValuePair("spbill_create_ip","127.0.0.1"));
			packageParams.add(new BasicNameValuePair("total_fee", price));
			packageParams.add(new BasicNameValuePair("trade_type", "APP"));

			String sign = genPackageSign(packageParams);
			packageParams.add(new BasicNameValuePair("sign", sign));


		   String xmlstring =toXml(packageParams);
		   
		   //      xml         body         
           return new String(xmlstring.toString().getBytes(), "ISO8859-1");

		} catch (Exception e) {
			Log.e("genProductArgs", "genProductArgs fail, ex = " + e.getMessage());
			return null;
		}
		

	}

좋은 웹페이지 즐겨찾기