pay-api.js 4.54 KB
/**
 * 支付相关api调用
 * @author: jiangfeng<jeff.jiang@yoho.cn>
 * @date: 2016/07/18
 */

'use strict';

module.exports = class extends global.yoho.BaseModel {
    constructor(ctx) {
        super(ctx);
    }

    // 获取支付宝等平台支付方式列表
    getPayProvider() {
        let options = {
            method: 'web.SpaceOrders.getPaymentList'
        };

        return this.get({data: options, param: {cache: true}});
    }

    // 获取单个支付方式相关详细信息
    getPaymentInfo(id) {
        let options = {
            method: 'web.SpaceOrders.getPaymentById',
            id: id
        };

        return this.get({data: options, param: {cache: true}});
    }

    /* 获取上次使用的支付方式*/
    getBankByOrder(code) {
        let options = {
            method: 'web.SpaceOrders.getOrderPayBank',
            orderCode: code
        };

        return this.get({data: options});
    }

    /* 记录支付方式*/
    setOrderPayBank(code, payment, bankCode) {
        let options = {
            method: 'web.SpaceOrders.addOrderPayBank',
            orderCode: code,
            payment: payment,
            bankCode: bankCode
        };

        return this.get({data: options});
    }

    /* 更改支付方式*/
    updateOrderPayBank(code, payment, bankCode) {
        let options = {
            method: 'web.SpaceOrders.modifyOrderPayBank',
            orderCode: code,
            payment: payment,
            bankCode: bankCode
        };

        return this.get({data: options});
    }

    /* 发送支付确认*/
    sendPayConfirm(code, payment, uid) {
        let options = {
            method: 'app.SpaceOrders.payConfirm',
            order_code: code,
            payment_id: payment,
            uid: uid
        };

        return this.get({data: options});
    }

    sendMessage(mobile, template, codes) {
        let options = {
            method: 'app.message.sendMsg',
            mobile: mobile,
            template: template,
            codes: codes
        };

        return this.get({data: options});
    }

    /**
     * [订单详情]
     * @param  {[type]} uid       [用户uid]
     * @param  {[type]} orderCode [订单号]
     * @return {[type]}           [{}]
     */
    orderDetail(uid, orderCode) {
        let options = {
            method: 'app.SpaceOrders.detail',
            uid: uid,
            order_code: orderCode
        };

        return this.get({data: options});
    }

    /**
     * [更新订单支付方式]
     * @param  {[type]} code    [订单号]
     * @param  {[type]} payment [支付方式]
     * @param  {[type]} uid     [用户uid]
     * @return {[type]}         [{}]
     */
    updateOrderPayment(code, payment, uid) {
        let options = {
            method: 'app.SpaceOrders.updateOrdersPaymentByCode',
            order_code: code,
            payment: payment,
            uid: uid
        };

        return this.get({data: options});
    }

    /**
     * [获取资源数据]
     * @param  {[type]} code    [资源位code]
     * @return {[type]}         [{}]
     */
    getResourceData(code) {
        let options = {
            content_code: code
        };

        return this.get({
            api: global.yoho.ServiceAPI,
            url: 'operations/api/v5/resource/get',
            data: options,
            param: {cache: true}
        });
    }

    /**
     * [获取用户的订单数目]
     * @param  {[type]} uid    [用户uid]
     * @return {[type]}         [{}]
     */
    getOrderCountByUid(uid) {
        let options = {
            method: 'web.SpaceOrders.getOrderCountByUid',
            uid: uid
        };

        return this.get({data: options});
    }

    /**
     * [更新订单状态]
     * @param  {[type]} code       [订单号]
     * @param  {[type]} payment    [支付方式]
     * @param  {[type]} amount     [金额(单位:元)]
     * @param  {[type]} bankName   [银行名称]
     * @param  {[type]} bankCode   [银行代码]
     * @param  {[type]} tradeNo    [交易流水号]
     * @param  {[type]} bankBillNo [银行流水号]
     * @return {[type]}            [{}]
     */
    pcpayNotify(code, payment, amount, bankName, bankCode, tradeNo, bankBillNo) {
        let options = {
            method: 'web.SpaceOrders.pcpayNotify',
            order_code: code,
            payment: payment,
            amount: amount,
            bank_name: bankName || '',
            bank_code: bankCode || '',
            trade_no: tradeNo || '',
            bank_bill_no: bankBillNo || ''
        };

        return this.get({data: options});
    }
};