package com.mgw.member.ui.fragment; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.Map; import org.json.JSONException; import org.json.JSONObject; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; import android.graphics.BitmapFactory; import android.media.ThumbnailUtils; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.provider.MediaStore; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnKeyListener; import android.view.View.OnLongClickListener; import android.webkit.JavascriptInterface; import android.webkit.WebView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.alipay.android.app.sdk.AliPay; import com.alipay.android.msp.Keys; import com.alipay.android.msp.Rsa; import com.hx.hxchat.activity.ChatActivity; import com.hx.hxchat.domain.UserFriendBean; import com.hx.hxchat.utils.UserUtils; import com.lidroid.xutils.HttpUtils; import com.lidroid.xutils.exception.HttpException; import com.lidroid.xutils.http.RequestParams; import com.lidroid.xutils.http.ResponseInfo; import com.lidroid.xutils.http.callback.RequestCallBack; import com.lidroid.xutils.http.client.HttpRequest.HttpMethod; import com.mgw.member.R; import com.mgw.member.constant.Define_C; import com.mgw.member.http.pay.WXPayRequest1; import com.mgw.member.js.dao.JsCnative; import com.mgw.member.manager.BaseApplication; import com.mgw.member.ui.activity.AddadActivity; import com.mgw.member.ui.activity.MGWBaseActivity; import com.mgw.member.ui.activity.MainActivity; import com.mgw.member.ui.activity.MymaterialActivity; import com.mgw.member.ui.activity.SubWebviewActivity; import com.mgw.member.ui.activity.cityleague.GoodDetailActivity; import com.mgw.member.ui.activity.cityleague.ShopDetailAndIntroduceActivity; import com.mgw.member.uitls.LogUtils; import com.mgw.member.uitls.MgqDataHandler; import com.mgw.member.uitls.MgqRestClient; import com.mgw.member.uitls.NetworkProber; import com.mgw.member.uitls.UIUtils; import com.mgw.member.uitls.Utils; import com.tencent.mm.sdk.openapi.IWXAPI; import com.tencent.mm.sdk.openapi.WXAPIFactory; /** * * @author huyan Create On 2015/2/10. description:所有的html展示页面由这个fragment显装载 */ public class MyInfoFragment extends BaseFragment implements OnClickListener { public static boolean shoudeflush = false; private final String TAG = MyInfoFragment.class.getSimpleName().toString(); private WebView webview = null; // private MgwWebViewFactory mWebViewFactory; private RelativeLayout errorPage; private String currentUrl = ""; private boolean isContainParentPageValue = false; private String parentPageValue = ""; public Boolean isErrorPage; private TextView mainpage; private LinearLayout layout; private TextView back; private TextView top_title; @Override public View initView(LayoutInflater inflater) { View view = UIUtils.inflate(R.layout.fragment_myinfo); // mWebViewFactory = MgwWebViewFactory.getInstance(context); mainpage = (TextView) view.findViewById(R.id.mainpage); layout = (LinearLayout) view.findViewById(R.id.layout); back = (TextView) view.findViewById(R.id.back); top_title = (TextView) view.findViewById(R.id.title); back.setOnClickListener(this); mainpage.setOnClickListener(this); mainpage.setVisibility(View.GONE); layout.setVisibility(View.VISIBLE); back.setVisibility(View.GONE); top_title.setVisibility(View.VISIBLE); webview = (WebView) view.findViewById(R.id.webView); errorPage = (RelativeLayout) view.findViewById(R.id.rl_error); // webview.setOnKeyListener(new OnKeyListener() { // // @Override // public boolean onKey(View v, int keyCode, KeyEvent event) { // // TODO Auto-generated method stub // return false; // } // }); view.findViewById(R.id.refresh).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if ((MGWBaseActivity) getActivity() != null) { ((MGWBaseActivity) getActivity()).beepManager.playBeepSoundAndVibrate(); } handler.sendEmptyMessage(MESSAGE_TYPE_WEBPAGER_REFRESH); } }); webview.addJavascriptInterface(new Handle(), JsCnative.mgwjs);// 处理android调用js方法 webViewSetting(webview, new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack() && !isContainParentPageValue) { // webview.clearHistory(); // webview.goBack(); // 后退 return false; // 已处理 } else if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack() && isContainParentPageValue) { // webview.clearHistory(); webview.loadUrl(parentPageValue); return true; // 已处理 } } return false; } }); webview.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { // TODO Auto-generated method stub return true; } }); webview.setWebViewClient(new MyWebViewClient_MyInfo()); webview.setWebChromeClient(new MyWebChromeClient_MyInfo()); webview.loadUrl(getActivity().getSharedPreferences("mgw_data", 0).getString("mgw_owner", "http://www.baidu.com")); // mWebViewFactory.addToMyInfo(webview); return view; } @Override public void initData() { // TODO Auto-generated method stub } @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); if (shoudeflush) { webview.reload(); } LogUtils.i(TAG + "onResume=currentLoadProgress="); } @Override public boolean onBackPressed() { LogUtils.i(TAG + "onBackPressed"); // if (mWebViewFactory.mmyinfo_webviews.size() > 1) { // hideErrorPage(); // return true; // } return false; } /** * js操作本地接口类 * * @author huyan * */ public class Handle implements JsCnative { @JavascriptInterface public void showSource(final String data) { Map<String, String> map = parseHtml2GetParentValue(data); parentPageValue = map.get("parentPage"); isContainParentPageValue = !(parentPageValue == ""); isErrorPage = map.get("errorPage") == "yes"; showAndHideBack(parentPageValue == ""); // if (isErrorPage) { // handler.sendEmptyMessage(MESSAGE_TYPE_WEBPAGER_ERROR); // } else { // handler.sendEmptyMessage(MESSAGE_TYPE_WEBPAGER_OK); // } if (NetworkProber.isNetworkAvailable(context) && !isErrorPage) { handler.sendEmptyMessage(MESSAGE_TYPE_WEBPAGER_OK); } else { handler.sendEmptyMessage(MESSAGE_TYPE_WEBPAGER_ERROR); } } @Override @JavascriptInterface public void getUserInfo() { return; } @Override @JavascriptInterface public void transferTo(String url, String parm) { } @Override @JavascriptInterface public void setClientInfo(String groupid, String uid, String sid) { } @Override @JavascriptInterface public void toConsulter(String userid) { } @Override @JavascriptInterface public void toSupplier(String sid) { } @Override @JavascriptInterface public void buyInSupplier(String sid, String pid) { } } /** * js消息处理handler */ private final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == MESSAGE_TYPE_WEBPAGER_ERROR) { LogUtils.i(TAG, "MESSAGE_TYPE_WEBPAGER_ERROR"); // Toast.makeText(context, "errorpage", 0).show(); errorPage.setVisibility(View.VISIBLE); } else if (msg.what == MESSAGE_TYPE_WEBPAGER_REFRESH) { // TODO // ((WebView) // mWebViewFactory.getCurrentWebView_info()).loadUrl(currentUrl); webview.loadUrl(currentUrl); LogUtils.i(TAG, "MESSAGE_TYPE_WEBPAGER_REFRESH,currentUrl=" + currentUrl); } else if (msg.what == MESSAGE_TYPE_WEBPAGER_OK) { LogUtils.i(TAG, "MESSAGE_TYPE_WEBPAGER_OK"); errorPage.setVisibility(View.GONE); } } }; @Override public void showTwoPage(WebView view, String url) { // mWebViewFactory.showUrl2OhterWebView(view, url, new // MyWebViewClient_MyInfo(), TAG); } @Override public void hideErrorPage() { // mWebViewFactory.goBackfromOhterWebview(TAG, null); } @Override protected void openWebview(WebView view, String url) { view.loadUrl(url); // mDialogUtils.show(); } public class MyWebViewClient_MyInfo extends BaseWebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // http://androidweb.mgw.cc/Member/MyWZOrderDetail.aspx?OrderID=C150423153400000013&Entrance=0&OrderStatus= // supplierid:150125144400000000 去商店联盟 if (url.equals("upimage:")) { view.stopLoading(); showImgDialog(); return true; } if (url.contains("mycoupon:")) { view.stopLoading(); Intent intent = new Intent(getActivity(), MymaterialActivity.class); startActivity(intent); return true; } if (url.contains("addad:")) { view.stopLoading(); // view.reload(); Intent intent = new Intent(getActivity(), AddadActivity.class); intent.putExtra("mod", 1); startActivity(intent); return true; } if (url.contains("editad:")) { view.stopLoading(); // view.reload(); Intent intent = new Intent(getActivity(), AddadActivity.class); intent.putExtra("adid", url.substring(7, url.length())); intent.putExtra("mod", 2); startActivity(intent); return true; } if (url.contains("tel:")) { view.stopLoading(); // Intent phoneIntent = new Intent("android.intent.action.CALL", // Uri.parse(url)); // startActivity(phoneIntent); String substring = url.substring(4); if ("".equals(substring)) { UIUtils.showToastSafe("该店家没有设置电话号码"); return true; } Utils.callMobliePhone(Uri.parse(url), false); return true; } if (url.contains("MemberCardManage")) { view.stopLoading(); Intent intent = new Intent(getActivity(), SubWebviewActivity.class); intent.putExtra("url", url); intent.putExtra("type", 1); intent.putExtra("title", true); startActivity(intent); return true; } if (url.contains("chat:{")) { view.stopLoading(); try { JSONObject obj = new JSONObject(url.substring(5)); Intent intent = new Intent(getActivity(), ChatActivity.class); intent.putExtra("userId", obj.getString("UserID")); // intent.putExtra("Name", // URLDecoder.decode(obj.getString("Name"), "utf-8")); UserFriendBean friendInfo2Bean = UserUtils.getFriendInfo2Bean(obj.getString("UserID")); if (friendInfo2Bean != null) { intent.putExtra("userName", friendInfo2Bean.getItems().get(0).getNickName()); } startActivity(intent); return true; } catch (JSONException e) { e.printStackTrace(); } } if (url.toLowerCase().contains("supplierid:")) { view.stopLoading(); String sid = url.substring("supplierid:".length()).trim(); Intent intent = new Intent(getActivity(), ShopDetailAndIntroduceActivity.class); intent.putExtra("sid", sid); startActivity(intent); return true; } //去商品详细页 if (url.toLowerCase().contains("sid")&&url.toLowerCase().contains("pid")&&url.toLowerCase().contains("pname")) { // supplierid:150125144400000000 // sid=150125144400000000&pid=5648787786&pname=5475 //String url="sid=12545858555&pid=5895651891565&pname=哇哈哈矿泉水"; int sidindex=url.indexOf("sid="); int pidindex=url.indexOf("&pid="); int pameindex=url.indexOf("&pname"); String sid=url.substring(sidindex+4, pidindex); String pid=url.substring(pidindex+5, pameindex); String pname=url.substring(pameindex+5); view.stopLoading(); Intent intent = new Intent(context, GoodDetailActivity.class); intent.putExtra("sid", sid);//店铺id intent.putExtra("pid", pid);//商品id intent.putExtra("pname", pname);//商品名 startActivity(intent); return true; } if (url.contains("buy:{")) { view.stopLoading(); if (finishPay) { finishPay = false; try { mOrderInfo = new JSONObject(url.substring(4)); new Builder(getActivity()).setTitle("选择支付方式").setItems(new String[] { "微信支付", "支付宝支付" }, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { finishPay = true; if (arg1 == 1) { payOrder(); } else { mHandler.sendEmptyMessage(MESSAGE_TYPE_WXPAY); } } }).setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { finishPay = true; } }).show(); } catch (JSONException e) { e.printStackTrace(); } } view.stopLoading(); return true; } if (url.contains("goto:login")) { if (mShowExit) return true; mShowExit = true; view.stopLoading(); { // SharedPreferences.Editor sharedata = // getActivity().getSharedPreferences("mgw_data", 0).edit(); // sharedata.putString("mgw_data", ""); // sharedata.putString("mgw_pwd", ""); // sharedata.putString("mgw_account", ""); // sharedata.putBoolean("logined", false); // sharedata.commit(); BaseApplication.getApplication().logout(context); // ((BaseApplication) // getActivity().getApplicationContext()).m_user_id = ""; // startActivity(new Intent(context, LoginActivity.class)); mShowExit = false; // getActivity().finish(); // AppManager.getAppManager().finishActivity(MainActivity.class); } return true; } view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { // view.loadUrl("javascript:window.handler.show(document.body.innerHTML);"); // 通过内部类定义的方法获取html页面加载的内容,这个需要添加在webview加载完成后的回调中 view.loadUrl("javascript:window.mgwjs.showSource('<head>'+" + "document.getElementsByTagName('html')[0].innerHTML+'</head>');"); dismissLoadingDialog(); LogUtils.i("onPageFinished=" + "url=" + url); if (context == null) return; if(MainActivity.mainActivity!=null) (MainActivity.mainActivity).findViewById(R.id.rl_error).setVisibility(View.INVISIBLE); } boolean mShowExit = false; @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { if ((MGWBaseActivity) getActivity() != null) { ((MGWBaseActivity) getActivity()).beepManager.playBeepSoundAndVibrate(); } // currentUrl = url; currentUrl = url; // // if (url.contains("goto:login")) { // if (mShowExit) // return; // mShowExit = true; // view.stopLoading(); // { // SharedPreferences.Editor sharedata = // getActivity().getSharedPreferences("mgw_data", 0).edit(); // sharedata.putString("mgw_data", ""); // sharedata.putString("mgw_pwd", ""); // sharedata.putString("mgw_account", ""); // sharedata.putBoolean("logined", false); // sharedata.commit(); // // BaseApplication.getApplication().logout(); // // // ((BaseApplication) // // getActivity().getApplicationContext()).m_user_id = ""; // startActivity(new Intent(context, LoginActivity.class)); // mShowExit = false; // getActivity().finish(); // // AppManager.getAppManager().finishActivity(MainActivity.class); // // } // return; // } // 含有键值对,不加载,直接跳转 // if (url.contains("?id=") || url.contains("?key=")) { if ((url.contains("?id=") && !url.contains("&style"))) { view.stopLoading(); Intent intent = new Intent(context, SubWebviewActivity.class); intent.putExtra("url", url); intent.putExtra("type", 1); open2OhterActivitye(intent, false); return; } else { if (((MainActivity) getActivity() != null) && !((MainActivity) getActivity()).isFinishing()) { showLoadingDialog(getActivity(), MyInfoFragment.class); } return; } } } public class MyWebChromeClient_MyInfo extends BaseWebChromeClient { @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); top_title.setText(title); LogUtils.i(TAG, "onReceivedTitle=" + "title=" + title); } } @Override public void open2OhterActivitye(Intent intent) { } @Override public void open2OhterActivitye(Intent intent, boolean forResut) { if (intent == null) return; if (forResut) { startActivityForResult(intent, 22); } else { startActivity(intent); } } /** 这是弹出选择图片来源的dailog */ AlertDialog mDailog = null; void showImgDialog() { mDailog = new AlertDialog.Builder(getActivity()).setTitle("选择图片").setItems(new String[] { "拍照", "从相册中选择" }, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (which == 0) { showImgPick(0); } else if (which == 1) { showImgPick(1); } mDailog.dismiss(); mDailog = null; } }).show(); } public static final int IMAGE_CODE = 3; public static final int REQUEST_CODE = 4; private final String IMAGE_TYPE = "image/*"; Uri imageUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "/" + "faceImage.jpg")); /** 该方法传入参数0则调用相机拍照,传入参数1则从相册选取 */ void showImgPick(int type) { if (type == 0) { String state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(intent, REQUEST_CODE); } } else { Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT); getAlbum.setType(IMAGE_TYPE); startActivityForResult(getAlbum, IMAGE_CODE); } } @SuppressWarnings("deprecation") @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (data == null) return; Bitmap photo = null; if (requestCode == REQUEST_CODE) { // upimg(new File(imageUri.toString())); Uri uri = data.getData(); if (uri != null) { photo = BitmapFactory.decodeFile(uri.getPath()); } if (photo == null) { Bundle bundle = data.getExtras(); if (bundle != null) { photo = (Bitmap) bundle.get("data"); } } } else if (requestCode == IMAGE_CODE) { // upimg(new File(imageUri.toString())); try { photo = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), data.getData()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // 显得到bitmap图片 } if (photo == null) return; photo = ThumbnailUtils.extractThumbnail(photo, 200, 200, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); InputStream is = Bitmap2IS(photo); getData(is); // saveBitmap2file(photo, "face.jpg"); // upimg(new File("/sdcard/" + "face.jpg")); super.onActivityResult(requestCode, resultCode, data); } /** 将bitmap对象转换成inputstream */ private InputStream Bitmap2IS(Bitmap bitmap) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 80, baos); InputStream sbs = new ByteArrayInputStream(baos.toByteArray()); return sbs; } /** 原来的图片上传的方法 */ private void getData(InputStream is) { MgqDataHandler loginHandler = new MgqDataHandler(getActivity(), true, false) { @Override public void onSuccess(String response) { super.onSuccess(response); try { JSONObject obj = new JSONObject(response); Log.e("json", obj.toString()); if (obj.getInt("flag") == 0) { Toast.makeText(getActivity(), obj.getString("msg"), Toast.LENGTH_SHORT).show(); webview.loadUrl(getActivity().getSharedPreferences("mgw_data", Context.MODE_PRIVATE).getString("mgw_owner", "")); } else { Toast.makeText(getActivity(), obj.getString("msg"), Toast.LENGTH_SHORT).show(); } } catch (JSONException e) { e.printStackTrace(); } } @Override public void onFailure(Throwable ble) { } }; com.loopj.android.http.RequestParams params = new com.loopj.android.http.RequestParams(); SharedPreferences sp = context.getSharedPreferences("mgw_data", 0); params.put("picture", is); MgqRestClient.post("http://android4.mgw.cc" + "/MemImage/UpImage.aspx?serial=" + sp.getString("mgw_serial", null) + "&userid=" + sp.getString("mgw_userID", null) + "&format=.jpg", params, loginHandler); } /** 将bitmap对象存到本地 */ static boolean saveBitmap2file(Bitmap bmp, String filename) { CompressFormat format = Bitmap.CompressFormat.JPEG; int quality = 100; OutputStream stream = null; try { stream = new FileOutputStream("/sdcard/" + filename); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return bmp.compress(format, quality, stream); } /** 使用xutils的图片上传的方法 */ private void upimg(File file) { SharedPreferences sp = context.getSharedPreferences("mgw_data", 0); RequestParams params = new RequestParams(); params.addBodyParameter("picture", file); HttpUtils http = new HttpUtils(); http.send(HttpMethod.POST, "http://android4.mgw.cc" + "/MemImage/UpImage.aspx?serial=" + sp.getString("mgw_serial", null) + "&userid=" + sp.getString("mgw_userID", null) + "&format=.jpg", params, new RequestCallBack<String>() { @Override public void onStart() { if (((MainActivity) getActivity() != null) && !((MainActivity) getActivity()).isFinishing()) { showLoadingDialog(getActivity(), MyInfoFragment.class); } } @Override public void onLoading(long total, long current, boolean isUploading) { if (isUploading) { } else { } } @Override public void onSuccess(ResponseInfo<String> responseInfo) { dismissLoadingDialog(); Toast.makeText(getActivity(), "上传成功!", Toast.LENGTH_SHORT).show(); webview.reload(); } @Override public void onFailure(HttpException error, String msg) { dismissLoadingDialog(); if (msg.contains("out")) { Toast.makeText(getActivity(), "当前网络环境较差,请更换网络后再上传!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getActivity(), "上传失败!", Toast.LENGTH_SHORT).show(); } } }); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.back: if (webview.canGoBack() && isContainParentPageValue) { // webview.clearHistory(); webview.loadUrl(parentPageValue); return; // 已处理 } break; case R.id.mainpage: webview.clearHistory(); webview.loadUrl(getActivity().getSharedPreferences("mgw_data", 0).getString("mgw_owner", "http://www.baidu.com")); default: break; } } /** * 显示隐藏back键和home键 * * @param isRootPage * Created by Administrator */ private void showAndHideBack(final boolean isRootPage) { UIUtils.runInMainThread(new Runnable() { @Override public void run() { if (isRootPage) { mainpage.setVisibility(View.GONE); back.setVisibility(View.GONE); } else { back.setVisibility(View.VISIBLE); mainpage.setVisibility(View.VISIBLE); } } }); } boolean finishPay = true; JSONObject mOrderInfo; Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MESSAGE_TYPE_NOWX: UIUtils.showToastWithAlertPic("微信未安装或版本不支持微支付,请检查"); break; case MESSAGE_TYPE_PARAMERR: UIUtils.showToastWithAlertPic("当前版本不支持,请检查"); break; case MESSAGE_TYPE_WXPAY: PaydWX(); break; default: finishPay = true; break; } } }; void PaydWX() { try { IWXAPI api = WXAPIFactory.createWXAPI(getActivity(), Define_C.APP_ID); if (!api.isWXAppInstalled() || !api.isWXAppSupportAPI()) { UIUtils.showToastWithAlertPic("微信未安装或版本不支持微支付,请检查"); return; } JSONObject item = new JSONObject(); item.put("trade_no", mOrderInfo.getString("out_trade_no")); item.put("amount", mOrderInfo.getString("total_fee")); String strpname = null; try { strpname = URLDecoder.decode(mOrderInfo.getString("subject"), "UTF-8").replaceAll(" ", ""); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } SharedPreferences sp = getActivity().getSharedPreferences("mgw_data", 0); if (mOrderInfo.getInt("Notetype") == 0) { item.put("notify_url", sp.getString("wz_tenpay", "http://pay.mgw.cc/WZ/tenpay_notify_url.aspx")); // item.put("pname", "美顾问城市联盟订单"); item.put("pname", strpname); } else if (mOrderInfo.getInt("Notetype") == 1) { item.put("notify_url", sp.getString("xx_tenpay", "http://pay.mgw.cc/XX/tenpay_notify_url.aspx")); // item.put("pname", "美顾问城市联盟店内消费"); item.put("pname", strpname); } else if (mOrderInfo.getInt("Notetype") == 2) { item.put("notify_url", sp.getString("mall_tenpay", "http://pay.mgw.cc/Mall/tenpay_notify_url.aspx")); // item.put("pname", "美顾问品牌商城订单"); item.put("pname", strpname); } else { mHandler.sendEmptyMessage(MESSAGE_TYPE_PARAMERR); return; } new WXPayRequest1(getActivity(), item).WXPay(); } catch (JSONException e) { e.printStackTrace(); } } /** * 支付订单 * */ void payOrder() { try { String info = getNewOrderInfo(); if (info.equals("")) { return; } String sign = Rsa.sign(info, Keys.PRIVATE); sign = URLEncoder.encode(sign); info += "&sign=\"" + sign + "\"&" + getSignType(); final String orderInfo = info; new Thread() { @Override public void run() { AliPay alipay = new AliPay(getActivity(), mHandler); String result = alipay.pay(orderInfo); Message msg = new Message(); msg.what = 0; msg.obj = result; mHandler.sendMessage(msg); } }.start(); } catch (Exception ex) { } } private String getSignType() { return "sign_type=\"RSA\""; } /** * 获得新订单的信息 * * @return * @throws JSONException */ private String getNewOrderInfo() throws JSONException { double fee = mOrderInfo.getDouble("total_fee"); String strFee = String.format("%.2f", fee); StringBuilder sb = new StringBuilder(); sb.append("partner=\""); sb.append(Keys.DEFAULT_PARTNER); sb.append("\"&out_trade_no=\""); sb.append(mOrderInfo.getString("out_trade_no")); SharedPreferences sp = getActivity().getSharedPreferences("mgw_data", 0); if (mOrderInfo.getInt("Notetype") == 0) { sb.append("\"&subject=\""); sb.append(mOrderInfo.getString("subject")); // sb.append("美顾问城市联盟订单"); sb.append("\"&body=\""); sb.append(mOrderInfo.getString("subject")); // sb.append("美顾问城市联盟订单"); sb.append("\"&total_fee=\""); sb.append(strFee); sb.append("\"¬ify_url=\""); sb.append(URLEncoder.encode(sp.getString("wz_alipay", "http://pay.mgw.cc/WZ/alipay_notify_url.aspx"))); sb.append("\"&service=\"mobile.securitypay.pay"); sb.append("\"&_input_charset=\"UTF-8"); sb.append("\"&return_url=\""); sb.append(URLEncoder.encode(sp.getString("wz_alipay_return_url", "http://pay.mgw.cc/WZ/alipay_return_url.aspx"))); } else if (mOrderInfo.getInt("Notetype") == 1) { sb.append("\"&subject=\""); sb.append(mOrderInfo.getString("subject")); // sb.append("美顾问城市联盟店内消费"); sb.append("\"&body=\""); sb.append(mOrderInfo.getString("subject")); // sb.append("美顾问城市联盟店内消费"); sb.append("\"&total_fee=\""); sb.append(strFee); sb.append("\"¬ify_url=\""); sb.append(URLEncoder.encode(sp.getString("xx_alipay", "http://pay.mgw.cc/XX/alipay_notify_url.aspx"))); sb.append("\"&service=\"mobile.securitypay.pay"); sb.append("\"&_input_charset=\"UTF-8"); sb.append("\"&return_url=\""); sb.append(URLEncoder.encode(sp.getString("xx_alipay_return_url", "http://pay.mgw.cc/XX/alipay_return_url.aspx"))); } else if (mOrderInfo.getInt("Notetype") == 2) { sb.append("\"&subject=\""); sb.append(mOrderInfo.getString("subject")); // sb.append("美顾问品牌商城订单"); sb.append("\"&body=\""); sb.append(mOrderInfo.getString("subject")); // sb.append("美顾问品牌商城订单"); sb.append("\"&total_fee=\""); sb.append(strFee); sb.append("\"¬ify_url=\""); sb.append(URLEncoder.encode(sp.getString("mall_alipay", "http://pay.mgw.cc/Mall/alipay_notify_url.aspx"))); sb.append("\"&service=\"mobile.securitypay.pay"); sb.append("\"&_input_charset=\"UTF-8"); sb.append("\"&return_url=\""); sb.append(URLEncoder.encode(sp.getString("mall_alipay_return_url", "http://pay.mgw.cc/Mall/alipay_return_url.aspx"))); } else { mHandler.sendEmptyMessage(MESSAGE_TYPE_PARAMERR); return ""; } // 网址需要做URL编码 sb.append("\"&payment_type=\"1"); sb.append("\"&seller_id=\""); sb.append(Keys.DEFAULT_SELLER); // 如果show_url值为空,可不传 // sb.append("\"&show_url=\""); sb.append("\"&it_b_pay=\"1m"); sb.append("\""); return new String(sb); } }