Authored by 郭成尧

cart-center-page

... ... @@ -28,7 +28,15 @@ const payCenter = (req, res, next) => {
title: '支付中心 | Yoho!Buy有货 | 潮流购物逛不停'
};
res.render('pay/pay-center', responseData);
payModel.payCenter({
orderCode: req.query.order_code
}).then(result => {
res.render('pay/pay-center', Object.assign(responseData, {
payAppInfo: result.payList
}));
}).catch(next);
};
// 货到付款
... ...
... ... @@ -10,6 +10,7 @@ const api = global.yoho.API;
const serviceAPI = global.yoho.ServiceAPI;
const utils = '../../../utils';
const productProcess = require(`${utils}/product-process`);
const helpers = global.yoho.helpers;
// 资源位
const _getBanner = (param) => {
... ... @@ -80,6 +81,33 @@ const _getOthersBuy = (param) => {
});
};
/**
* 支付中心
* @param params
*/
const payCenter = (params) => {
return Promise.resolve({
payList: [
{
appIcon: '',
payLink: helpers.urlFormat('/shopping/pay/index'),
appId: 'alipay',
app: '支付宝支付',
hint: '支付宝钱包支付',
subHint: '推荐支付宝用户使用'
},
{
appIcon: '',
payLink: '',
appId: 'weixin',
app: '微信支付',
hint: '推荐使用',
subHint: ''
}
]
});
};
// 货到付款
const getPayCod = (param) => {
return api.all([
... ... @@ -153,6 +181,7 @@ const getPayAli = (param) => {
};
module.exports = {
payCenter,
getPayCod,
getPayAli
};
... ...
... ... @@ -3,6 +3,7 @@
<input id='ordercode' type="hidden" value="{{orderCode}}">
{{/if}}
<div class="payapp-list">
{{log payAppInfo}}
{{# payAppInfo}}
{{#if payLink}}
<a href="{{payLink}}">
... ...
var $ = require('yoho-jquery'),
lazyLoad = require('yoho-jquery-lazyload');
var loading = require('../plugin/loading'),
tip = require('../plugin/tip'),
Hammer = require('yoho-hammer');
// 点击微信显示加载
var $loadingToast = $(".loading-toast");
/* TODO 影响加载此段 JS */
// var theOrderCode = document.getElementById('ordercode').value;
var wxPayEl = document.getElementById('weixin'),
wxHammer = wxPayEl && new Hammer(wxPayEl);
var appIconPosition = {
baidu: '-2.7rem',
weixin: '-1.2rem',
QQ: '-5.4rem',
bank: '-4rem'
};
require('../common');
lazyLoad($('img.lazy'));
... ... @@ -14,3 +35,169 @@ require('../channel/maybe-like')(getGender());
if ($('#goods-list').length === 0) {
$('.maybe-like').hide();
}
//隐藏微信分享选项
if (window.wx) {
wx.hideOptionMenu();
}
function onBridgeReady() {
document.addEventListener('WeixinJSBridgeReady', function() {
window.WeixinJSBridge && window.WeixinJSBridge.call('hideOptionMenu');
});
}
if (typeof WeixinJSBridge === undefined) {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
onBridgeReady();
} else {
onBridgeReady();
}
// 调用微信JS api 支付
function jsApiCall(orderCode, jsApiParameters) {
$loadingToast.addClass("hide");
// 防止重复操作弹框
window.WeixinJSBridge && window.WeixinJSBridge.invoke(
'getBrandWCPayRequest',
jsApiParameters,
function(res) {
window.location.href = '/home/orders/detail?order_code=' + orderCode + '&openId=true';
}
);
}
// 微信支付
function callpay(orderCode) {
var jsApiParameters;
$loadingToast.removeClass("hide");
if (typeof WeixinJSBridge === undefined) {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', jsApiCall);
document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
}
} else {
$.ajax({
type: 'GET',
url: '/shopping/pay/wechatwapapi',
data: {
'order_code': orderCode
},
dataType: 'json',
success: function(res) {
if (res.code === 200) {
jsApiParameters = res.data.jsApiParameters;
jsApiCall(orderCode, jsApiParameters);
} else {
tip.show('微信支付调取失败');
}
},
error: function() {
tip.show('请刷新本页面,完成微信支付');
},
complete: function() {
$loadingToast.addClass("hide");
}
});
}
}
function isWXOpen() {
var ua = window.navigator.userAgent.toLowerCase();
return ua.indexOf('micromessenger') > 0;
}
function hideWeChatPay() {
var $payApps = $('.app');
$payApps.each(function(idx, app) {
if ($(app).parent().attr('id') === 'weixin') {
$(app).parent().css('display', 'none');
return false;
}
});
}
function hideAliPay() {
var $payApps = $('.app');
$payApps.each(function(idx, app) {
if ($(app).parent().attr('id') === 'alipay') {
$(app).closest('a').css('display', 'none');
return false;
}
});
}
function handleForWX() {
if (!isWXOpen()) {
hideWeChatPay();
} else {
hideAliPay();
}
}
function setAppIcon(el, position) {
$(el).css('background-position-y', position);
}
function loadIcon() {
var $boxs = $('.box');
var $div = null;
var appid = null;
$boxs.each(function(idx, box) {
$div = $(box).find('.icon').find('div');
if ($div.length > 0) {
appid = $(box).attr('id');
if (appid !== 'alipay') {
setAppIcon($div, appIconPosition[appid]);
}
}
});
}
function showPage() {
$('.payapp-list').css('visibility', 'visible');
}
function bindTouchedEvent() {
var $boxs = $('.box');
$boxs.on('touchstart', function(e) {
$(this).addClass('bytouch');
}).on('touchend touchcancel', function() {
$boxs.removeClass('bytouch');
});
}
if (wxHammer) {
wxHammer.on('tap', function() {
callpay(theOrderCode);
});
}
function main() {
handleForWX();
loading.hideLoadingMask();
showPage();
loadIcon();
bindTouchedEvent();
}
loading.showLoadingMask();
$(document).ready(main);
... ...