微信支付返回-1的情况和解决方式
2016-07-08 14:20
363 查看
微信支付虽然很坑,但是遇到的问题不是不可以解决的。
微信官网上对于支付返回-1是这样的描述的, 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
我犯的错和他描述的都不一样。
1、新建一个微信支付demo的工程,将包名和签名上传给微信。并保证apk是通过keystore方式打了签名的,用官方的工具做签名。
2、将官方的demo示例参考一下,
权限部分:
微信官网上对于支付返回-1是这样的描述的, 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
我犯的错和他描述的都不一样。
1、新建一个微信支付demo的工程,将包名和签名上传给微信。并保证apk是通过keystore方式打了签名的,用官方的工具做签名。
2、将官方的demo示例参考一下,
权限部分:
<!-- WeixinPay --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>红色的地方要注意:
<span style="color:#222222;"><activity android:name=".MainActivity" </span><span style="color:#ff0000;">android:exported="true"</span><span style="color:#222222;">> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> </span><span style="color:#ff0000;"><action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="wxd31ef1f4dd******"/></span><span style="color:#222222;"> </intent-filter> </activity> <activity android:name=".AlipayH5Activity"></activity> <activity </span><span style="color:#ff0000;">android:name="com.*******.paydemo.wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop"</span><span style="color:#222222;">> </activity></span>Activity部分的逻辑代码:
IWXAPI api = WXAPIFactory.createWXAPI(MainActivity.this, null);//通过工厂创建对象 api.registerApp(ConstUtil.APP_ID); PayReq request = new PayReq(); request.appId = ConstUtil.APP_ID; request.partnerId = ConstUtil.PARTNER_ID; request.prepayId = wxPrepayEntity.getPrepay_id(); request.nonceStr = wxPrepayEntity.getReq_noncestr(); request.timeStamp = wxPrepayEntity.getReq_timestamp(); request.packageValue = wxPrepayEntity.getReq_package(); request.sign = wxPrepayEntity.getReq_sign(); // request.extData = "app data"; // optional // 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信 api.sendReq(request);我遇到的情况是,把request.appId传给了request.partnerId,每一个参数都很关键的,如果签名和包名确定都没有问题,那么基本上是传递的参数有问题。最好跟做后台的同事一起看看就能解决问题。