1.防坑指南:
- 微信未返回Code?
- 请更新libammsdk.jar,import com.tencent.mm.sdk.modelmsg.SendAuth。发现命名空间发生了很大的变化。(微信婊这么大的改动也不说下,这么查的 啊,日了狗了。)
- 如何接收微信授权后的回调?
- 在包名下建立wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类
- 为什么回调没有执行?
- 配置AndroidManifest,如下:(此问题我也是参考别人的出来的,不知道是不是这个原因。)
<activityandroid:name="net.sourceforge.simcpux.wxapi.WXEntryActivity"android:configChanges="orientation|keyboardHidden"android:exported="true"android:launchMode="singleTop"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" ><intent-filter><action android:name="android.intent.action.VIEW" ></action><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
- 4 如何拿到Code
private void handleIntent(Intent intent) {String result = "";ConUrls.WriteLog("handleIntent"+result);SendAuth.Resp resp = new SendAuth.Resp(intent.getExtras());if (resp.errCode == BaseResp.ErrCode.ERR_OK) {//用户同意result ="发送成功";//ConUrls.WriteLog("handleIntent"+result);//Contexts.CurWeiXinHelper;String weixinCode = resp.code;ConUrls.WriteLog("onResume "+weixinCode);if(Contexts.CurWeiXinHelper !=null){ConUrls.WriteLog("CurWeiXinHelper "+weixinCode);try{Contexts.CurWeiXinHelper.GetLoginInfo(weixinCode);Contexts.CurWeiXinHelper=null;finish();}catch(Exception e){ConUrls.WriteLog(e.getMessage());}}}}
5.如何根据code 拿到 openId?
private void WXGetAccessToken(){HttpClient get_access_token_httpClient = new DefaultHttpClient();HttpClient get_user_info_httpClient = new DefaultHttpClient();String access_token="";String openid ="";try {HttpPost postMethod = new HttpPost(get_access_token);HttpResponse response = get_access_token_httpClient.execute(postMethod); // 执行POST方法if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {InputStream is = response.getEntity().getContent();BufferedReader br = new BufferedReader(new InputStreamReader(is));String str = "";StringBuffer sb = new StringBuffer();while ((str = br.readLine()) != null) {sb.append(str);}is.close();String josn = sb.toString();JSONObject json1 = new JSONObject(josn);access_token = (String) json1.get("access_token");openid = (String) json1.get("openid");WeiXinAuthLoginModel model=new WeiXinAuthLoginModel();model.setOpenId(openid);LoginModel MyLoginModel= SysHelper.GetWeiXinLogin(model, curContent);Contexts.MyLoginModel = MyLoginModel;SysHelper.StartAm(curContent);if(mHandler!=null){Message msg=new Message();msg.obj=MyLoginModel;msg.arg1=mHandlerOrg1;msg.what=1;mHandler.sendMessage(msg);}} else {}} catch (UnsupportedEncodingException e) {e.printStackTrace();if(mHandler!=null){Message msg=new Message();msg.obj="登录失败";msg.arg1=mHandlerOrg1;msg.arg2=-1;msg.what=0;mHandler.sendMessage(msg);}} catch (ClientProtocolException e) {e.printStackTrace();if(mHandler!=null){Message msg=new Message();msg.obj="登录失败";msg.arg1=mHandlerOrg1;msg.arg2=-1;msg.what=0;mHandler.sendMessage(msg);}} catch (IOException e) {e.printStackTrace();if(mHandler!=null){Message msg=new Message();msg.obj="登录失败";msg.arg1=mHandlerOrg1;msg.arg2=-1;msg.what=0;mHandler.sendMessage(msg);}} catch (JSONException e) {e.printStackTrace();if(mHandler!=null){Message msg=new Message();msg.obj="登录失败";msg.arg1=mHandlerOrg1;msg.arg2=-1;msg.what=0;mHandler.sendMessage(msg);}}//不获取 info // String get_user_info_url=getUserInfo(access_token,openid); // WXGetUserInfo(get_user_info_url);}
微信支付篇
1.app支付
好像没有什么问题,直接过了。
2.公众号支付
一直报 chooseWxpay:fail。
原因:1.支付目录配置错误,必须精确到最后一级。
2.请注意timestamp 这个参数,后台(C#)是timeStamp S大写,但在JS端timestamp。S小写