Android 微信支付快速集成案例及有效解決返回值-1

商戶在微信開放平臺申請開發應用後,微信開放平臺會生成APP的唯一標識APPID。由於需要保證支付安全,需要在開放平臺綁定商戶應用包名和應用簽名,設置好後才能正常發起支付。本文講解Android微信支付快速集成案例及有效解決返回值-1。

下面我們參考微信官方APP端開發步驟說明,一步一步集成微信支付功能:

1、商戶APP工程中引入微信JAR包這裏寫圖片描述,該包可以從官方微信支付demo中獲得。
2、編寫調起微信支付的代碼
官方提供的代碼如下:
這裏寫圖片描述
注意:

final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);

請將官方提供的上面這段代碼改爲如下代碼:

final IWXAPI msgApi = WXAPIFactory.createWXAPI(this,"wxd930ea5d5a258f4f", false);

這裏寫圖片描述
3、支付結果回調
“參照微信SDK Sample,在net.sourceforge.simcpux.wxapi包路徑中實現WXPayEntryActivity類(包名或類名不一致會造成無法回調)”,比如我的包名爲com.cn.cwvs.fruit:這裏寫圖片描述
這裏提供WXPayEntryActivity參考代碼(請結合官方支付demo使用):

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{

    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay_result);
        api = WXAPIFactory.createWXAPI(this, Constant.WEIXIN_APPID);
        api.handleIntent(getIntent(), this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        api.handleIntent(intent, this);
    }

    @Override
    public void onReq(BaseReq req) {
    }

    @Override
    public void onResp(BaseResp resp) {

        int code = resp.errCode;

        switch (code){
            case 0://支付成功後的界面
                break;
            case -1:
                ToastUtils.showToast(getApplicationContext(), "簽名錯誤、未註冊APPID、項目設置APPID不正確、註冊的APPID與設置的不匹配、您的微信賬號異常等。");
                break;
            case -2://用戶取消支付後的界面
                break;
        }
        finish();
        //微信支付後續操作,失敗,成功,取消
         }
}

4、在配置文件中配置這個回調的activity
這裏寫圖片描述


至此,微信支付Android端集成已經完成。
需要注意的是,如果errorCode總是爲 -1,請嘗試通過下面方法解決:
1、用提交的簽名的keystore文件打包
2、清理微信的緩存
3、請根據上文的注意點,修改官方提供的代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章