📄 tenpayapi.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 + -