您的位置:首页 > 移动开发 > 微信开发

微信支付返回-1的情况和解决方式

2016-07-08 14:20 363 查看
微信支付虽然很坑,但是遇到的问题不是不可以解决的。

微信官网上对于支付返回-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,每一个参数都很关键的,如果签名和包名确定都没有问题,那么基本上是传递的参数有问题。最好跟做后台的同事一起看看就能解决问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信 支付 -1