easypay-api.js 4.9 KB
/**
 * address api
 * @author: yyq<yanqing.yang@yoho.cn>
 * @date: 2016/11/04
 */
'use strict';

const api = global.yoho.API;

const getEasyPaymentAsync = (uid, goods, activity) => {
    let param = {
        method: 'app.Shopping.easyPayment',
        uid: uid,
        cart_type: 'ordinary',
        product_sku_list: goods,
        yoho_coin_mode: 0,
        is_support_apple_pay: 'N'
    };

    if (activity) {
        param.activity_id = activity;
    }

    return api.get('', param, {code: 200});
};


/**
 * 订单计算API
 * @param uid [number] uid
 * @param cartType [string] 购物车类型,ordinary表示普通, advance表示预售
 * @param paymentType [number] 支付方式,1表示在线支付,2表示货到付款
 * @param deliveryWay [number] 配送方式,1表示普通快递,2表示顺丰速运
 * @param coin [number] 使用的有货币
 * @param useRedEnvelops [number] 红包
 * @param couponCode [string] 优惠券码
 * @param promotionCode [string] 优惠码
 * @param productSkuList [string] 限购商品

 */
const getEasypayComputeAsync = (uid, cartType, paymentType, deliveryWay, other) => {
    let param = {
        method: 'app.Shopping.easyCompute',
        uid: uid,
        cart_type: cartType || 'ordinary',
        payment_type: paymentType,
        delivery_way: deliveryWay
    };

    // 其他可选参数
    if (other) {
        if (other.coin) {
            Object.assign(param, {
                use_yoho_coin: other.coin / 100
            });
        }

        if (other.useRedEnvelops) {
            Object.assign(param, {
                use_red_envelopes: other.useRedEnvelops
            });
        }

        if (other.couponCode) {
            Object.assign(param, {
                coupon_code: other.couponCode
            });
        }

        if (other.promotionCode) {
            Object.assign(param, {
                promotion_code: other.promotionCode
            });
        }

        if (other.productSkuList) {
            Object.assign(param, {
                product_sku_list: other.productSkuList
            });

            if (other.bundle) {
                Object.assign(param, {
                    activity_id: other.bundle
                });
            }
        }

    }

    return api.get('', param);
};

/**
 * 订单提交API
 * @param uid [number] uid
 * @param cartType [String] 购物车类型,ordinary表示普通, advance表示预售
 * @param addressId [String] 地址
 * @param deliveryTime [number] 寄送时间类型
 * @param deliveryWay [number] 配送方式,1表示普通快递,2表示顺丰速运
 * @param invoicesType [number] 发票类型
 * @param invoicesTitle [string] 发票抬头
 * @param invoicesContent [int] 发票类型
 * @param receiverMobile [string] 发票收人电话
 * @param coin [number] 使用的有货币金额
 * @param redEnvelopes [number] 使用的红包
 * @param paymentId [number] 支付id
 * @param paymentType [number] 支付类型
 * @param remark [string] 备注
 * @param couponCode [string] 优惠券码
 * @param printPrice [string] 是否打印价格
 */
const easypayOrderSubmitAsync = (uid, cartType, addressId, deliveryTime, deliveryWay, paymentType, paymentId, printPrice, other, remoteIp) => { // eslint-disable-line
    let param = {
        method: 'app.Shopping.easySubmit',
        uid: uid,
        cart_type: cartType || 'ordinary',
        address_id: addressId,
        delivery_time: deliveryTime,
        delivery_way: deliveryWay,
        payment_type: paymentType,
        payment_id: paymentId,
        is_print_price: printPrice
    };

    // 发票
    if (other.invoicesType) {
        Object.assign(param, {
            invoices_type: other.invoicesType,
            invoices_title: other.invoicesTitle,
            invoice_content: other.invoicesContent,
            receiverMobile: other.receiver
        });
    }

    // 有货币
    if (other.coin) {
        Object.assign(param, {
            use_yoho_coin: other.coin / 100 // 有货币稀释
        });
    }

    // 红包
    if (other.redEnvelopes) {
        Object.assign(param, {
            use_red_envelopes: other.redEnvelopes
        });
    }

    // 备注
    if (other.remark) {
        Object.assign(param, {
            remark: other.remark
        });
    }

    // 优惠券码
    if (other.couponCode) {
        Object.assign(param, {
            coupon_code: other.couponCode
        });
    }

    if (other.productSkuList) {
        Object.assign(param, {
            product_sku_list: other.productSkuList
        });

        if (other.bundle) {
            Object.assign(param, {
                activity_id: other.bundle
            });
        }
    }

    if (other.udid) {
        Object.assign(param, {
            udid: other.udid
        });
    }

    return api.get('', param, {
        headers: {'X-Forwarded-For': remoteIp || ''}
    });
};

module.exports = {
    getEasyPaymentAsync,
    getEasypayComputeAsync,
    easypayOrderSubmitAsync
};