⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tenpayapi.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
字号:
package cn.jsprun.api;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import cn.jsprun.utils.Base64Encoder;
import cn.jsprun.utils.JspRunConfig;

import com.tenpay.c2c.bean.PayRequest;
import com.tenpay.c2c.helper.PayRequestHelper;

public class Tenpayapi {
	public static int JSPRUN_COMMISION=0;
	public static int JSPRUN_DIRECTPAY=1;
	public static int STATUS_SELLER_SEND=4;
	public static int STATUS_WAIT_BUYER=5;
	public static int STATUS_TRADE_SUCCESS=7;
	public static int STATUS_REFUND_CLOSE=17;
	public static Map<Integer,Map> status=new HashMap<Integer,Map>(2);
	public static Map<String,String> trade_offlines=new HashMap<String,String>();
	static{
		Map<String,Integer> status1=new HashMap<String,Integer>();
		Map<Integer,String> status2=new TreeMap<Integer,String>();
		status1.put("WAIT_BUYER_PAY", 1);
		status1.put("WAIT_SELLER_CONFIRM_TRADE", 2);
		status1.put("WAIT_SYS_CONFIRM_PAY", 3);
		status1.put("WAIT_SELLER_SEND_GOODS", 4);
		status1.put("WAIT_BUYER_CONFIRM_GOODS", 5);
		status1.put("WAIT_SYS_PAY_SELLER", 6);
		status1.put("TRADE_FINISHED", 7);
		status1.put("TRADE_CLOSED", 8);
		status1.put("WAIT_SELLER_AGREE", 10);
		status1.put("SELLER_REFUSE_BUYER", 11);
		status1.put("WAIT_BUYER_RETURN_GOODS", 12);
		status1.put("WAIT_SELLER_CONFIRM_GOODS", 13);
		status1.put("WAIT_ALIPAY_REFUND", 14);
		status1.put("ALIPAY_CHECK", 15);
		status1.put("OVERED_REFUND", 16);
		status1.put("REFUND_SUCCESS", 17);
		status1.put("REFUND_CLOSED", 18);
		
		status2.put(0, "<font color=\"gray\">未生效的交易</font>");
		status2.put(1,"等待买家付款");
		status2.put(2,"交易已创建,等待卖家确认");
		status2.put(3,"确认买家付款中,暂勿发货");
		status2.put(4,"买家已付款,等待卖家发货");
		status2.put(5,"卖家已发货,买家确认中");
		status2.put(6,"买家确认收到货,等待财付通打款给卖家");
		status2.put(7,"<font color=\"green\">交易成功结束</font>");
		status2.put(8,"<font color=\"gray\">交易中途关闭(未完成)</font>");
		status2.put(10,"等待卖家同意退款");
		status2.put(11,"卖家拒绝买家条件,等待买家修改条件");
		status2.put(12,"卖家同意退款,等待买家退货");
		status2.put(13,"等待卖家收货");
		status2.put(14,"双方已经一致,等待财付通退款");
		status2.put(15,"财付通处理中");
		status2.put(16,"结束的退款");
		status2.put(17,"<font color=\"green\">退款成功</font>");
		status2.put(18,"<font color=\"green\">退款关闭</font>");
		status.put(1, status1);
		status.put(2, status2);
		trade_offlines.put("trade_offline_1", "交易单生效");
		trade_offlines.put("trade_offline_4", "我已付款,等待卖家发货");
		trade_offlines.put("trade_offline_5", "我已发货");
		trade_offlines.put("trade_offline_7", "我收到货,交易成功结束");
		trade_offlines.put("trade_offline_8", "取消此次交易");
		trade_offlines.put("trade_offline_10", "我要退货,等待卖家同意退款");
		trade_offlines.put("trade_offline_11", "卖家拒绝退款");
		trade_offlines.put("trade_offline_12", "卖家同意退款");
		trade_offlines.put("trade_offline_13", "我已退货,等待卖家收货");
		trade_offlines.put("trade_offline_17", "卖家收到退货,已退款");
		trade_offlines.put("trade_message_4", "可输入付款方式、银行账号等信息");
		trade_offlines.put("trade_message_5", "可输入发货公司、发货单号等信息");
		trade_offlines.put("trade_message_13", "可输入发货公司、发货单号等信息");
	}
	public static String  credit_payurl(String boardurl,String chnid,String key,String bbname,String jsprun_userss,Map creditstrans,String onlineip,int ec_ratio,int timestamp,float price,String orderid){
		PayRequest payRequest = new PayRequest();
		payRequest.setChnid(chnid);
		payRequest.setCmdno(12);
		payRequest.setEncode_type("UTF-8".equals(JspRunConfig.charset)?2:1);
		payRequest.setMch_desc("论坛积分充值 "+creditstrans.get("title")+" "+(int)( price * ec_ratio )+" "+creditstrans.get("unit")+" ("+onlineip+")");
		payRequest.setMch_name(bbname+" - "+jsprun_userss+" - 积分充值");
		payRequest.setMch_price((long)(price*100));
		payRequest.setMch_returl(boardurl+"api/notify.jsp?action=ordernotify");
		payRequest.setMch_type(2);
		payRequest.setMch_vno(orderid);
		payRequest.setNeed_buyerinfo(2);
		payRequest.setSeller(chnid);
		payRequest.setShow_url(boardurl);
		payRequest.setTransport_desc("虚拟物品或无需邮递");
		payRequest.setTransport_fee(0);	
		payRequest.setVersion(2);	
		PayRequestHelper payRequestHelper = new PayRequestHelper(key,payRequest);
		return payRequestHelper.getSendUrl();
	}
	public static String trade_payurl(String boardurl,String chnid,String key,Map<String,Object> pay,Map<String,String> trade,Map<String,String> tradelog){
		PayRequest payRequest = new PayRequest();
		String seller = trade.get("account");
		payRequest.setAttach(Base64Encoder.encode("tid="+tradelog.get("tid")+"&pid="+tradelog.get("pid"),JspRunConfig.charset));
		payRequest.setChnid(chnid);
		payRequest.setCmdno(12);
		payRequest.setEncode_type("UTF-8".equals(JspRunConfig.charset)?2:1);
		payRequest.setMch_desc(trade.get("subject"));
		payRequest.setMch_name(trade.get("subject"));
		Float price=Float.valueOf(tradelog.get("baseprice"))*100;
		int quantity=Integer.valueOf(tradelog.get("number"));
		payRequest.setMch_price(price.longValue()*quantity);
		payRequest.setMch_returl(boardurl+"api/notify.jsp?action=tradenotify");
		int transport=Integer.valueOf(tradelog.get("transport"));
		payRequest.setMch_type(transport==3?2:1);
		payRequest.setMch_vno(tradelog.get("orderid"));
		payRequest.setNeed_buyerinfo(2);
		payRequest.setSeller(seller);
		payRequest.setShow_url(boardurl+"viewthread.jsp?do=tradeinfo");
		payRequest.setTransport_desc((String)pay.get("transport"));
		payRequest.setTransport_fee((Integer)pay.get("transportfee")*100);	
		payRequest.setVersion(2);	
		PayRequestHelper payRequestHelper = new PayRequestHelper(key,payRequest);
		return payRequestHelper.getSendUrl();
	}

	public static Object trade_offline(int jsprun_uid,Map<String,String> tradelog,boolean returndlang){
		Integer[] tmp=null;
		int buyerid=Integer.valueOf(tradelog.get("buyerid"));
		int sellerid=Integer.valueOf(tradelog.get("sellerid"));
		int status=Integer.valueOf(tradelog.get("status"));
		Map<Integer,Integer[]> data=new HashMap<Integer,Integer[]>();
		if(jsprun_uid==buyerid){
			data.put(0, new Integer[]{4,8});
			data.put(1, new Integer[]{4,8});
			data.put(8, new Integer[]{1,4});
			data.put(5, new Integer[]{7,10});
			data.put(11,new Integer[]{10,7});
			data.put(12,new Integer[]{13});
			tmp=data.get(status);
		}else if(jsprun_uid==sellerid){
			data.put(0, new Integer[]{1,8});
			data.put(8,new Integer[]{1});
			data.put(4,new Integer[]{5});
			data.put(10,new Integer[]{12,11});
			data.put(13,new Integer[]{17});
			tmp=data.get(status);
		}
		if(returndlang){
			Map<Integer,String> result=new TreeMap<Integer,String>();
			if(tmp!=null){
				int length=tmp.length;
				StringBuffer trade_message=new StringBuffer();
				for (int i = 0; i < length; i++) {
					result.put(tmp[i], trade_offlines.get("trade_offline_"+tmp[i]));
					String message=trade_offlines.get("trade_message_"+tmp[i]);
					if(message!=null){
						trade_message.append(message+"<br />");
					}
				}
				result.put(-1, trade_message.toString());
			}
			return result;
		}else{
			List<Integer> result=new ArrayList<Integer>();
			if(tmp!=null){
				int length=tmp.length;
				for (int i = 0; i < length; i++) {
					result.add(tmp[i]);
				}
			}
			return result;
		}
	}
	public static String trade_typestatus(String method){
		String methodvalue=null;
		if("buytrades".equals(method)){
			methodvalue="1, 5,11, 12";
		}else if("selltrades".equals(method)){
			methodvalue="2, 4,10, 13";
		}else if("successtrades".equals(method)){
			methodvalue="7";
		}else if("tradingtrades".equals(method)){
			methodvalue="1,2,3,4,5,6,10,11,12,13,14,15,16";
		}else if("closedtrades".equals(method)){
			methodvalue="8,17";
		}else if("refundsuccess".equals(method)){
			methodvalue="17";
		}else if("refundtrades".equals(method)){
			methodvalue="14,15,16,17,18";
		}else if("unstarttrades".equals(method)){
			methodvalue="0";
		}else if("eccredittrades".equals(method)){
			methodvalue="7, 17";
		}
		return methodvalue;
	}
	public static boolean trade_typestatus(String method,int status){
		String methodvalue=trade_typestatus(method);
		return (","+methodvalue+",").contains(","+status+",");
	}
	public static Object trade_getstatus(Object key){
		return trade_getstatus(key,2);
	}
	public static Object trade_getstatus(Object key,int method){
		return method == -1?status.get(2):status.get(method).get(key);
	}
	@SuppressWarnings("unchecked")
	public static void trade_setprice(Map<String,Object> data,Float price,Map<String,Object> pay,Integer transportfee){
		int transport=(Integer)data.get("transport");
		switch (transport) {
			case 1:
				pay.put("transport", "卖家承担运费");
				break;
			case 2:
				pay.put("transport", "买家承担运费");
				break;
			case 3:
				pay.put("transport", "虚拟物品或无需邮递");
				break;
			default:
				pay.put("transport", "买家收到货物后直接支付给物流公司");
				break;
		}
		if(transport!=3){
			int fee=(Integer)data.get("fee");
			Map<String,String> trade=(Map<String,String>)data.get("trade");
			switch (fee) {
				case 1:
					int ordinaryfee=Integer.valueOf(trade.get("ordinaryfee"));
					pay.put("logistics_type", "POST");
					pay.put("logistics_fee", ordinaryfee);
					if(transport==2){
						price = price + ordinaryfee;
						transportfee=ordinaryfee;
					}
					break;
				case 2:
					int emsfee=Integer.valueOf(trade.get("emsfee"));
					pay.put("logistics_type", "EMS");
					pay.put("logistics_fee", emsfee);
					if(transport==2){
						price = price + emsfee;
						transportfee=emsfee;
					}
					break;
				default:
					int expressfee=Integer.valueOf(trade.get("expressfee"));
					pay.put("logistics_type", "EXPRESS");
					pay.put("logistics_fee", expressfee);
					if(transport==2){
						price = price + expressfee;
						transportfee=expressfee;
					}
					break;
			}
		}
		pay.put("price", price);
		pay.put("transportfee", transportfee);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -