810 lines
42 KiB
Java
810 lines
42 KiB
Java
package com.guahao.api.walkinto.service;
|
||
|
||
import com.alibaba.fastjson.JSON;
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.guahao.common.util.HttpClientUtil;
|
||
import com.guahao.common.util.JedisUntils;
|
||
import com.guahao.common.util.VeDate;
|
||
// sang:注释icbc部分
|
||
// import com.icbc.api.DefaultIcbcClient;
|
||
// import com.icbc.api.IcbcApiException;
|
||
// import com.icbc.api.IcbcConstants;
|
||
// import com.icbc.api.UiIcbcClient;
|
||
// import com.icbc.api.request.CardbusinessAggregatepayB2cOnlineMerrefundRequestV1;
|
||
// import com.icbc.api.request.CardbusinessAggregatepayB2cOnlineOrderqryRequestV1;
|
||
// import com.icbc.api.request.CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1;
|
||
// import com.icbc.api.request.CardbusinessEpayh5UiConsumptionRequestV1;
|
||
// import com.icbc.api.response.CardbusinessAggregatepayB2cOnlineMerrefundResponseV1;
|
||
// import com.icbc.api.response.CardbusinessAggregatepayB2cOnlineOrderqryResponseV1;
|
||
// import com.icbc.api.utils.IcbcSignature;
|
||
// import com.icbc.api.utils.WebUtils;
|
||
import org.slf4j.Logger;
|
||
import org.slf4j.LoggerFactory;
|
||
import org.springframework.stereotype.Service;
|
||
|
||
import javax.servlet.http.HttpServletRequest;
|
||
import javax.servlet.http.HttpServletResponse;
|
||
import java.io.PrintWriter;
|
||
import java.text.SimpleDateFormat;
|
||
import java.util.Date;
|
||
import java.util.HashMap;
|
||
import java.util.Map;
|
||
|
||
@Service
|
||
public class PayService {
|
||
|
||
private Logger log = LoggerFactory.getLogger(PayService.class);
|
||
|
||
//商户编号
|
||
public static final String MER_ID="1726317574";
|
||
// public static final String MER_ID="060351010017004";
|
||
|
||
//线上协议编号
|
||
public static final String MER_PRTCL_NO="060351010017004";
|
||
|
||
//工行APPID
|
||
public static final String GH_APP_ID="10000000000003190784";
|
||
|
||
//微信APPID
|
||
public static final String WX_APP_ID="wx45acd2b4907cb8f4";
|
||
|
||
//微信AppSecret
|
||
public static final String WX_SECRET="4b5c37baebecfa9d5d0282c5d2867cd2";
|
||
|
||
// public static final String URL="http://gzh.btlsoln.com/WGZH";
|
||
public static final String URL="http://wx.btdbyy.cn:9081";
|
||
|
||
//工行网关公钥
|
||
public static final String APIGW_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCMpjaWjngB4E3ATh+G1DVAmQnIp\n" +
|
||
"iPEFAEDqRfNGAVvvH35yDetqewKi0l7OEceTMN1C6NPym3zStvSoQayjYV+eIcZER\n" +
|
||
"kx31KhtFu9clZKgRTyPjdKMIth/wBtPKjL/5+PYalLdomM4ONthrPgnkN4x4R0+D4\n" +
|
||
"+EBpXo8gNiAFsNwIDAQAB";
|
||
|
||
//自己的私钥
|
||
// public static final String MY_PRIVATE_KEY="MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCWrJCh0z3q4w0yFyZSfYyPZPlbQYdz/dyGL6nodVlgELspDQ2XencoO1vg43T7OOEQDScp3IREDcha+9I/iGLSiPIlYUEfqQyCWIC28Jr0gr1f+zfb4pbejY46Fc2SntGmwlN/JPLPHWhKLpig/i6aqZN3IvXPM9Lu5tW0JSa6uEPsYIMPZY/2+8okuvPuBU2Zlzdf+pvtP+BUVc/GjbFI26F+uo95eLBufuBnZ9z++ttP4UrAZJ7VNU2iztHheBgV9S3nupdL1SJN6Ga+ZROdfXEo8KKVSQmjPh9U3eaz+o3iLnuAnoj3UP31SuDeiOGLdRW0YY5MzFmvCHBA1b4vAgMBAAECggEALDFVAoHIyVnrBuQPU2aLkYtWL9PafMTap2jXdtzkZ+7AVlwDvogm5t/yJNXR+9VE/cY91GNfT+6S80yk8Al6orGUBC6wQS7+AkUfC4kqicjG7p3qVk3xXjk6nALFFtoKN9ULVGFr7h979TYRgjbLSIWwQOM6IZnbpkKCL6It59mrp5ns6EQthEVvijpD7yqj7xCOAB1EF8tBG9TyM+jc5exbslbQKtapAaGTEBVPLNC66rOkaDIlBQY6tQwzugCBzVo31//Jrx0pule7MNBdP1iCqP5XvLIgJ+P/al9d32vgbN+Ce1VUD9ghAJ44VzdDhNMsfXVVx/xPKdB2Luw2wQKBgQDgVcY3Pb+0lFIRhT81OpFne1JnVxmXCDkoqWWNnVOY7rFsd71Xf4tnYfr9fdIZHy/esun2OFhkGr/gK5K6HJW+LtZHCwXTO10TR5h+mWbJBSNCpOGVf/ZeRuaKrRLcPeeKllIZN3MYkL5ytLrBccskvCUZxNZL4E2P2U7TRop/8QKBgQCr8Rdfa6uWLcA7MqaS3Y6MCemLAvLqdRwe8r+zRfrS0kbz3bJB/wDdb1qrx7m72uSkFQjQvOnFzoaVuPy95WCOTEjWel7QtFmTYuFEN+kx2qBQiW0KU3C0H7CHLDDk6593og5qSsU3tA3wHQOatFFYY+7TGBYmhKcuHklyy1RAHwKBgQC8gZcECFE0zoV/z3XjpolUaV4/FAOe0/wj3ORG8XKzya8xNBTYl4ZuovijVbzb+0bgXXsXuRUdWRTuq+6pkSeLHhRUskB81R9K+hh8GS8zr6uHbsFYPKSrZ+yFjxWQGDyeSd5G7j863zYJcTCVKKfJAIg0dSCVta+3NqV0B4yOIQKBgQCL1Ow/K99FqTt2aUDSm+B7vuvxo5pOVqNh/+UrNLRBk8UkOp3n0iyv6QmCPlGslt3vGzQqHhi4R7doOCNDhDG8SAnMc4R8ks9ub7HnutipNLXACaNmDGnR8xurMqMo6P6tWlwC0YAGRyY2qkHuJMsq6Uqm3iXVeXhEp1jwRK/l3QKBgQCjaN6BNFHq3PM9JYHlQgJNG0ACOVW4bqEp7dy7WFaLHXuJwlpN4zoI/FYS+zVVEwX3A//d+iW29w7VR543CB0QjZNUB+swYA8KYrtDqXC2o9bF+LKSq10Ga/BHNWDHZZTm2XiFxzzpVQAcuaumoj0+5qQpQ5ZvR6HZVOEo8uq0EQ==";
|
||
public static final String MY_PRIVATE_KEY="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCJFkZeWd97TiE3LmhTHOL0dM5Oa2cMf9oKX9xiuALskTHX+2JpvNysLobqXmqgXjyeVTXP1bRldQRM5FEYfZA9oSZhRrw943ik/2UUeJJ2sq8wMa3XTrw9wWjJw9eP1lnc5IseBT1Tn/QTJhLm6ydjqXjl/KyBF3HMZy7rKiqt9vH6zDaSwYGHC+UeVbQvcvLdwJDVsiv7Ah5SgIVZydfUXKwKx4BbkHLbn0zMEWAIzFlu92xpDQ8+mX6lMZS9jefcSDmrwpLFIUmkfb6ZM4lqWV1Z01QXws8vu4ONEqT7mxJ9oNQmIVk9Ys4YiSn6bCN8zTCdNzsVmXN+iL/jcNQRAgMBAAECggEAZ06uAPRhgh7C0T7bx6aBMg/EWTx/D+BZhG/xOUPKkFRq54S+CUkWU3tMmNpGKExcCkXUo6c8pyij8P4uTvJw/MCwl6YivdDqXg1JM0AZv/GwK/WEODlRiohyW3qGvBKg7eIdJKZ2LMrhuHx8yiB0MprITSk5Jp9wVsV7iiTgvO+8ywz6SW0mANvuxSh/5/mR/ybQK+40IuVHTyScvL03jK1woiLM1zNqc9Rv/kb2oAvO7NbogmPxbM44TR8L8YDgnAcDugONqE3dZfR8fmgUJQRixaAijx2Q/xoqoxhGkfVrhfUdKBsiHL+uuji5CgZbYDgTGTue0jiYmNkk+rGnAQKBgQDMQdIvdsFfuhFM4TQEy7FivEcFxvWlQ4IshwFhAxJAQpcqxuKq8i5qjsZ5RGrg8Le3KaFbmfS99QRoL8xM22cfLAz/p6z1BP52wY4No+/MSsMZGuBDivBX9ASUVNPHOWzAoq8qCMZ69nb+mVCU/O+T4ePxilRZATpcKanPUG7DuQKBgQCr0HApc+ooPQ5Akho3JupgqtpFERvG4dSxWiU9qx0/kMAbfDsCL63zciceMuq0t31yzs/5KmzJtJIOC0iUaLBSJhA53ZCXCJUULZbAWSgw6nbbIsx1F5JrJFoZrQtqxzLU/+i2TMA5ZxHmtXvzK2TwG4aOn11A7VUvv5luPhbvGQKBgQCZLyvwyMFRh3v+Ck824YSRJd6l6IbFgJGZz04rcWA4rTgtrqbDyYkiBR24SKVXOXCufxwyVI4GAEFj2aUAZvM5n5HIEfpWb35fld1xQWdP8SnMJCnYvdRuQeVFUTDakqiK9/ciMR6ZjUnEuzqB4gfTAnAu760+avtXry9Y+Vt4kQKBgF3w7LKtjzULFRTXDYBkRbgvEoK69P4MEhgaWsxaF/bedTtR9I2gdjLqklrfqha/UNcKHwp0WOD8WvNU1g1XJDj2WN7atyjtZ12OA6QN23zLZcsxPqszBTqRuLXbOKfcXH27ooiydFOueEo1ppzxeBIUasDmf711RqOB1ilBx5ZZAoGAFnZLJdV8SM6xm7FlXwjWN5I/4CB/hmyD5a4KNGq9clX7IUIsn9ywA+J5Cm4utpiMEyTOf0yA/iiup4YQWu+akhyded4uawd2yeyoLMu1o/ZYbiruH29/VST6iSpe6r0H7UU7B+R+0WFoXj3G6PMoMtl4LsZhdT3zUtVb2XCwbCY=";
|
||
|
||
public String getOpenid(String code){
|
||
String accessUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+WX_APP_ID+"&secret="+WX_SECRET+"&code="+code+"&grant_type=authorization_code";
|
||
String accessTokenStr = HttpClientUtil.doGet(accessUrl,null);
|
||
JSONObject jsonObject = JSON.parseObject(accessTokenStr);
|
||
System.out.println(jsonObject.toString());
|
||
log.info(jsonObject.toString());
|
||
if (jsonObject.get("errcode") != null) {
|
||
System.out.println(jsonObject.get("errcode").toString() + ":" + jsonObject.get("errmsg"));
|
||
}
|
||
String openId = jsonObject.getString("openid");
|
||
|
||
return openId;
|
||
}
|
||
|
||
/**
|
||
* 调起支付接口
|
||
*
|
||
* @param money 支付金额
|
||
* @param out_trade_no 订单号
|
||
* @param notify_url 回调地址
|
||
* @param body 商品名称
|
||
* @return 返回自动提交的form表单
|
||
*/
|
||
public String pay(Double money,String out_trade_no,String notify_url,String body){
|
||
// sang:注释icbc部分,添加String返回值
|
||
String ret = null;
|
||
return ret;
|
||
//需传入appid,私钥,字符集
|
||
// UiIcbcClient client = new UiIcbcClient(GH_APP_ID, IcbcConstants.SIGN_TYPE_RSA2, MY_PRIVATE_KEY, IcbcConstants.CHARSET_UTF8);
|
||
// CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1 request = new CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1();
|
||
// //根据测试环境和生产环境替换相应ip和端口
|
||
// request.setServiceUrl("https://gw.open.icbc.com.cn/ui/cardbusiness/aggregatepay/b2c/online/ui/consumepurchaseshowpay/V1");
|
||
// CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1.CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1Biz bizContent = new CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1.CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1Biz();
|
||
// request.setBizContent(bizContent);
|
||
// //请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
|
||
// bizContent.setExpireTime("120");
|
||
// bizContent.setIcbc_appid(GH_APP_ID);
|
||
// bizContent.setMer_id(MER_ID);
|
||
// bizContent.setMer_prtcl_no(MER_PRTCL_NO);
|
||
// bizContent.setNotify_type("HS");
|
||
// bizContent.setNotify_url(URL+notify_url);
|
||
//
|
||
// bizContent.setResult_type("0");
|
||
// // bizContent.setReturn_url(URL+"/dist/index.html#/Yygh?type=1");
|
||
// bizContent.setReturn_url("http://gzh.btlsoln.com/jojugongzhonghao/#/Yylb");
|
||
//
|
||
// //订单金额
|
||
// int m= (int) Math.round(money*100);
|
||
// bizContent.setOrder_amt(""+m);
|
||
// bizContent.setOut_trade_no(out_trade_no);
|
||
// bizContent.setSaledepname("包头第八医院");
|
||
// String str="就医缴费";
|
||
// if(body!=null||!body.trim().equals("")){
|
||
// str=body.trim();
|
||
// if(body.trim().equals("挂号费")){
|
||
// //支付成功跳转地址
|
||
// bizContent.setReturn_url("http://wx.btdbyy.cn:9081/jojugongzhonghao/#/Yylb");
|
||
// }else if(body.trim().equals("住院预交支付")){
|
||
// bizContent.setReturn_url("http://wx.btdbyy.cn:9081/jojugongzhonghao/index.html#/ZYCharge_list?inHosNum=2020111990437&HosDate=");
|
||
// }
|
||
// }
|
||
// bizContent.setBody(str);
|
||
// try {
|
||
// String ret=client.buildPostForm(request);
|
||
// System.out.println(ret);
|
||
// log.debug("payment info:" + ret);
|
||
// JedisUntils.getJedis().set(bizContent.getOut_trade_no(),ret);
|
||
// return ret;
|
||
// } catch (IcbcApiException e) {
|
||
// e.printStackTrace();
|
||
// return null;
|
||
// }
|
||
|
||
}
|
||
|
||
/**
|
||
* 支付回调
|
||
* @param request
|
||
* @param response
|
||
*/
|
||
public void callback(HttpServletRequest request, HttpServletResponse response){
|
||
PrintWriter out = null;
|
||
try {
|
||
|
||
Map<String, String> params=new HashMap<String, String>();
|
||
String from=request.getParameter("from");
|
||
String api=request.getParameter("api");
|
||
String app_id=request.getParameter("app_id");
|
||
String charset=request.getParameter("charset");
|
||
String format=request.getParameter("format");
|
||
String encrypt_type=request.getParameter("encrypt_type");
|
||
String timestamp=request.getParameter("timestamp");
|
||
String biz_content=request.getParameter("biz_content");
|
||
String sign_type=request.getParameter("sign_type");
|
||
String sign=request.getParameter("sign");
|
||
params.put("from", from);
|
||
params.put("api", api);
|
||
params.put("app_id", app_id);
|
||
params.put("charset", charset);
|
||
params.put("format", format);
|
||
params.put("encrypt_type", encrypt_type);
|
||
params.put("timestamp", timestamp);
|
||
params.put("biz_content", biz_content);
|
||
params.put("sign_type", sign_type);//目前上行网关签名暂时仅支持RSA
|
||
|
||
/**********验证工行上行网关RSA签名**********/
|
||
log.info("==================================");
|
||
log.info(params.toString());
|
||
//回调接口
|
||
String path="/pay/callback";
|
||
// sang:注释icbc部分,改为null
|
||
// WebUtils.buildOrderedSignStr(path, params)
|
||
String signStr= null;
|
||
String results = null;
|
||
String responseBizContent= null;
|
||
// sang:注释icbc部分,改为true
|
||
// IcbcSignature.verify(signStr, sign_type, APIGW_PUBLIC_KEY, charset, sign);
|
||
boolean flag=true;
|
||
|
||
log.info("---------------------"+flag);
|
||
//验证签名
|
||
if (!flag) {
|
||
responseBizContent= "{\"return_code\":-12345,\"return_msg\":\"icbc sign not pass.\"}";
|
||
}
|
||
else
|
||
{
|
||
System.out.println("-----------------支付成功-------------------");
|
||
/**********合作方/分行 业务逻辑处理**********/
|
||
@SuppressWarnings("unchecked")
|
||
Map<String, Object> respMap = (Map<String, Object>) JSON.parse(biz_content);
|
||
log.info("return_code:"+respMap.get("return_code")+",return_msg:"+respMap.get("return_msg"));
|
||
if(!respMap.get("return_code").toString().equals("0")){
|
||
responseBizContent= "{\"return_code\":-12345,\"return_msg\":\""+respMap.get("return_msg")+"\"}";
|
||
}else{
|
||
|
||
String msg_id=respMap.get("msg_id").toString();
|
||
//业务请求字段获取
|
||
String outTradeNo=(String)respMap.get("out_trade_no");
|
||
String order_id=(String)respMap.get("order_id");
|
||
//业务处理逻辑......
|
||
System.out.print(outTradeNo);
|
||
//业务返回参数设置
|
||
int return_code=0;
|
||
String return_msg="success.";
|
||
responseBizContent="{\"return_code\":"+return_code+",\"return_msg\":\""+return_msg+"\",\"msg_id\":\""+msg_id+"\","
|
||
+"\"busi_param_rp\":\"thisisresponseparameter\"}";
|
||
|
||
}
|
||
}
|
||
|
||
//2、商户以RSA签名为例,如下:其中,priKey为商户私钥;
|
||
|
||
signStr="\"response_biz_content\":"+responseBizContent+","+"\"sign_type\":"+"\"RSA2\"";
|
||
// sang:注释icbc部分,改为null
|
||
// IcbcSignature.sign(signStr, "RSA2", MY_PRIVATE_KEY,
|
||
// charset);
|
||
sign=null;
|
||
results="{"+signStr+",\"sign\":\""+sign+"\"}";
|
||
|
||
response.setContentType("application/json; charset=utf-8");
|
||
out = response.getWriter();
|
||
out.write(results);
|
||
|
||
}catch (Throwable e) {
|
||
e.printStackTrace();
|
||
out.write(e.getMessage());
|
||
} finally {
|
||
out.flush();
|
||
out.close();
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 查询
|
||
* @param out_trade_no 订单号
|
||
* @return
|
||
*/
|
||
public String inq(String out_trade_no){
|
||
String ret = "";
|
||
//签名类型为RSA2时,需传入appid,私钥和网关公钥,签名类型使用定值cbcConstants.SIGN_TYPE_RSA2,其他参数使用缺省值
|
||
// sang:注释icbc部分
|
||
// DefaultIcbcClient client = new DefaultIcbcClient(GH_APP_ID, IcbcConstants.SIGN_TYPE_RSA2,
|
||
// MY_PRIVATE_KEY, APIGW_PUBLIC_KEY);
|
||
// CardbusinessAggregatepayB2cOnlineOrderqryRequestV1 request = new
|
||
// CardbusinessAggregatepayB2cOnlineOrderqryRequestV1();
|
||
// //根据测试环境和生产环境替换相应ip和端口
|
||
// request.setServiceUrl("https://gw.open.icbc.com.cn/api/cardbusiness/aggregatepay/b2c/online/orderqry/V1");
|
||
//
|
||
// //请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
|
||
// CardbusinessAggregatepayB2cOnlineOrderqryRequestV1.CardbusinessAggregatepayB2cOnlineOrderqryRequestV1Biz bizContent = new
|
||
// CardbusinessAggregatepayB2cOnlineOrderqryRequestV1.CardbusinessAggregatepayB2cOnlineOrderqryRequestV1Biz();
|
||
// request.setBizContent(bizContent);
|
||
//
|
||
// bizContent.setMer_id(MER_ID);//商户编号‐必输项
|
||
//
|
||
// //商户订单号
|
||
// bizContent.setOut_trade_no(out_trade_no);
|
||
//
|
||
// //bizContent.setOrder_id("020001030558000611912230005002");
|
||
// bizContent.setDeal_flag("0");
|
||
// bizContent.setIcbc_appid(GH_APP_ID);
|
||
//
|
||
// CardbusinessAggregatepayB2cOnlineOrderqryResponseV1 response;
|
||
|
||
log.debug("------------------------------查询单号:"+out_trade_no);
|
||
// sang:注释icbc部分
|
||
// try{
|
||
// response=client.execute(request,"bdby" + System.currentTimeMillis());
|
||
// //msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
|
||
//
|
||
// if(response.getReturnCode()==0){
|
||
// //6、业务成功处理,请根据接口文档用response.getxxx()获取同步返回的业务数据
|
||
// log.debug("查询ReturnCode:"+response.getReturnCode());
|
||
// log.debug("查询response:"+JSON.toJSONString(response));
|
||
// ret=JSON.toJSONString(response);
|
||
// }else{
|
||
// //失败
|
||
// log.debug("查询response:"+JSON.toJSONString(response));
|
||
// log.debug("查询ReturnCode:"+response.getReturnCode());
|
||
// log.debug("查询ReturnMsg:"+response.getReturnMsg());
|
||
// ret=JSON.toJSONString(response);
|
||
// }
|
||
// }catch(IcbcApiException e){
|
||
// e.printStackTrace();
|
||
// }
|
||
return ret;
|
||
}
|
||
|
||
/**
|
||
* 退款
|
||
* @param money 退款金额
|
||
* @param out_trade_no 订单号
|
||
* @return
|
||
*/
|
||
public String refundHis(Double money,String out_trade_no){
|
||
String ret = "";
|
||
//签名类型为RSA2时,需传入appid,私钥和网关公钥,签名类型使用定值cbcConstants.SIGN_TYPE_RSA2,其他参数使用缺省值
|
||
// sang:注释icbc部分
|
||
// DefaultIcbcClient client = new DefaultIcbcClient(GH_APP_ID, IcbcConstants.SIGN_TYPE_RSA2,
|
||
// MY_PRIVATE_KEY, APIGW_PUBLIC_KEY);
|
||
// CardbusinessAggregatepayB2cOnlineMerrefundRequestV1 request = new
|
||
// CardbusinessAggregatepayB2cOnlineMerrefundRequestV1();
|
||
// //根据测试环境和生产环境替换相应ip和端口
|
||
// request.setServiceUrl("https://gw.open.icbc.com.cn/api/cardbusiness/aggregatepay/b2c/online/merrefund/V1");
|
||
// //请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
|
||
// CardbusinessAggregatepayB2cOnlineMerrefundRequestV1.CardbusinessAggregatepayB2cOnlineMerrefundRequestV1Biz bizContent = new
|
||
// CardbusinessAggregatepayB2cOnlineMerrefundRequestV1.CardbusinessAggregatepayB2cOnlineMerrefundRequestV1Biz();
|
||
// request.setBizContent(bizContent);
|
||
//
|
||
// bizContent.setMer_id(MER_ID);//商户编号‐必输项
|
||
//
|
||
// //商户订单号
|
||
// bizContent.setOut_trade_no(out_trade_no);
|
||
|
||
log.debug("------------------------------退款单号:"+out_trade_no);
|
||
|
||
//工行订单号
|
||
//bizContent.setOrder_id("060551080009000532107130007355");
|
||
// sang:注释icbc部分
|
||
// bizContent.setOuttrx_serial_no(VeDate.getNo(4));//外部退货流水号‐必输项
|
||
// //退货总金额‐必输项
|
||
// int m= (int) Math.round(money*100);
|
||
// bizContent.setRet_total_amt(""+m);
|
||
// bizContent.setTrnsc_ccy("001");//交易币种‐必输项
|
||
// bizContent.setOrder_apd_inf("");
|
||
// bizContent.setIcbc_appid(GH_APP_ID);
|
||
// bizContent.setMer_acct("");
|
||
// bizContent.setMer_prtcl_no(MER_PRTCL_NO);
|
||
//
|
||
// CardbusinessAggregatepayB2cOnlineMerrefundResponseV1 response;
|
||
// try {
|
||
// //msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
|
||
// response = client.execute(request);
|
||
//
|
||
// if (response.isSuccess()) {
|
||
// // 业务成功处理,请根据接口文档用response.getxxx()获取同步返回的业务数据
|
||
// // ret=response.getReturnCode();
|
||
// ret = JSON.toJSONString(response);
|
||
// log.debug("退费ICBC success return:" + ret);
|
||
// } else {
|
||
// // 失败
|
||
// ret = JSON.toJSONString(response);
|
||
// log.debug("退费ICBC failed return:" + ret);
|
||
// log.error("退费ReturnMsg:"+response.getReturnMsg());
|
||
// }
|
||
// } catch (IcbcApiException e) {
|
||
// e.printStackTrace();
|
||
// }
|
||
return ret;
|
||
}
|
||
|
||
/**
|
||
* 退款
|
||
* @param money 退款金额
|
||
* @param out_trade_no 订单号
|
||
* @return
|
||
*/
|
||
public int refund(Double money,String out_trade_no){
|
||
int ret = -1;
|
||
// sang:注释icbc部分
|
||
//签名类型为RSA2时,需传入appid,私钥和网关公钥,签名类型使用定值cbcConstants.SIGN_TYPE_RSA2,其他参数使用缺省值
|
||
// DefaultIcbcClient client = new DefaultIcbcClient(GH_APP_ID, IcbcConstants.SIGN_TYPE_RSA2,
|
||
// MY_PRIVATE_KEY, APIGW_PUBLIC_KEY);
|
||
// CardbusinessAggregatepayB2cOnlineMerrefundRequestV1 request = new
|
||
// CardbusinessAggregatepayB2cOnlineMerrefundRequestV1();
|
||
// //根据测试环境和生产环境替换相应ip和端口
|
||
// request.setServiceUrl("https://gw.open.icbc.com.cn/api/cardbusiness/aggregatepay/b2c/online/merrefund/V1");
|
||
// //请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
|
||
// CardbusinessAggregatepayB2cOnlineMerrefundRequestV1.CardbusinessAggregatepayB2cOnlineMerrefundRequestV1Biz bizContent = new
|
||
// CardbusinessAggregatepayB2cOnlineMerrefundRequestV1.CardbusinessAggregatepayB2cOnlineMerrefundRequestV1Biz();
|
||
// request.setBizContent(bizContent);
|
||
//
|
||
// bizContent.setMer_id(MER_ID);//商户编号‐必输项
|
||
//
|
||
// //商户订单号
|
||
// bizContent.setOut_trade_no(out_trade_no);
|
||
|
||
System.out.println("------------------------------退款单号:"+out_trade_no);
|
||
|
||
//工行订单号
|
||
//bizContent.setOrder_id("060551080009000532107130007355");
|
||
// sang:注释icbc部分
|
||
// bizContent.setOuttrx_serial_no(VeDate.getNo(4));//外部退货流水号‐必输项
|
||
// //退货总金额‐必输项
|
||
// int m= (int) Math.round(money*100);
|
||
// bizContent.setRet_total_amt(""+m);
|
||
// bizContent.setTrnsc_ccy("001");//交易币种‐必输项
|
||
// bizContent.setOrder_apd_inf("");
|
||
// bizContent.setIcbc_appid(GH_APP_ID);
|
||
// bizContent.setMer_acct("");
|
||
// bizContent.setMer_prtcl_no(MER_PRTCL_NO);
|
||
//
|
||
// CardbusinessAggregatepayB2cOnlineMerrefundResponseV1 response;
|
||
// try {
|
||
// //msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
|
||
// response = client.execute(request);
|
||
//
|
||
// if (response.isSuccess()) {
|
||
// // 业务成功处理,请根据接口文档用response.getxxx()获取同步返回的业务数据
|
||
// ret=response.getReturnCode();
|
||
// } else {
|
||
// // 失败
|
||
// ret=response.getReturnCode();
|
||
// log.error("ReturnMsg:"+response.getReturnMsg());
|
||
// }
|
||
// } catch (IcbcApiException e) {
|
||
// e.printStackTrace();
|
||
// }
|
||
return ret;
|
||
}
|
||
|
||
/**
|
||
* 退款
|
||
* @param args
|
||
*/
|
||
/*public static void main(String[] args) {
|
||
//签名类型为RSA2时,需传入appid,私钥和网关公钥,签名类型使用定值cbcConstants.SIGN_TYPE_RSA2,其他参数使用缺省值
|
||
DefaultIcbcClient client = new DefaultIcbcClient(GH_APP_ID, IcbcConstants.SIGN_TYPE_RSA2,
|
||
MY_PRIVATE_KEY, APIGW_PUBLIC_KEY);
|
||
CardbusinessAggregatepayB2cOnlineMerrefundRequestV1 request = new
|
||
CardbusinessAggregatepayB2cOnlineMerrefundRequestV1();
|
||
//根据测试环境和生产环境替换相应ip和端口
|
||
request.setServiceUrl("https://gw.open.icbc.com.cn/api/cardbusiness/aggregatepay/b2c/online/merrefund/V1");
|
||
//请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
|
||
CardbusinessAggregatepayB2cOnlineMerrefundRequestV1.CardbusinessAggregatepayB2cOnlineMerrefundRequestV1Biz bizContent = new
|
||
CardbusinessAggregatepayB2cOnlineMerrefundRequestV1.CardbusinessAggregatepayB2cOnlineMerrefundRequestV1Biz();
|
||
request.setBizContent(bizContent);
|
||
|
||
bizContent.setMer_id(MER_ID);//商户编号‐必输项
|
||
|
||
//商户订单号
|
||
//bizContent.setOut_trade_no("TJ202108061635073884");
|
||
|
||
//工行订单号
|
||
bizContent.setOrder_id("060551080009000512108060014521");
|
||
|
||
bizContent.setOuttrx_serial_no(VeDate.getNo(4));//外部退货流水号‐必输项
|
||
bizContent.setRet_total_amt("1");//退货总金额‐必输项
|
||
bizContent.setTrnsc_ccy("001");//交易币种‐必输项
|
||
bizContent.setOrder_apd_inf("");
|
||
bizContent.setIcbc_appid(GH_APP_ID);
|
||
bizContent.setMer_acct("");
|
||
CardbusinessAggregatepayB2cOnlineMerrefundResponseV1 response;
|
||
try {
|
||
//msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
|
||
response = client.execute(request);
|
||
|
||
if (response.isSuccess()) {
|
||
// 业务成功处理,请根据接口文档用response.getxxx()获取同步返回的业务数据
|
||
System.out.println("ReturnCode:"+response.getReturnCode());
|
||
System.out.println("response:" + response);
|
||
} else {
|
||
// 失败
|
||
System.out.println("ReturnCode:"+response.getReturnCode());
|
||
System.out.println("ReturnMsg:"+response.getReturnMsg());
|
||
}
|
||
} catch (IcbcApiException e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
}*/
|
||
|
||
/*public static void main(String[] args) {
|
||
//需传入appid,私钥,字符集
|
||
UiIcbcClient client = new UiIcbcClient(GH_APP_ID, IcbcConstants.SIGN_TYPE_RSA2, MY_PRIVATE_KEY, IcbcConstants.CHARSET_UTF8);
|
||
CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1 request = new CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1();
|
||
//根据测试环境和生产环境替换相应ip和端口
|
||
request.setServiceUrl("https://gw.open.icbc.com.cn/ui/cardbusiness/aggregatepay/b2c/online/ui/consumepurchaseshowpay/V1");
|
||
CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1.CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1Biz bizContent = new CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1.CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1Biz();
|
||
request.setBizContent(bizContent);
|
||
//请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
|
||
bizContent.setExpireTime("120");
|
||
bizContent.setIcbc_appid(GH_APP_ID);
|
||
bizContent.setMer_id(MER_ID);
|
||
bizContent.setMer_prtcl_no(MER_PRTCL_NO);
|
||
bizContent.setNotify_type("HS");
|
||
bizContent.setNotify_url("http://http://122.51.116.79:9081//inspect/subscribe/callback");
|
||
bizContent.setResult_type("0");
|
||
bizContent.setReturn_url("http://http://122.51.116.79:9081//dist/index.html#/Yygh?type=1");
|
||
|
||
//订单金额
|
||
bizContent.setOrder_amt("1");
|
||
String out="TJ"+VeDate.getNo(4);
|
||
System.out.println("-----------------"+out);
|
||
bizContent.setOut_trade_no(out);
|
||
bizContent.setSaledepname("赤峰市元宝山区妇幼保健计划生育服务中心");
|
||
String str="就医缴费";
|
||
bizContent.setBody(str);
|
||
try {
|
||
String ret=client.buildPostForm(request);
|
||
System.out.println(ret);
|
||
} catch (IcbcApiException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}*/
|
||
|
||
/**
|
||
* PC支付
|
||
* @param args
|
||
*//*
|
||
public static void main(String[] args) {
|
||
|
||
// 4、需传入appid,私钥,字符集
|
||
UiIcbcClient client = new UiIcbcClient(GH_APP_ID, IcbcConstants.SIGN_TYPE_RSA2,MY_PRIVATE_KEY,IcbcConstants.CHARSET_UTF8);
|
||
CardbusinessEpaypcConsumptionRequestV1 request = new
|
||
CardbusinessEpaypcConsumptionRequestV1();
|
||
// 5、根据测试环境和生产环境替换相应ip和端口
|
||
request.setServiceUrl("https://gw.open.icbc.com.cn/ui/cardbusiness/epaypc/consumption/V1");
|
||
CardbusinessEpaypcConsumptionRequestV1.CardbusinessEpaypcConsumptionRequestV1Biz bizContent = new
|
||
CardbusinessEpaypcConsumptionRequestV1.CardbusinessEpaypcConsumptionRequestV1Biz();
|
||
request.setBizContent(bizContent);
|
||
// 6、请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
|
||
|
||
//埋名或非埋名标志,字典:1-埋名,2-非埋名,默认非埋名
|
||
bizContent.setIcbc_flag("1");
|
||
|
||
//工行API平台的APPID
|
||
bizContent.setIcbc_appid(GH_APP_ID);
|
||
|
||
SimpleDateFormat sf=new SimpleDateFormat("yyyyMMddHHmmss");
|
||
Date date=new Date();
|
||
|
||
//交易日期时间,格式为:yyyyMMddHHmmss,要求在银行系统当前时间的前1小时和后12小时范围内,否则判定交易时间非法
|
||
bizContent.setOrder_date(sf.format(date));
|
||
|
||
//订单有效日期,对订单的有效日期进
|
||
//行限定,输入类
|
||
//似”20110802152230”的时间串代表8
|
||
//月2日15:22:30之前支付订单有效。
|
||
bizContent.setExpire_time(sf.format(new Date(date.getTime()+300000)));
|
||
|
||
//商户订单号,若该笔订单为招投标订单(icbc_flag送2,且order_flag_ztb上送1,则该字段上送约定的招投标缴纳编号(长度MAX(20)))
|
||
bizContent.setOut_trade_no(VeDate.getNo(4));
|
||
|
||
//订单金额,单位分
|
||
bizContent.setAmount("1");
|
||
|
||
//分期付款期数,1、3、6、9、12、
|
||
//18、24;1代表全额付款,必须为以上
|
||
//述值,否则订单校验不通过
|
||
bizContent.setInstallment_times("1");
|
||
|
||
//交易币种,目前工行只支持使用人民
|
||
//币(001)支付
|
||
bizContent.setCur_type("001");
|
||
|
||
//商户编号
|
||
bizContent.setMer_id(MER_ID);
|
||
|
||
//收单协议编号
|
||
bizContent.setMer_prtcl_no(MER_PRTCL_NO);
|
||
|
||
//商户账号,商户入账账号,只能交易时指定。
|
||
bizContent.setMer_acct("0605024309200001696");
|
||
|
||
//商品名称
|
||
bizContent.setGoods_name("挂号");
|
||
|
||
//商户reference,上送商户网站域名
|
||
//(支持通配符,例如“*.某B2C商
|
||
//城.com”),如果上送,工行会在客户
|
||
//支付订单时,校验商户上送域名与客
|
||
//户跳转工行支付页面之前网站域名的
|
||
//一致性
|
||
//bizContent.setMer_reference("xxx");
|
||
|
||
//商户获取用户的请求ip上送。当商户
|
||
//reference项送空时,该项必输
|
||
bizContent.setMer_custom_ip("192.168.0.119");
|
||
|
||
//返回商户变量, 工行给商户发送商户通
|
||
//知时会原样返回,可参考响应报文中
|
||
//attach字段
|
||
bizContent.setMer_var(bizContent.getOut_trade_no());
|
||
|
||
//通知商户URL,必须合法的URL,交易
|
||
//结束,银行使用HTTP协议POST方式
|
||
//向此地址发送通知信息;目前只支持
|
||
//80端口
|
||
bizContent.setMer_url("http://guahao.hzyqtkj.com/pay/callback");
|
||
|
||
//支付成功回显页面,支付成功后,跳
|
||
//转至该页面显示
|
||
bizContent.setReturn_url("xxx");
|
||
|
||
//当商户返回的商城取货地址为正常可
|
||
//达时,如该参数非空,则倒计时结束
|
||
//后自动跳转回商城取货地址对应链
|
||
//接,如不上送则默认不自动跳转。 单
|
||
//位(秒)
|
||
//bizContent.setAuto_refer_sec("xxx");
|
||
|
||
//联名校验标志。取值“1”:客户支付
|
||
//时,网银判断该客户是否与商户联
|
||
//名,是则按上送金额扣帐,否则展现
|
||
//未联名错误;我行联名商户可送“1”;
|
||
//取值“0”:不检验客户是否与商户联
|
||
//名,按上送金额扣帐。非联名商户请
|
||
//送“0”;
|
||
bizContent.setVerify_join_flag("0");
|
||
|
||
//通知类型,表示在交易处理完成后把交易结果通知商户的处理模式。 取值“HS”:在交易完成后将通知信息,主动发送给商户,发送地址为mer_url指定地址; 取值“AG”:在交易完成后不通知商户
|
||
bizContent.setNotify_type("HS");
|
||
|
||
//指定支付卡标志,仅icbc_flag送1时使
|
||
//用。0-否,1-是,不送或上送其他值按
|
||
//0-否处理,如上送1,则快捷支付及工
|
||
//行卡网银支付方式下,限定仅可使用
|
||
//指定卡完成交易。其他支付方式不作
|
||
//限制。
|
||
//bizContent.setE_fixedACFlag("xxx");
|
||
|
||
//默认“2”。有效取值:0-仅借记卡,1-仅信用卡,2-All
|
||
bizContent.setCredit_type("2");
|
||
|
||
//订单有效间隔,单位为秒,若不输或
|
||
//输入值大于86400,则按系统默认间隔
|
||
//处理
|
||
bizContent.setOrder_interval("600");
|
||
|
||
//订单附加信息
|
||
bizContent.setOrder_apd_inf("");
|
||
try {
|
||
boolean testFlag = true;
|
||
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+"========================================");
|
||
System.out.println(client.buildPostForm(request));
|
||
} catch (IcbcApiException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}*/
|
||
|
||
/**
|
||
* H5支付
|
||
* @param args
|
||
*//*
|
||
public static void main(String[] args) {
|
||
|
||
// 4、需传入appid,私钥,字符集
|
||
UiIcbcClient client = new UiIcbcClient(GH_APP_ID, IcbcConstants.SIGN_TYPE_RSA2,MY_PRIVATE_KEY,IcbcConstants.CHARSET_UTF8);
|
||
CardbusinessEpayh5UiConsumptionRequestV1 request = new
|
||
CardbusinessEpayh5UiConsumptionRequestV1();
|
||
// 5、根据测试环境和生产环境替换相应ip和端口
|
||
request.setServiceUrl("https://gw.open.icbc.com.cn/ui/cardbusiness/aggregatepay/b2c/online/ui/consumepurchaseshowpay/V1");
|
||
CardbusinessEpayh5UiConsumptionRequestV1.CardbusinessEpayh5UiConsumptionRequestV1Biz bizContent = new CardbusinessEpayh5UiConsumptionRequestV1.CardbusinessEpayh5UiConsumptionRequestV1Biz();
|
||
request.setBizContent(bizContent);
|
||
// 6、请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
|
||
|
||
//工行API平台的APPID
|
||
bizContent.setIcbc_appid(GH_APP_ID);
|
||
|
||
SimpleDateFormat sf=new SimpleDateFormat("yyyyMMddHHmmss");
|
||
Date date=new Date();
|
||
|
||
//交易日期时间,格式为:YYYYMMDDHHmmss,要求在银行系统当前时间的前1小时和后12小时范围内,否则判定交易时间非法
|
||
bizContent.setOrder_date(sf.format(date));
|
||
|
||
//商户订单号
|
||
bizContent.setOrder_id(VeDate.getNo(4));
|
||
|
||
//订单金额,单位分
|
||
bizContent.setAmount("1");
|
||
|
||
//分期付款期数,1、3、6、9、12、18、24;1代表全额付款,必须为以上述值,否则订单校验不通过
|
||
bizContent.setInstallment_times("1");
|
||
|
||
//交易币种,目前工行只支持使用人民币(001)支付
|
||
bizContent.setCur_type("001");
|
||
|
||
//商户编号
|
||
bizContent.setMer_id(MER_ID);
|
||
|
||
//收单协议编号
|
||
bizContent.setMer_prtcl_no(MER_PRTCL_NO);
|
||
|
||
//商户账号,商户入账账号,只能交易时指定。(商户付给银行手续费的账户,可以在开户的时候指定,也可以用交易指定方式;用交易指定方式则使用此商户账号)
|
||
//bizContent.setMer_acct("xxx");
|
||
|
||
//通知商户URL,必须合法的URL,交易结束,银行使用HTTP协议POST方式向此地址发送通知信息;目前只支持80端口
|
||
bizContent.setMerURL("http://guahao.hzyqtkj.com/pay/callback");
|
||
|
||
//支付成功回显页面,支付成功后,跳转至该页面显示
|
||
bizContent.setReturn_url("http://www.baidu.com");
|
||
|
||
bizContent.setNotify_type("HS");
|
||
|
||
//选输,收单接入方式,4-H5,5-APP,7-微信公众号,8-支付宝生活号,默认4
|
||
bizContent.setAccess_type("7");
|
||
|
||
//订单有效间隔,单位为秒,若不输或输入值大于86400,则按系统默认间隔处理
|
||
bizContent.setOrder_interval("300");
|
||
try {
|
||
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+"========================================");
|
||
System.out.println(client.buildPostForm(request));
|
||
} catch (IcbcApiException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}*/
|
||
|
||
/**
|
||
* 聚合支付 埋名
|
||
* @param args
|
||
*/
|
||
/*public static void main(String[] args) {
|
||
|
||
//签名类型为RSA时,需传入appid,私钥和网关公钥,签名类型使用定值IcbcConstants.SIGN_TYPE_RSA,其他参数使用缺省值
|
||
DefaultIcbcClient client = new DefaultIcbcClient(GH_APP_ID, IcbcConstants.SIGN_TYPE_RSA2,MY_PRIVATE_KEY, APIGW_PUBLIC_KEY);
|
||
CardbusinessAggregatepayB2cOnlineConsumepurchaseRequestV1 request = new
|
||
CardbusinessAggregatepayB2cOnlineConsumepurchaseRequestV1();
|
||
//根据测试环境和生产环境替换相应ip和端口
|
||
request.setServiceUrl("https://gw.open.icbc.com.cn/api/cardbusiness/aggregatepay/b2c/online/consumepurchase/V1");
|
||
CardbusinessAggregatepayB2cOnlineConsumepurchaseRequestV1.CardbusinessAggregatepayB2cOnlineConsumepurchaseRequestV1Biz bizContent = new
|
||
CardbusinessAggregatepayB2cOnlineConsumepurchaseRequestV1.CardbusinessAggregatepayB2cOnlineConsumepurchaseRequestV1Biz();
|
||
|
||
//请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
|
||
|
||
//商户编号
|
||
bizContent.setMer_id(MER_ID);
|
||
//商户订单号,只能是数字、大小写字母,且在同一个商户号下唯一
|
||
bizContent.setOut_trade_no(VeDate.getNo(4));
|
||
//支付方式,9-微信,10-支付宝
|
||
bizContent.setPay_mode("9");
|
||
//收单接入方式,5-APP,7-微信公众号,8-支付宝生活号,9-微信小程序
|
||
bizContent.setAccess_type("7");
|
||
//收单产品协议编号
|
||
bizContent.setMer_prtcl_no(MER_PRTCL_NO);
|
||
//交易日期时间,格式为yyyyMM-dd'T'HH:mm:ss
|
||
bizContent.setOrig_date_time(new SimpleDateFormat("yyyy-MM-dd").format(new Date())+"T"+new SimpleDateFormat("HH:mm:ss").format(new Date()));
|
||
//设备号
|
||
bizContent.setDecive_info("013467007042135");
|
||
*//*商品描述,商品描述交易字段格式根据不同的应用场景按照以下格式:
|
||
1)PC网站:传入浏览器打开的网站主页title名-实际商品名称 ;
|
||
2)公众号:传入公众号名称-实际商品名称;
|
||
3)H5:传入浏览器打开的移动网页的主页title名-实际商品名称;
|
||
4)线下门店:门店品牌名-城市分店名实际商品名称;
|
||
5)APP:传入应用市场上的APP名字-实际商品名称*//*
|
||
bizContent.setBody("赤峰市元宝山区妇幼保健计划生育服务中心-挂号收费");
|
||
//交易币种,目前工行只支持使用人民币(001)支付
|
||
bizContent.setFee_type("001");
|
||
//用户端IP
|
||
bizContent.setSpbill_create_ip("192.168.0.119");
|
||
//订单金额,单位为分
|
||
bizContent.setTotal_fee("1");
|
||
//异步通知商户URL,端口必须为443或80
|
||
bizContent.setMer_url("http://guahao.hzyqtkj.com/pay/callback");
|
||
//商户在微信开放平台注册的APPID,支付方式为微信时不能为空
|
||
bizContent.setShop_appid(WX_APP_ID);
|
||
//商户在工行API平台的APPID
|
||
bizContent.setIcbc_appid(GH_APP_ID);
|
||
//第三方用户标识,商户在微信公众号内或微信小程序内接入时必送,即access_type为7或9时,上送用户在商户APPID下的唯一标识;商户通过支付宝生活号接入时不送
|
||
bizContent.setOpen_id("o2RHm57mWjZDEINy1l0zAcpqC5fw");
|
||
//订单失效时间,单位为秒,建议大于60秒
|
||
bizContent.setExpire_time("120");
|
||
//通知类型,表示在交易处理完成后把交易结果通知商户的处理模式。 取值“HS”:在交易完成后将通知信息,主动发送给商户,发送地址为mer_url指定地址; 取值“AG”:在交易完成后不通知商户
|
||
bizContent.setNotify_type("HS");
|
||
request.setBizContent(bizContent);
|
||
CardbusinessAggregatepayB2cOnlineConsumepurchaseResponseV1 response;
|
||
try {
|
||
response = client.execute(request, System.currentTimeMillis()+"");
|
||
//msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
|
||
if (response.getReturnCode() == 0) {
|
||
// 6、业务成功处理,请根据接口文档用response.getxxx()获取同步返回的业务数据
|
||
System.out.println("ReturnCode:"+response.getReturnCode());
|
||
System.out.println("response:" + JSON.toJSONString(response));
|
||
} else {
|
||
// 失败
|
||
System.out.println("response:" + JSON.toJSONString(response));
|
||
System.out.println("ReturnCode:"+response.getReturnCode());
|
||
System.out.println("ReturnMsg:"+response.getReturnMsg());
|
||
}
|
||
} catch (IcbcApiException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}*/
|
||
|
||
/*public static void main(String[] args) {
|
||
|
||
|
||
//需传入appid,私钥,字符集
|
||
UiIcbcClient client = new UiIcbcClient(GH_APP_ID, IcbcConstants.SIGN_TYPE_RSA2, MY_PRIVATE_KEY, IcbcConstants.CHARSET_UTF8);
|
||
CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1 request = new CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1();
|
||
//根据测试环境和生产环境替换相应ip和端口
|
||
request.setServiceUrl("https://gw.open.icbc.com.cn/ui/cardbusiness/aggregatepay/b2c/online/ui/consumepurchaseshowpay/V1");
|
||
CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1.CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1Biz bizContent = new CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1.CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayRequestV1Biz();
|
||
request.setBizContent(bizContent);
|
||
//请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
|
||
bizContent.setExpireTime("120");
|
||
bizContent.setIcbc_appid(GH_APP_ID);
|
||
bizContent.setMer_id(MER_ID);
|
||
bizContent.setMer_prtcl_no(MER_PRTCL_NO);
|
||
bizContent.setNotify_type("HS");
|
||
bizContent.setNotify_url("http://guahao.hzyqtkj.com/pay/callback");
|
||
bizContent.setOrder_amt("1");
|
||
bizContent.setOut_trade_no(VeDate.getNo(4));
|
||
bizContent.setSaledepname("赤峰市元宝山区妇幼保健计划生育服务中心");
|
||
bizContent.setBody("挂号缴费");
|
||
bizContent.setSubject("");
|
||
try {
|
||
System.out.println(client.buildPostForm(request));
|
||
} catch (IcbcApiException e) {
|
||
e.printStackTrace();
|
||
}
|
||
}*/
|
||
}
|