酒店

支付订单更新时间:2019/11/07 10:27

涉及接口 hotel.order.pay
demo语言: Java
开发环境:
前端  jQuery类库、layui、 bootstrap
后端  jdk1.7以上、 tomcat8以上、 springmvc + spring + mybatis


如果是预付订单或现付担保订单,则需要先支付,若没有开通虚拟卡支付,则使用信用卡支付


订单支付

如果使用信用卡订单,则需传入信用卡信息进行支付。如果开通了虚拟卡,则不能传入信用卡信息
public class HotelOrderPayApi {
    private static double version = 1.50;
    private static EnumLocal locale = EnumLocal.zh_CN;
    private static boolean isHttps = true; // 测试环境换为false
    ...
    ...
    
    /**
     * 通过http工具类调用艺龙接口,将前端参数拼接为URL
     */
    public OrderPayResult payOrder(PayOrderCondition condition,
        String userName, String appKey, String secretKey) {
        OrderPayResult result = new OrderPayResult();
        String url = "";
        String responseData = "";
        try{
            //产生签名
            Long epoch = System.currentTimeMillis()/1000;
            if (condition.getCreditCard() != null) {
                condition.getCreditCard().setNumber(CipherUtil.desEncrypt(epoch.toString()
                +"#"+condition.getCreditCard().getNumber(), 
                appKey.substring(appKey.length()-8)));
            }
        
            BaseRequest<PayOrderCondition> req = new BaseRequest<PayOrderCondition>();
            req.Version = version;
            req.Local = locale;
            req.Request = condition;
            
            //请求参数转换为Json字符串
            String str = JsonUtil.entity2Json(req);
            String sig = Tool.md5(epoch + Tool.md5(str + appKey) + secretKey);
            
            //产生请求链接
            url = "http"+(this.isHttps ? "s": "")+ "://" 
                + serverHost + "/rest?format=json&method=hotel.order.pay";
            url += "&user="+ userName +"&timestamp=";
            url += epoch;
            url += "&signature=";
            url += sig;
            url += "&data=" + Tool.encodeUri(str);
            log.info(url);
            //发送请求
            responseData = HttpUtil.Send("GET", url, "", "application/json");
            
            //返回值处理
            result = JsonUtil.jsonToObject(responseData, OrderPayResult.class);
        } catch (Exception e) {
            log.info("[HotelOrderPayApi] 异常: " + e);
            log.info("发送的url: " + url);
            log.info("返回值: " + responseData);
        }
        return result;
    }
    ...
    ...
}


效果展示

调用订单支付接口api,如下图
image.png