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

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


微信官网上对于支付返回-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
个人分类: android 微信支付
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭