package com.hugnew.sps.services.pay.strategy;
import com.hugnew.core.util.PropertiesUtil;
import com.hugnew.sps.services.pay.util.web.unionpay.upop.sdk.QuickPayConf;
import com.hugnew.sps.services.pay.util.web.unionpay.upop.sdk.QuickPayUtils;
import com.hugnew.sps.services.pay.util.web.unionpay.util.DemoBase;
import com.hugnew.sps.enums.PayType;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
/**
* 银联web支付(对接upop,仅用于示范,upop属于老平台,acp是新平台)
* Created by Martin on 2016/7/01.
*/
public class UnionWebStrategy extends DemoBase implements PayStrategy {
private static Logger logger = LoggerFactory.getLogger(UnionWebStrategy.class);
@Override
public String generatePayParams(PayType payType, Map<String, Object> params) {
String retUrl = null;
if (params.size() > 0 && null != params.get("retUrl")) {
retUrl = (String) params.get("retUrl");
}
//商户需要组装如下对象的数据
String[] valueVo = new String[]{
QuickPayConf.version,//协议版本
QuickPayConf.charset,//字符编码
QuickPayConf.transType,//交易类型
"",//原始交易流水号
QuickPayConf.merCode,//商户代码
QuickPayConf.merName,//商户简称
"",//收单机构代码(仅收单机构接入需要填写)
"",//商户类别(收单机构接入需要填写)
"",//商品URL
QuickPayConf.commodityName,//商品名称
"",//商品单价 单位:分
"",//商品数量
QuickPayConf.commodityDiscount,//折扣 单位:分
"",//运费 单位:分
(String) params.get("payCode"),//订单号(需要商户自己生成)
String.valueOf(((BigDecimal)params.get("toPay")).multiply(BigDecimal.valueOf(100)).longValue()),//交易金额 单位:分
QuickPayConf.orderCurrency,//交易币种
new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()),//交易时间
QuickPayConf.customerIp,//用户IP
"",//用户真实姓名
"",//默认支付方式
"",//默认银行编号
"",//交易超时时间
StringUtils.isNotBlank(retUrl) ? retUrl : PropertiesUtil.getValue("pay.request.retUrl"),// 前台回调商户URL
PropertiesUtil.getValue("pay.notify.unionpayWeb.url"),// 后台回调商户URL
""//商户保留域
};
String signType = QuickPayConf.signType;
String rethtml = new QuickPayUtils().createPayHtml(valueVo, signType);//跳转到银联页面支付
if(logger.isDebugEnabled()){
logger.debug("union参数信息:{}", rethtml);
}
return rethtml;
}
}