栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android第三方微信支付教程

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android第三方微信支付教程

做了微信支付,下载了Demo,发现和之前有所改动,v3.0的版本,也许有的朋友还在摸索,这里我已经成功支付,话不多说,直接进入主题:

一、首先要在微信开发平台注册账号,新增应用,填写正确的包名,正确的签名(MD5中的一串字符冒号去掉,全部小写),当然也会生成的AppID和AppSecret都有用!最后还要花300大洋开通支付功能!

二、分析一下微信支付的流程


三、界面交互流程

上面都看明白了,接下来就是写代码了

四、这里必须要有wxapi这个包名,同时必须有WXPayEntryActivity这个类名

五、在AndroidManifest.xml里面配置相关信息

 




 


 
    
      
 

 
      
      
 

 

 
      
    


    

    
      
 
      
    

  
  StringBuffer sb = new StringBuffer();
  WeixinPay wpay;
  private alertDialog mDialog;
  private alertDialog.Builder builder;

  public void weixinPay() {
    // 通过WXAPIFactory工厂,获取IWXAPI的实例
    api = WXAPIFactory.createWXAPI(this, Constants.APP_ID);
    // 将该app注册到微信
    api.registerApp(Constants.APP_ID);
    // 调用接口
    Params p = new Params();
    p.put("fee",fee);
    p.put("spbill_create_ip", NetWorkUtils.getLocalIpAddress(this));
    String value = "商品标题 " + title;
    try {
      String title = new String(value.getBytes("UTF-8"));
      p.put("body", title);
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }

    p.put("userId", O.getUser().getId());

    p.post(C.URL.WEIXIN_PAY, new ReHandler() {

      @Override
      public void onSuccess(NetEntity entity) {

 wpay = entity.toObj(WeixinPay.class);

 PayReq req = new PayReq();
 req.appId = wpay.getAppid();// 微信appId
 req.packagevalue = wpay.getPackagevalue();// 包
 req.extData = "app data"; // optional
 req.timeStamp = wpay.getTimeStamp();// 时间戳
 req.partnerId = wpay.getPartnerId();// 商户号"
 req.prepayId = wpay.getPrepayId();// 预支付订单号
 req.nonceStr = wpay.getNonceStr();// 随机字符串
 req.sign = wpay.getSign();// 后台返回的签名

 // 本地再次签名
 List signParams = new linkedList();
 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);

 // 调微信支付
 if(api.isWXAppInstalled()&&api.isWXAppSupportAPI()){
   api.sendReq(req);
 }else{
   builder = new alertDialog.Builder(WXPayEntryActivity.this);
   builder.setNeutralButton("关闭",
new DialogInterface.onClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
    mDialog.dismiss();
  }
}).setTitle("友情提醒").setMessage("请安装微信客户端");

   mDialog = builder.create();
   mDialog.show();
 }

      }

      @Override
      public void onStart() {

      }

      @Override
      public void onFailure(String message) {
      }
    });
  }

  private String genAppSign(List params) {
    StringBuilder sb = new StringBuilder();

    for (int i = 0; i < params.size(); i++) {
      sb.append(params.get(i).getName());
      sb.append('=');
      sb.append(params.get(i).getValue());
      sb.append('&');
    }
    sb.append("key=");
    sb.append(Constants.API_KEY);

    this.sb.append("sign strn" + sb.toString() + "nn");
    String appSign = MD5.getMessageDigest(sb.toString().getBytes());
    Log.e("orion", appSign);
    return appSign;
  }

六、在WXPayEntryActivity类里面成功之后回调方法onResp()

@Override
  public void onResp(baseResp resp) {
    Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);

    if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
      if(resp.errCode==-2){
 Toast.makeText(this,"取消付款!", Toast.LENGTH_LONG).show();
      }
      if(resp.errCode==-1){
 Toast.makeText(this,"支付错误!", Toast.LENGTH_LONG).show();
      }
      if(resp.errCode==0){
 queryOrder();//查询接口调用后台服务器查询是否成功
      }

    }

最后做完之后,一定要签名打包,这个是微信的独家秘笈,你忘了就会跳出-1,呵呵。

最后总结一下支付返回-1的情况
1.检查微信后台的签名,包名是否正确
2.工程是否签名打包
3.如果之前做过测试显示过-1的情况,必须清除微信的清除数据,重新登录微信
4.后台服务器是否按照要求第一次签名,第二次签名,如果第二次签名不对,那我们就自己再次签名一次,我的代码里面写了

以上就是微信支付的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/161922.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号