Android实现微信支付功能

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

第一步:生成预支付订单

将商品信息、商户信息使用BasicNameValuePair存放,然后存储在List列表中,并构造成xml字符串格式,以POST方式微信提供的接口:https://www.easck.com/pay/unifiedorder 发送数据,接收返回信息,获取prepay_id预支付订单编号

》生成订单请求

Android实现微信支付功能

private String genProductArgs() { 
    StringBuffer xml = new StringBuffer(); 
 
    try { 
      String nonceStr = genNonceStr(); 
 
      xml.append("</xml>"); 
      List<NameValuePair> packageParams = new LinkedList<NameValuePair>(); 
      packageParams 
          .add(new BasicNameValuePair("appid", Constants.APP_ID)); 
      packageParams.add(new BasicNameValuePair("body", "weixin")); 
      packageParams 
          .add(new BasicNameValuePair("mch_id", Constants.MCH_ID)); 
      packageParams.add(new BasicNameValuePair("nonce_str", nonceStr)); 
      packageParams.add(new BasicNameValuePair("notify_url", 
          "http://www.easck.com/test")); 
      packageParams.add(new BasicNameValuePair("out_trade_no", 
          genOutTradNo())); 
      packageParams.add(new BasicNameValuePair("spbill_create_ip", 
          "127.0.0.1")); 
      packageParams.add(new BasicNameValuePair("total_fee", "1")); 
      packageParams.add(new BasicNameValuePair("trade_type", "APP")); 
 
      String sign = genPackageSign(packageParams); 
      packageParams.add(new BasicNameValuePair("sign", sign)); 
 
      String xmlstring = toXml(packageParams); 
 
      return xmlstring; 
 
    } catch (Exception e) { 
      Log.e(TAG, "genProductArgs fail, ex = " + e.getMessage()); 
      return null; 
    } 
 
  } 

》获取预支付订单编号

Android实现微信支付功能