public class Fragment2 extends Fragment implements MainView {
RecyclerView pay_recycler;
MainPresenterIm presenterIm;
PayAdapter payAdapter;
String userId = "1673";
String sessionId = "15619839360551673";
String orderId1;
private static final int SDK_PAY_FLAG = 1;
private static final int SDK_AUTH_FLAG = 2;
@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler() {
@SuppressWarnings("unused")
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
@SuppressWarnings("unchecked")
PayResult payResult = new PayResult((Map<String, String>) msg.obj);
/**
对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
*/
String resultInfo = payResult.getResult();// 同步返回需要验证的信息
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为9000则代表支付成功
if (TextUtils.equals(resultStatus, "9000")) {
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
Toast.makeText(getActivity(), "支付成功", Toast.LENGTH_SHORT).show();
} else {
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
Toast.makeText(getActivity(), "支付失败", Toast.LENGTH_SHORT).show();
}
break;
}
case SDK_AUTH_FLAG: {
}
default:
break;
}
};
};
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment2, container, false);
pay_recycler = inflate.findViewById(R.id.pay_recycler);
presenterIm = new MainPresenterIm(new MainModelIm(), this);
payAdapter = new PayAdapter(getActivity());
//布局管理器
pay_recycler.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, true));
pay_recycler.setAdapter(payAdapter);
//待付款
inflate.findViewById(R.id.pay_but1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, String> map = new HashMap<>();
map.put("page", 1 + "");
map.put("count", 10 + "");
map.put("status", 1 + "");
presenterIm.doGet1(0, "movieApi/user/v1/verify/findUserBuyTicketRecordList", userId, sessionId, map);
}
});
//已完成
inflate.findViewById(R.id.pay_but2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, String> map = new HashMap<>();
map.put("page", 1 + "");
map.put("count", 10 + "");
map.put("status", 2 + "");
presenterIm.doGet1(1, "movieApi/user/v1/verify/findUserBuyTicketRecordList", userId, sessionId, map);
}
});
//支付
payAdapter.setButClickListener(new PayAdapter.OnButClickListener() {
@Override
public void onClick(String orderId) {
orderId1 = orderId;
Map<String, String> map = new HashMap<>();
map.put("payType", "2");
map.put("orderId", orderId1);
presenterIm.doPost(2, "movieApi/movie/v1/verify/pay", userId, sessionId, map);
}
});
return inflate;
}
@Override
public void success(int type, String data) {
if (type == 0) {
PayBean payBean = new Gson().fromJson(data, PayBean.class);
List<PayBean.ResultBean> result = payBean.getResult();
if (result != null) {
payAdapter.setList(result);
}
}else if (type == 1){
PayBean payBean = new Gson().fromJson(data, PayBean.class);
List<PayBean.ResultBean> result = payBean.getResult();
if (result != null) {
payAdapter.setList(result);
}
}else {
final SuccessBean successBean = new Gson().fromJson(data, SuccessBean.class);
if (successBean.getStatus().equals("0000")){
Runnable payRunnable = new Runnable() {
@Override
public void run() {
PayTask alipay = new PayTask(getActivity());
Map <String,String> result = alipay.payV2(successBean.getResult(),true);
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
msg.obj = result;
mHandler.sendMessage(msg);
}
};
// 必须异步调用
Thread payThread = new Thread(payRunnable);
payThread.start();
}else{
Toast.makeText(getActivity(), successBean.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void fail(int type, String error) {
}
}
PayAdapter
public class PayAdapter extends RecyclerView.Adapter<PayAdapter.PayViewHolder> {
private Context context;
private List<PayBean.ResultBean> list;
public PayAdapter(Context context) {
this.context = context;
list = new ArrayList<>();
}
public void setList(List<PayBean.ResultBean> list) {
this.list = list;
notifyDataSetChanged();
}
@NonNull
@Override
public PayAdapter.PayViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View inflate = LayoutInflater.from(context).inflate(R.layout.pay_item, viewGroup, false);
return new PayViewHolder(inflate);
}
@Override
public void onBindViewHolder(@NonNull PayAdapter.PayViewHolder payViewHolder, final int i) {
payViewHolder.pay_item_title.setText("电影名:" + list.get(i).getMovieName());
payViewHolder.pay_item_address.setText("地址:" + list.get(i).getScreeningHall());
payViewHolder.pay_item_price.setText("¥:" + list.get(i).getPrice());
payViewHolder.pay_item_but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String orderId = list.get(i).getOrderId();
butClickListener.onClick(orderId);
}
});
int status = list.get(i).getStatus();
if (status == 1) {
} else {
payViewHolder.pay_item_but.setVisibility(View.GONE);
}
}
@Override
public int getItemCount() {
return list.size();
}
public class PayViewHolder extends RecyclerView.ViewHolder {
private TextView pay_item_title, pay_item_address, pay_item_price;
private Button pay_item_but;
public PayViewHolder(@NonNull View itemView) {
super(itemView);
pay_item_title = itemView.findViewById(R.id.pay_item_title);
pay_item_address = itemView.findViewById(R.id.pay_item_address);
pay_item_price = itemView.findViewById(R.id.pay_item_price);
pay_item_but = itemView.findViewById(R.id.pay_item_but);
}
}
private OnButClickListener butClickListener;
public void setButClickListener(OnButClickListener butClickListener) {
this.butClickListener = butClickListener;
}
public interface OnButClickListener {
void onClick(String orderId);
}
}