package com.dreamspace.uucampus.ui.activity.Order;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.dreamspace.uucampus.R;
import com.dreamspace.uucampus.api.ApiManager;
import com.dreamspace.uucampus.common.utils.NetUtils;
import com.dreamspace.uucampus.model.api.PayOrderReq;
import com.dreamspace.uucampus.ui.base.AbsActivity;
import com.dreamspace.uucampus.ui.dialog.ProgressDialog;
import com.google.gson.JsonElement;
import com.pingplusplus.android.PaymentActivity;
import org.json.JSONObject;
import butterknife.Bind;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
/**
* Created by Lx on 2015/11/7.
* 订单支付界面,进入此界面需要传入order_name,order_id,order_total_price,rest_to_pay_price
*/
public class OrderPayAct extends AbsActivity{
@Bind(R.id.order_name_tv)
TextView orderNameTv;
@Bind(R.id.order_price_tv)
TextView orderPriceTv;
@Bind(R.id.rest_pay_tv)
TextView restPayTv;
@Bind(R.id.already_reduce_tv)
TextView reduceTv;
@Bind(R.id.alipay_rl)
RelativeLayout alipayRl;
@Bind(R.id.weichat_pay_rl)
RelativeLayout weichatpayRl;
@Bind(R.id.pay_btn)
Button payBtn;
@Bind(R.id.alipay_iv)
ImageView alipayIv;
@Bind(R.id.weichat_pay_iv)
ImageView weichatpayIv;
private int payWay;
private String orderName;
private String orderId;
private float orderPrice;
private float restToPay;
private boolean actDestory = false;
private ProgressDialog progressDialog;
private static final int ALIPAY = 1;
private static final int WEICHATPAY = 2;
public static final String ORDER_NAME = "ORDER_NAME";
public static final String ORDER_TOTAL_PRICE = "ORDER_TOTAL_PRICE";
public static final String REST_TO_PAY = "REST_TO_PAY";
public static final String ORDER_ID = "ORDER_ID";
private static final int REQUEST_CODE_PAYMENT = 1;
@Override
protected int getContentView() {
return R.layout.activity_order_pay;
}
@Override
protected void prepareDatas() {
Bundle bundle = getIntent().getExtras();
orderName = bundle.getString(ORDER_NAME);
orderId = bundle.getString(ORDER_ID);
orderPrice = bundle.getFloat(ORDER_TOTAL_PRICE);
restToPay = bundle.getFloat(REST_TO_PAY);
}
@Override
protected void initViews() {
getSupportActionBar().setTitle(getString(R.string.order_confirm ));
orderNameTv.setText(orderName);
orderPriceTv.setText(getString(R.string.RMB) + orderPrice / 100);
restPayTv.setText(getString(R.string.RMB) + restToPay / 100);
reduceTv.setText(getString(R.string.already_reduce) + getString(R.string.RMB) + (orderPrice - restToPay) / 100);
initListeners();
}
private void initListeners(){
alipayRl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (payWay != ALIPAY) {
payWay = ALIPAY;
alipayIv.setImageDrawable(getResources().getDrawable(R.drawable.dingdan_btn_get));
weichatpayIv.setImageDrawable(getResources().getDrawable(R.drawable.dingdan_btn_select));
} else {
payWay = -1;
alipayIv.setImageDrawable(getResources().getDrawable(R.drawable.dingdan_btn_select));
}
}
});
weichatpayRl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (payWay != WEICHATPAY) {
payWay = WEICHATPAY;
weichatpayIv.setImageDrawable(getResources().getDrawable(R.drawable.dingdan_btn_get));
alipayIv.setImageDrawable(getResources().getDrawable(R.drawable.dingdan_btn_select));
} else {
payWay = -1;
weichatpayIv.setImageDrawable(getResources().getDrawable(R.drawable.dingdan_btn_select));
}
}
});
payBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (payWay != ALIPAY && payWay != WEICHATPAY) {
showToast(getString(R.string.plz_select_pay_way));
} else {
initProgressDialog();
progressDialog.show();
payOrder();
}
}
});
}
private void payOrder(){
if(!NetUtils.isNetworkConnected(this)){
showNetWorkError();
progressDialog.dismiss();
return;
}
PayOrderReq payOrderReq = new PayOrderReq();
if(payWay == ALIPAY){
payOrderReq.setChannel(getString(R.string.alipay));
}else if(payWay == WEICHATPAY){
payOrderReq.setChannel(getString(R.string.wxpay));
}
ApiManager.getService(this).payOrder(orderId, payOrderReq, new Callback<JsonElement>() {
@Override
public void success(JsonElement data, Response response) {
if (data != null && !actDestory) {
String json = data.toString();
Intent intent = new Intent();
String packageName = getPackageName();
ComponentName componentName = new ComponentName(packageName, packageName + ".wxapi.WXPayEntryActivity");
intent.setComponent(componentName);
intent.putExtra(PaymentActivity.EXTRA_CHARGE, data.toString());
progressDialog.dismiss();
startActivityForResult(intent, REQUEST_CODE_PAYMENT);
}
}
@Override
public void failure(RetrofitError error) {
progressDialog.dismiss();
showInnerError(error);
}
});
}
@Override
protected View getLoadingTargetView() {
return null;
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//支付页面返回处理
if (requestCode == REQUEST_CODE_PAYMENT) {
if (resultCode == Activity.RESULT_OK) {
String result = data.getExtras().getString("pay_result");
/* 处理返回值
* "success" - payment succeed
* "fail" - payment failed
* "cancel" - user canceld
* "invalid" - payment plugin not installed
*/
if(result.equals("success")){
setResult(RESULT_OK);
//进入订单详情页面
Bundle bundle = new Bundle();
bundle.putString(OrderDetailAct.ORDER_ID,orderId);
readyGoThenKill(OrderDetailAct.class,bundle);
}else if(result.equals("fail")){
showToast(getString(R.string.pay_fail));
}
// String errorMsg = data.getExtras().getString("error_msg"); // 错误信息
// String extraMsg = data.getExtras().getString("extra_msg"); // 错误信息
// System.out.println(result);
// System.out.println(errorMsg);
// System.out.println(extraMsg);
}
}
}
@Override
protected void onDestroy() {
actDestory = true;
super.onDestroy();
}
private void initProgressDialog(){
if(progressDialog != null){
return;
}
progressDialog = new ProgressDialog(this);
progressDialog.setContent(getString(R.string.plz_wait));
}
}