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

来源:互联网 发布:钢琴演奏家 软件 编辑:程序博客网 时间:2024/05/18 14:28

微信支付虽然很坑,但是遇到的问题不是不可以解决的。


微信官网上对于支付返回-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,每一个参数都很关键的,如果签名和包名确定都没有问题,那么基本上是传递的参数有问题。最好跟做后台的同事一起看看就能解决问题。




0 0
原创粉丝点击