微信支付集成

  • 注意

    • 如果直接运行在手机上可能调用不成功或只能支付成功一次,

    • 测试 必须签名,签名分为debug和realease,注意和微信注册的签名保持一致

    • 测试的时候debug和Realease分开不能混淆,要在gradle中进行配置

    • 每次打包后要用签名工具获取签名,然后在微信平台修改应用签名,必须一对一

    • WXEntryActivity必须在放在. wxapi包下

    • 在调用钱必须先注册

    • 调用失败可能是因为微信缓存的问题,清理一下就可以

    • 修改签名后可能第一次调用不成功,以后就没有问题了

  • 代码

      IWXAPI api=null;
      api =   WXAPIFactory.createWXAPI(getActivity().getApplicationContext(), "wx909c40e73431b005");
      api.registerApp("wx909c40e73431b005");
    
      private void getWXOrderInfo(String money) {
      String  url = Contacts.SHAir_SERVICE + Contacts.ServiceConstant.CACHE_PAY;
      HashMap params = new HashMap<>();
      params.put("", "");
      params.put("", "");
    
      //通过接口获取后台给的订单信息
      OkGo.post(url).tag(this).params(params,false)
          .execute(new StringCallback() {
      @Override
      public void onSuccess(String s, Call call, Response response) {
          try {
              JSONObject json = new JSONObject(s);
              String data = json.getString("data");
              if (json.getString("code").equals("1")) {
                  PayReq request = new PayReq();
                  Log.d("mao", s);
                  JSONObject jsonObject = new JSONObject(data);
                  request.appId = jsonObject.getString("appid"); //wxf8b4f85f3a794e77,测试用appId
                  request.partnerId = jsonObject.getString("partnerid");// 微信支付分配的商户号
                  request.prepayId = jsonObject.getString("prepayid");// 预支付订单号
                  request.nonceStr = jsonObject.getString("noncestr");// 随机字符串
                  request.timeStamp = jsonObject.getString("timestamp");// 时间戳
                  request.packageValue = jsonObject.getString("package");
                  request.sign = jsonObject.getString("sign");// 签名
                  // 调用微信支付,如果没有注册在调用之前要先进行注册
                  api.sendReq(request);
                  SPutils.put(activity,"wxpay",true);
              } else {
                  Toas.makeText(getContext(), "调用失败",Toast.LENGTH_SHROT).show();
              }
          } catch (Exception e) {
              e.printStackTrace();
              Toas.makeText(getContext(), "请求异常",Toast.LENGTH_SHROT).show();
          }
      }
    });
    }
    
  • gradle

    • 依赖

        compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
        compile files('libs/libammsdk.jar')
      
    • 签名

       android {
        signingConfigs {
          release {
              keyAlias 'key'
              keyPassword '123456'
              storeFile file('key.jks')
              storePassword '123456'
          }
        }
      
      buildTypes {
          release {
            minifyEnabled false
            signingConfig signingConfigs.release//添加这句话
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
          debug {
            minifyEnabled false
            signingConfig signingConfigs.release//添加这句话
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
      }  
      
  • 混淆

    -keep class com.tencent.mm.opensdk.** {
         *;
    }
    
    -keep class com.tencent.mm.sdk.** {
         *;
    }
    
  • 权限

      
      
      
      
      
      
      
      
      
    
  • 配置: WXEntryActivity必须在. wxapi下

      

你可能感兴趣的:(微信支付集成)