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

android 集成微信支付

2018-01-26 16:08 239 查看
1,导入jar包,从微信官方网站上下载jar包,并导入到工程中

2,在开发者账户中添加应用,并开通支付功能,填入包名和签名,获取APPID

3,调起支付:

IWXAPI api = WXAPIFactory.createWXAPI(context, "appid");//注册sdk

       PayReq req = new PayReq();

//请求参数

       req.appId="appid";

       req.prepayId=wxpb.getResultMap().getSignParams().getPrepayid();

       req.partnerId=wxpb.getResultMap().getSignParams().getPartnerid();

       req.nonceStr=wxpb.getResultMap().getSignParams().getNoncestr();

       req.timeStamp=wxpb.getResultMap().getSignParams().getTimestamp();

       req.packageValue="Sign=WXPay";

       req.sign=wxpb.getResultMap().getSign();

//发起请求,调起支付

api.sendReq(req)

4,结果回调,注意包名和类名,包名。。。wxapi.WXPayEntryActivity

package com.shilian.collector.wxapi;

import android.content.Intent;

import android.os.Bundle;

import com.shilian.collector.R;

import com.shilian.collector.base.BaseActivity;

import com.shilian.collector.base.MyApplication;

import com.shilian.collector.personal.HaveOrderActivity;

import com.tencent.mm.opensdk.constants.ConstantsAPI;

import com.tencent.mm.opensdk.modelbase.BaseReq;

import com.tencent.mm.opensdk.modelbase.BaseResp;

import com.tencent.mm.opensdk.openapi.IWXAPI;

import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;

import com.tencent.mm.opensdk.openapi.WXAPIFactory;

/**

 * 微信支付的回调activity

 * */

public class WXPayEntryActivity extends BaseActivity implements IWXAPIEventHandler {

    private IWXAPI api;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_wxpay_entry);

        api= WXAPIFactory.createWXAPI(this,"wx2794b53f5c8aa6b7");

        api.handleIntent(getIntent(), this);

    }

    @Override

    protected void onNewIntent(Intent intent) {

        super.onNewIntent(intent);

        setIntent(intent);

        api.handleIntent(intent, this);

    }

    @Override

    public void onReq(BaseReq baseReq) {

    }

//支付结果回调

    @Override

    public void onResp(BaseResp baseResp) {

        if (baseResp.getType()== ConstantsAPI.COMMAND_PAY_BY_WX){

            switch (baseResp.errCode){

                case 0:

                    toast("支付成功");

                    //支付成功处理

                    finish();

                    break;

                case -1:

                    toast("支付失败code:-1");

                    finish();

                    break;

                case -2:

                    toast("支付取消code:-2");

                    finish();

                    break;

            }

        }

    }

}

5,mainfest文件中注册activity,并添加属性

<activity android:name="com.shilian.collector.wxapi.WXPayEntryActivity"

            android:exported="true"

            android:launchMode="singleTop"/>

6,混淆规则

-keep class com.tencent.** { *;}

7,出现问题

掉不起支付,sendReq方法返回false,参数数错误,同一订单不同价格会导致prepayId为空,sendReq返回true,回调结果返回-1,一般为appid或对应的包名和签名有问题,或签名sign出错,或是其他参数给错,或者微信缓存错误,清除微信数据后重试。

不执行回调,包名或类名出错,注册时的属性不对。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: