Android实现微信支付功能

2019-12-10 19:11:26丽君

String url = String.format("https://www.easck.com/pay/unifiedorder"); 
      String entity = genProductArgs(); 
 
      Log.e("orion", entity); 
 
      byte[] buf = Util.httpPost(url, entity); 
 
      String content = new String(buf); 
      Log.e("orion", content); 
      Map<String, String> xml = decodeXml(content); 

第二步:生成微信支付参数

appId对应APP应用的APPID,partnerId对应商户号,prepayId对应第一步获得的预支付订单,packageValue取值Sign=WXPay,nonceStr是一串随机数,timeStamp生成的时间戳,sign对应APP签名

》支付参数配置

private void genPayReq() { 
 
    req.appId = Constants.APP_ID; 
    req.partnerId = Constants.MCH_ID; 
    req.prepayId = resultunifiedorder.get("prepay_id"); 
    req.packageValue = "Sign=WXPay"; 
    req.nonceStr = genNonceStr(); 
    req.timeStamp = String.valueOf(genTimeStamp()); 
 
    List<NameValuePair> signParams = new LinkedList<NameValuePair>(); 
    signParams.add(new BasicNameValuePair("appid", req.appId)); 
    signParams.add(new BasicNameValuePair("noncestr", req.nonceStr)); 
    signParams.add(new BasicNameValuePair("package", req.packageValue)); 
    signParams.add(new BasicNameValuePair("partnerid", req.partnerId)); 
    signParams.add(new BasicNameValuePair("prepayid", req.prepayId)); 
    signParams.add(new BasicNameValuePair("timestamp", req.timeStamp)); 
 
    req.sign = genAppSign(signParams); 
 
    sb.append("signn" + req.sign + "nn"); 
 
    show.setText(sb.toString()); 
 
    Log.e("orion", signParams.toString()); 
 
  } 

 》nonceStr随机数

private String genNonceStr() { 
    Random random = new Random(); 
    return MD5.getMessageDigest(String.valueOf(random.nextInt(10000)) 
        .getBytes()); 
  }