| public abstract class BaseActivity extends Activity implements Callback, Runnable { public static final String LOG_TAG = "PayDemo"; private Context mContext = null; private int mGoodsIdx = 0; private Handler mHandler = null; private ProgressDialog mLoadingDialog = null; public static final int PLUGIN_VALID = 0; public static final int PLUGIN_NOT_INSTALLED = -1; public static final int PLUGIN_NEED_UPGRADE = 2; /***************************************************************** * mMode参数解释: * "00" - 启动银联正式环境 * "01" - 连接银联测试环境 *****************************************************************/ private String mMode = "01"; private static final String TN_URL_01 = "http://222.66.233.198:8080/sim/gettn"; private View.OnClickListener mClickListener = new View.OnClickListener() { @Override public void onClick(View v) { Log.e(LOG_TAG, " " + v.getTag()); mGoodsIdx = (Integer) v.getTag(); mLoadingDialog = ProgressDialog.show(mContext, // context "", // title "正在努力的获取tn中,请稍候...", // message true); //进度是否是不确定的,这只和创建进度条有关 /************************************************* * * 步骤1:从网络开始,获取交易流水号即TN * ************************************************/ new Thread(BaseActivity.this).run(); } }; public abstract void doStartUnionPayPlugin(Activity activity, String tn, String mode); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this; mHandler = new Handler(this); setContentView(R.layout.activity_main); Button btn0 = (Button) findViewById(R.id.btn0); btn0.setTag(0); btn0.setOnClickListener(mClickListener); TextView tv = (TextView) findViewById(R.id.guide); tv.setTextSize(16); updateTextView(tv); } public abstract void updateTextView(TextView tv); @Override public boolean handleMessage(Message msg) { Log.e(LOG_TAG, " " + "" + msg.obj); if (mLoadingDialog.isShowing()) { mLoadingDialog.dismiss(); } String tn = ""; if (msg.obj == null || ((String) msg.obj).length() == 0) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("错误提示"); builder.setMessage("网络连接失败,请重试!"); builder.setNegativeButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } else { tn = (String) msg.obj; /************************************************* * * 步骤2:通过银联工具类启动支付插件 * ************************************************/ doStartUnionPayPlugin(this, tn, mMode); } return false; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { /************************************************* * * 步骤3:处理银联手机支付控件返回的支付结果 * ************************************************/ if (data == null) { return; } String msg = ""; /* * 支付控件返回字符串:success、fail、cancel * 分别代表支付成功,支付失败,支付取消 */ String str = data.getExtras().getString("pay_result"); if (str.equalsIgnoreCase("success")) { msg = "支付成功!"; } else if (str.equalsIgnoreCase("fail")) { msg = "支付失败!"; } else if (str.equalsIgnoreCase("cancel")) { msg = "用户取消了支付"; } AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("支付结果通知"); builder.setMessage(msg); builder.setInverseBackgroundForced(true); //builder.setCustomTitle(); builder.setNegativeButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } @Override public void run() { String tn = null; InputStream is; try { String url = TN_URL_01; URL myURL = new URL(url); URLConnection ucon = myURL.openConnection(); ucon.setConnectTimeout(120000); is = ucon.getInputStream(); int i = -1; ByteArrayOutputStream baos = new ByteArrayOutputStream(); while ((i = is.read()) != -1) { baos.write(i); } tn = baos.toString(); is.close(); baos.close(); } catch (Exception e) { e.printStackTrace(); } Message msg = mHandler.obtainMessage(); msg.obj = tn; mHandler.sendMessage(msg); } int startpay(Activity act, String tn, int serverIdentifier) { return 0; } } |