Android微信支付支付失败-1等问题-脱坑指南

使用微信支付的正确姿势(附带Android Studio Debug使用签名包配置)


1 首先keystore必须和微信开放平台的签名信息一样


2 第一次请求微信参数问题 ↓ 不能有空的字段 否则这一步请求就出错!

 List<NameValuePair> packageParams = new LinkedList<>();
  packageParams.add(new BasicNameValuePair("appid", "你的appID"));
  packageParams.add(new BasicNameValuePair("body", "1"));
  packageParams.add(new BasicNameValuePair("detail", "123"));
  packageParams.add(new BasicNameValuePair("mch_id", "商户ID"));
  packageParams.add(new BasicNameValuePair("nonce_str", nonceStrs));
  packageParams.add(new BasicNameValuePair("notify_url", "回调网址 随意填写不能为空"));
  packageParams.add(new BasicNameValuePair("out_trade_no", pOutTradeNo + getOutTradeNo()));
  packageParams.add(new BasicNameValuePair("spbill_create_ip", "127.0.0.1"));
  packageParams.add(new BasicNameValuePair("total_fee", "测试的时候最好别写0.01 填1"));
  packageParams.add(new BasicNameValuePair("trade_type", "APP"));
  packageParams.add(new BasicNameValuePair("sign", genPackageSign(packageParams)));
  String xmlstring = toXml(packageParams);
  return new String(xmlstring.toString().getBytes(), "ISO-8859-1");


3 接收微信返回参数,并向微信发起第二次请求

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<>();
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);// 签名
这里必须注意 签名参数的顺序 
顺序一定按照这个来 否则一直出现 -1返回码!


4 AndroidManifest.xml 里的配置

 <activity
            android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop">
 </activity>
这里并不需要以下的代码 ↓

 <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="wxc4c5efc62c943111" />
</intent-filter>


5 一定要注意 包名和签名是否和微信开放平台的一致


 WXAPIFactory.createWXAPI(this, Constants.APP_ID)
 这里无论是填写 this,app_id 还是 this,null  无所谓!没有影响!


7 天下无坑!


8 彩蛋

apply plugin: 'com.android.application'

android {
    compileSdkVersion ..//
    buildToolsVersion ..//
    defaultConfig {
       ..//
    }
    signingConfigs {
        release {
          storeFile file(keystore地址:"C:/Users/Administrator/Desktop/key/yisheng")
            storePassword "123456"
            keyAlias "yh"
            keyPassword "123456"
        }
    }
    buildTypes {
        release {
            //启用混淆配置
            minifyEnabled true
            //Zip代码压缩优化
            zipAlignEnabled true
            //移除无用资源
            shrinkResources true
            //加载默认混淆文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        debug {
            //Zip代码压缩优化
            zipAlignEnabled true
            //移除无用资源
            shrinkResources true
            //debugs使用release签名
            signingConfig signingConfigs.release
        }
    }
}



dependencies {
    ..//
    
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信JSApi支付是指在微信公众号或小程序内使用JSAPI调起微信支付功能,实现用户在微信内完成付款的一种方式。以下是常见的问题及解决方法: 1. 支付时提示“商户订单号重复” 解决方法:修改商户订单号,确保每笔订单的商户订单号唯一。 2. 支付时提示“支付金额与订单金额不一致” 解决方法:检查订单金额和实际支付金额是否相同,确保订单金额与实际支付金额一致。 3. 支付时提示“支付失败,请稍后再试” 解决方法:检查支付参数是否正确,确保支付参数的完整性和准确性。 4. 支付时提示“当前用户未授权,请先授权登录” 解决方法:用户需要先授权登录,获取用户信息后才能进行支付操作。 5. 支付时提示“当前用户未关注公众号” 解决方法:用户需要先关注公众号,才能进行支付操作。 6. 支付时提示“商户号与appid不匹配” 解决方法:检查商户号和appid是否对应,确保商户号和appid的匹配性。 7. 支付时提示“订单已关闭” 解决方法:订单可能已经被关闭或者已经完成支付,需要重新下单。 8. 支付时提示“系统繁忙,请稍后再试” 解决方法:服务器可能正在维护或者出现故障,需要等待一段时间后再尝试支付。 以上是微信JSApi支付常见问题及解决方法,如果以上方法无法解决问题,可以联系微信支付客服进行咨询。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值