java提供接口给app微信支付遇到得坑

调取统一下单接口时,金额参数total_fee参数单位为分,不允许有小数点

当调取完微信支付统一下单接口后,会返回xml结果,把xml解析为map,再次对其结果进行md5加密生成sign,但是,参数必须是按照 参数名ASCII码从小到大排序(字典序) ,并且参数名都要小写,举例:

String xmlStr = HttpUtil.post(payUrl, paramsxml);
Map<String, String> map = SNUtil.getXmlToMap(xmlStr,apiSecret);
if (map.get("return_code").equalsIgnoreCase("SUCCESS")) {
    if (map.get("result_code").equalsIgnoreCase("SUCCESS")) {
        packageParamstwo.put("appid", map.get("appid"));
        packageParamstwo.put("noncestr", map.get("nonce_str"));
        packageParamstwo.put("package", "Sign=WXPay");
        packageParamstwo.put("partnerid", map.get("mch_id"));
        packageParamstwo.put("prepayid", map.get("prepay_id"));
        packageParamstwo.put("timestamp", SNUtil.getTimeStamp());
//      packageParamstwo.put("signType", "MD5");
        packageParamstwo.put("sign", SNUtil.getSign(mch_id, packageParamstwo,apiSecret));
        return CommonResult.success(packageParamstwo);
     } else {
          return CommonResult.failed(map.get("return_msg"));
     }
}
  • 回调需要返回xml 才能不让微信持续回调,格式:

    <return_code><![CDATA[SUCCESS]]></return_code>
    <return_msg><![CDATA[OK]]></return_msg>

猜你喜欢

转载自blog.csdn.net/street_boy/article/details/107376011