安卓移动端微信支付集成,遇到很多坑,走了很多弯路

前前后后做微信支付两天,又好久没有写技术博客了,另一个号的账号密码忘了,重新写了

1:我的demo界面很简单,只写了一个button   调起支付的用的

   下面官方demo项目的框架

2:导入微信sdk 添加依赖  这个就不用说了吧

3:首先将工具类copy到自己的项目中Constants.java,然后将wxapi这个文件夹拷打您的包下面的第一级路径,里面打开很简单,一个appid,还有个一些静态常量,后面用的到暂且不用理解

4:将app注册到微信中

5:检查微信版本是否支持支付功能

//检查版本是否支持
private boolean IsSupport() {
    boolean isPaySupported = msgApi.getWXAppSupportAPI() >= Build.PAY_SUPPORTED_SDK_INT;
    return isPaySupported;
}
6:在button的点击事件中首先判断版本支持,然后:

String url = "http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=android";
Toast.makeText(MainActivity.this, "获取订单中...", Toast.LENGTH_SHORT).show();
try{
    byte[] buf = Util.httpGet(url);
    if (buf != null && buf.length > 0) {
        String content = new String(buf);
        Log.e("get server pay params:", content);
        JSONObject json = new JSONObject(content);
        if(null != json && !json.has("retcode") ){
            PayReq req = new PayReq();
            //req.appId = "wxf8b4f85f3a794e77";  // 测试用appId
            req.appId        = json.getString("appid");
            req.partnerId     = json.getString("partnerid");
            req.prepayId      = json.getString("prepayid");
            req.nonceStr      = json.getString("noncestr");
            req.timeStamp     = json.getString("timestamp");
            req.packageValue   = json.getString("package");
            req.sign         = json.getString("sign");
            req.extData          = "app data"; // optional
            Toast.makeText(MainActivity.this, "正常调起支付", Toast.LENGTH_SHORT).show();
            // 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
            msgApi.sendReq(req);
        }else{
            Log.d("PAY_GET", "返回错误"+json.getString("retmsg"));
            Toast.makeText(MainActivity.this, "返回错误"+json.getString("retmsg"), Toast.LENGTH_SHORT).show();
        }
    }else{
        Log.d("PAY_GET", "服务器请求错误");
        Toast.makeText(MainActivity.this, "服务器请求错误", Toast.LENGTH_SHORT).show();
    }
}catch(Exception e){
    Log.e("PAY_GET", "异常:"+e.getMessage());
    Toast.makeText(MainActivity.this, "异常:"+e.getMessage(), Toast.LENGTH_SHORT).show();
}





注意点:wxapi目录的路径,清单文件与demo对比,还有返回结果为-1,最好到手机设置里面,将微信数据清除,然后重新登录就可以啦(测试id是这样的,正式开发则不需要) 欢迎提问

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值