package com.nq.utils.pay;
|
|
|
import com.alibaba.fastjson.JSON;
|
import com.nq.common.CmcPayConfig;
|
import com.nq.controller.protol.UserPayController;
|
import org.apache.commons.collections.map.LinkedMap;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.net.InetAddress;
|
import java.text.DecimalFormat;
|
import java.text.SimpleDateFormat;
|
import java.util.Base64;
|
import java.util.Date;
|
|
|
/**
|
* Created by xieyuxing on 2017/9/22.
|
*/
|
|
public class CmcPayTool {
|
private static final Logger log = LoggerFactory.getLogger(UserPayController.class);
|
|
/*Cmc支付提交*/
|
public static String submitOrder(String amount, String orderid, String pay_id, HttpServletRequest request) throws Exception {
|
if (orderid==null||orderid.trim().equals("")) orderid= "OF"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
|
LinkedMap params=new LinkedMap();
|
params.put("merchantid", CmcPayConfig.UID);//商戶ID
|
params.put("orderno", orderid); //商戶業務訂單號
|
params.put("orderamount", amount);//支付購買數量:USDT 單位為(個),CNY 單位為(元)不支持小數點
|
params.put("paytype", "bank");// 付款方式(小寫英文):alipay 支付寶,bank 銀聯卡轉賬
|
params.put("ordercurrency", "CNY");//購買幣種:USDT(泰達幣),CNY(人民幣)
|
String userAgent = request.getHeader("user-agent");
|
String returnUrl = CmcPayConfig.RETURN_URL;
|
if (userAgent.indexOf("Android") != -1 || userAgent.indexOf("iPhone") != -1 || userAgent.indexOf("iPad") != -1) {
|
returnUrl = returnUrl.replace("/homes/","/wap/");
|
}
|
params.put("callbackurl", returnUrl);//支付完成跳轉地址,需帶 http:/
|
params.put("serverbackurl", CmcPayConfig.NOTIFY_URL); //訂單回調通知地址,需帶 http://
|
params.put("signtype", "md5");//簽名加密算法:目前只支持 md5,32 位小寫
|
Base64.Encoder encoder = Base64.getEncoder();
|
log.info("提交支付訂單key="+CmcPayConfig.KEY);
|
String _sign= CmcPayOuterRequestUtil.getSign(params, CmcPayConfig.KEY);
|
params.put("sign", _sign);
|
params.put("url", CmcPayConfig.URL);
|
String par = JSON.toJSONString(params).toString();
|
log.info("提交支付訂單參數="+par);
|
//String urlWithParams=CmcPayOuterRequestUtil.post(CmcPayConfig.URL,params);
|
return par;
|
}
|
|
/*H5支付提交*/
|
public static String submitOrderH5(String amount, String orderid, String pay_id) throws Exception {
|
if (orderid==null||orderid.trim().equals("")) orderid= "OF"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
|
LinkedMap params=new LinkedMap();
|
params.put("appid", CmcPayConfig.H5UID);//商戶ID
|
params.put("data", orderid); //商戶業務訂單號
|
Double d= Double.parseDouble(amount);
|
DecimalFormat df = new DecimalFormat("0.00");
|
String s = df.format(d);
|
params.put("money", s);//訂單價格(單位為分)
|
params.put("type", pay_id);//類型 1 支付寶 2 QQ錢包 3 微信 4 雲閃付
|
InetAddress addr = InetAddress.getLocalHost();
|
params.put("uip",addr.getHostAddress());//客戶IP地址
|
Base64.Encoder encoder = Base64.getEncoder();
|
log.info("提交支付訂單key="+CmcPayConfig.H5KEY);
|
String _sign= CmcPayOuterRequestUtil.getSignH5(params, CmcPayConfig.H5KEY);
|
params.put("token", _sign);
|
String urlWithParams=CmcPayOuterRequestUtil.post(CmcPayConfig.H5URL,params);
|
return urlWithParams;
|
/*params.put("url", CmcPayConfig.H5URL);
|
String par = JSON.toJSONString(params).toString();
|
log.info("提交支付訂單參數="+par);
|
return par;*/
|
}
|
}
|