商戶在微信開放平臺申請開發應用後,微信開放平臺會生成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、請根據上文的注意點,修改官方提供的代碼。