package com.wise.wawc; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import org.json.JSONException; import org.json.JSONObject; import com.alipay.android.app.sdk.AliPay; import com.wise.alipay.Keys; import com.wise.alipay.Rsa; import com.wise.pubclas.Constant; import com.wise.pubclas.NetThread; import com.wise.pubclas.Variable; import com.wise.sql.DBHelper; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.Toast; /** * 订单确认 * @author honesty */ public class OrderConfirmActivity extends Activity{ private static final String TAG = "OrderConfirmActivity"; private static final int submit_wap = 1; private static final int RQF_PAY = 2; private static final int submit_order = 3; EditText et_consignee,et_adress,et_phone; ImageView iv_client,iv_wap; boolean isClient = true; double money = 0.01; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WawcApplication.getActivityInstance().addActivity(this); setContentView(R.layout.activity_order_confirm); et_consignee = (EditText)findViewById(R.id.et_consignee); et_adress = (EditText)findViewById(R.id.et_adress); et_phone = (EditText)findViewById(R.id.et_phone); ImageView iv_activity_order_confirm_back = (ImageView)findViewById(R.id.iv_activity_order_confirm_back); iv_activity_order_confirm_back.setOnClickListener(onClickListener); Button bt_activity_order_confirm_submit = (Button)findViewById(R.id.bt_activity_order_confirm_submit); bt_activity_order_confirm_submit.setOnClickListener(onClickListener); RelativeLayout rl_client = (RelativeLayout)findViewById(R.id.rl_client); rl_client.setOnClickListener(onClickListener); RelativeLayout rl_wap = (RelativeLayout)findViewById(R.id.rl_wap); rl_wap.setOnClickListener(onClickListener); iv_client = (ImageView)findViewById(R.id.iv_client); iv_wap = (ImageView)findViewById(R.id.iv_wap); GetDBData(); } OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.iv_activity_order_confirm_back: finish(); break; case R.id.bt_activity_order_confirm_submit: Toast.makeText(OrderConfirmActivity.this, "提交订单",Toast.LENGTH_SHORT).show(); submitOrder(); break; case R.id.rl_client: iv_client.setVisibility(View.VISIBLE); iv_wap.setVisibility(View.GONE); isClient = true; break; case R.id.rl_wap: iv_client.setVisibility(View.GONE); iv_wap.setVisibility(View.VISIBLE); isClient = false; break; } } }; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case submit_wap: System.out.println(msg.obj.toString()); jsonWapData(msg.obj.toString()); break; case submit_order: System.out.println(msg.obj.toString()); try { JSONObject jsonObject = new JSONObject(msg.obj.toString()); String order_id = jsonObject.getString("order_id"); pay(order_id); } catch (Exception e) { // TODO: handle exception } break; case RQF_PAY: Intent intent = new Intent(Constant.A_Order); sendBroadcast(intent); WawcApplication.getActivityInstance().exit(); ActivityFactory.A.Toorders(); break; } } }; private void GetDBData(){ DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from " + Constant.TB_Account + " where cust_id=?", new String[]{Variable.cust_id}); if(cursor.getCount() == 0){ }else{ if(cursor.moveToFirst()){ String Consignee = cursor.getString(cursor.getColumnIndex("Consignee")); String Adress = cursor.getString(cursor.getColumnIndex("Adress")); String Phone = cursor.getString(cursor.getColumnIndex("Phone")); et_consignee.setText(Consignee); et_adress.setText(Adress); et_phone.setText(Phone); } } cursor.close(); db.close(); } private void submitOrder(){ String Consignee = et_consignee.getText().toString().trim(); String Adress = et_adress.getText().toString().trim(); String Phone = et_phone.getText().toString().trim(); if(Consignee.equals("")||Adress.equals("")||Phone.equals("")){ Toast.makeText(OrderConfirmActivity.this, "地址等信息不能为空",Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(OrderConfirmActivity.this, "提交订单",Toast.LENGTH_SHORT).show(); String url = Constant.BaseUrl + "order?auth_code=" + Variable.auth_code; List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("cust_id", Variable.cust_id)); params.add(new BasicNameValuePair("order_type", "1")); params.add(new BasicNameValuePair("product_name", "OBD云终端")); params.add(new BasicNameValuePair("remark", "OBD云终端")); params.add(new BasicNameValuePair("unit_price", "0.01")); params.add(new BasicNameValuePair("quantity", "1")); params.add(new BasicNameValuePair("total_price", "0.01")); new Thread(new NetThread.postDataThread(handler, url, params, submit_order)).start(); } } private void pay(String order_id){ if(isClient){ clientPay(); }else{ wapPay(order_id); } } private void clientPay(){ try { Log.i("ExternalPartner", "onItemClick"); String info = getNewOrderInfo(1); String sign = Rsa.sign(info, Keys.PRIVATE); sign = URLEncoder.encode(sign); info += "&sign=\"" + sign + "\"&" + getSignType(); Log.i("ExternalPartner", "start pay"); // start the pay. Log.i(TAG, "info = " + info); final String orderInfo = info; new Thread() { public void run() { AliPay alipay = new AliPay(OrderConfirmActivity.this, handler); //设置为沙箱模式,不设置默认为线上环境 //alipay.setSandBox(true); String result = alipay.pay(orderInfo); Log.i(TAG, "result = " + result); Message msg = new Message(); msg.what = RQF_PAY; msg.obj = result; handler.sendMessage(msg); } }.start(); } catch (Exception ex) { ex.printStackTrace(); Toast.makeText(OrderConfirmActivity.this, "支付出错",Toast.LENGTH_SHORT).show(); } } private String getNewOrderInfo(int position) { StringBuilder sb = new StringBuilder(); sb.append("partner=\""); sb.append(Keys.DEFAULT_PARTNER); sb.append("\"&out_trade_no=\""); sb.append(getOutTradeNo()); sb.append("\"&subject=\""); sb.append("subject"); sb.append("\"&body=\""); sb.append("body"); sb.append("\"&total_fee=\""); sb.append("0.01"); sb.append("\"¬ify_url=\""); // 网址需要做URL编码 //sb.append(URLEncoder.encode("http://notify.java.jpxx.org/index.jsp")); sb.append(URLEncoder.encode("http://wiwc.api.wisegps.cn/pay/app_notify")); sb.append("\"&service=\"mobile.securitypay.pay"); sb.append("\"&_input_charset=\"UTF-8"); sb.append("\"&return_url=\""); sb.append(URLEncoder.encode("http://m.alipay.com")); 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); } private String getOutTradeNo() { SimpleDateFormat format = new SimpleDateFormat("MMddHHmmss"); Date date = new Date(); String key = format.format(date); java.util.Random r = new java.util.Random(); key += r.nextInt(); key = key.substring(0, 15); Log.d(TAG, "outTradeNo: " + key); return key; } private String getSignType() { return "sign_type=\"RSA\""; } private void wapPay(String order_id){ try { String url = Constant.BaseUrl + "pay/get_url?auth_code=" + Variable.auth_code + "&product_name=" + URLEncoder.encode("OBD云终端", "UTF-8") + "&order_id=" + order_id + "&total_price=0.01&cust_id=" + Variable.cust_id; new Thread(new NetThread.GetDataThread(handler, url, submit_wap)).start(); } catch (Exception e) { e.printStackTrace(); } } private void jsonWapData(String result){ try { JSONObject jsonObject = new JSONObject(result); String status_code = jsonObject.getString("status_code"); String redirect = jsonObject.getString("redirect"); if(status_code.equals("0")){ Intent intent = new Intent(OrderConfirmActivity.this, WapZfbActivity.class); intent.putExtra("redirect", redirect); startActivity(intent); } } catch (JSONException e) { e.printStackTrace(); } } }