From e1ba3b4eaa3377304a4ce6833c8be0973519e634 Mon Sep 17 00:00:00 2001 From: Todking Date: Wed, 15 Sep 2021 16:54:25 +0800 Subject: [PATCH] =?UTF-8?q?add=20aps=E9=9D=99=E6=80=81=E7=A0=81css?= =?UTF-8?q?=EF=BC=8Cjs=EF=BC=8Cimage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/ui/static/images/APS.png | Bin 0 -> 55782 bytes .../static/templates/alipayaps/v1/payment.js | 444 ++++++++++++++++ .../static/templates/alipayaps/v4/payment.js | 488 ++++++++++++++++++ .../static/templates/alipayaps/v5/payment.js | 452 ++++++++++++++++ 4 files changed, 1384 insertions(+) create mode 100644 src/main/ui/static/images/APS.png create mode 100644 src/main/ui/static/templates/alipayaps/v1/payment.js create mode 100644 src/main/ui/static/templates/alipayaps/v4/payment.js create mode 100644 src/main/ui/static/templates/alipayaps/v5/payment.js diff --git a/src/main/ui/static/images/APS.png b/src/main/ui/static/images/APS.png new file mode 100644 index 0000000000000000000000000000000000000000..8317f251ea864bd042e9bd60c7f1e95fe179174a GIT binary patch literal 55782 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 z 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�TU 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 literal 0 HcmV?d00001 diff --git a/src/main/ui/static/templates/alipayaps/v1/payment.js b/src/main/ui/static/templates/alipayaps/v1/payment.js new file mode 100644 index 000000000..9f846d9df --- /dev/null +++ b/src/main/ui/static/templates/alipayaps/v1/payment.js @@ -0,0 +1,444 @@ +/** + * Created by yixian on 2017-05-08 + */ +$(function () { + 'use strict'; + // document.querySelector('body').addEventListener('touchmove', function (e) { + // if (!document.querySelector('.coupons').contains(e.target)) { + // e.preventDefault(); + // } + // }) + var dataCache = {price: '0', coupons: [], coupon_groups: {}}; + var exchangeRate = parseFloat(window.exchange_rate); + + if (window.AlipayJSBridge) { + AlipayJSBridge.call('hideOptionMenu'); + } else { + document.addEventListener('AlipayJSBridgeReady', function () { + AlipayJSBridge.call('hideOptionMenu'); + }, false); + } + dataCache.paying = false; + var ctrl = {}; + + $('.ff.key').bind('touchstart', function () { + if (dataCache.paying) { + return; + } + var char = $(this).attr('data-char'); + appendChar(char); + }); + + $('.coupons .use-check').click(function () { + if ($(this).hasClass('disabled')) { + return; + } + var couponId = $(this).attr('data-coupon-id'); + var couponGroup = $(this).attr('data-coupon-group'); + if (couponGroup) { + var prevCouponId = dataCache.coupon_groups[couponGroup]; + if (prevCouponId) { + var prevIdx = dataCache.coupons.indexOf(prevCouponId); + if (prevIdx >= 0) { + dataCache.coupons.splice(prevIdx, 1); + } + if (prevCouponId != couponId) { + $('.coupons .use-check[data-coupon-id="' + prevCouponId + '"]').removeClass('checked').addClass('unchecked'); + dataCache.coupon_groups[couponGroup] = couponId; + } else { + dataCache.coupon_groups[couponGroup] = null; + } + } else { + dataCache.coupon_groups[couponGroup] = couponId; + } + + } + + if ($(this).is('.checked')) { + $(this).removeClass('checked').addClass('unchecked'); + } else { + $(this).removeClass('unchecked').addClass('checked'); + } + var checked = $(this).is('.checked'); + if (checked) { + dataCache.coupons.push(couponId); + updatePrice(); + } else { + var idx = dataCache.coupons.indexOf(couponId); + dataCache.coupons.splice(idx, 1); + updatePrice(); + } + }); + + $('#key_B').bind('touchstart', function () { + backspace(); + }); + + function updatePoundage(price) { + if (window.extensions.indexOf('customerrate') >= 0 && window.rateValue != null) { + if (window.use_customised_rate) { + var rate = new Decimal(100).plus(window.rateValue).div(100); + var poundageValue = new Decimal(dataCache.price).mul(rate).sub(dataCache.price); + } else { + var rateRemain = new Decimal(100).sub(window.rateValue).div(100); + poundageValue = new Decimal(dataCache.price).div(rateRemain).sub(dataCache.price); + } + dataCache.poundageValue = poundageValue.toFixed(2, Decimal.ROUND_HALF_UP); + return poundageValue.plus(price).toFixed(2, Decimal.ROUND_HALF_UP); + } + return price; + } + + function updatePrice() { + $('#audVal').html(dataCache.price); + var realPrice = dataCache.price; + $('#audValReal').html(realPrice); + var surchargeData = calculateSurcharge(realPrice); + + var price = surchargeData.newPrice || realPrice; + var priceBeforeDiscount = price; + dataCache.discounts = []; + dataCache.tax = surchargeData.tax; + dataCache.surcharge = surchargeData.surcharge; + + $(window.coupons).each(function () { + price = this.handleDiscount(price, dataCache.price, dataCache.discounts, dataCache.coupons); + }); + dataCache.customSurcharge = new Decimal(price).sub(realPrice).toFixed(2, Decimal.ROUND_HALF_UP); + dataCache.finalPrice = new Decimal(price).toFixed(2, Decimal.ROUND_FLOOR); + var rate = 'CNY' == window.currency ? 1 : exchangeRate; + var cnyVal = Decimal.mul(price, rate).toFixed(2, Decimal.ROUND_HALF_UP); + $('#cnyVal').html(cnyVal); + dataCache.currencyPrice = 'CNY' == window.currency ? Decimal.div(priceBeforeDiscount, exchangeRate).toFixed(2, Decimal.ROUND_FLOOR) : priceBeforeDiscount; + } + + function updatePoundageStatus() { + $(window.coupons).each(function () { + var coupon = this; + var couponId = coupon.couponId(); + if (coupon.isEnable(dataCache.currencyPrice || 0)) { + $('.coupons .use-check[data-coupon-id=' + couponId + ']').removeClass('disabled'); + } else { + var dom = $('.coupons .use-check[data-coupon-id=' + couponId + ']').addClass('disabled'); + var couponGroup = dom.attr('data-coupon-group'); + if (couponGroup) { + if (dataCache.coupon_groups[couponGroup] == couponId) { + dataCache.coupon_groups[couponGroup] = null; + } + } + var idx = dataCache.coupons.indexOf(couponId); + if (idx >= 0) { + dataCache.coupons.splice(idx, 1); + } + dom.removeClass('checked').addClass('unchecked'); + } + }) + } + + updatePoundageStatus(); + + function backspace() { + dataCache.price = dataCache.price.substring(0, dataCache.price.length - 1); + if (dataCache.price.length == 0) { + dataCache.price = '0'; + } + updatePrice(); + updatePoundageStatus(); + } + + function appendChar(char) { + var pointLocation = dataCache.price.indexOf('.'); + if (pointLocation >= 0 || char == '.' || dataCache.price.length < 5) { + if (pointLocation >= 0 && char == '.') { + return; + } + if (pointLocation >= 0 && pointLocation <= dataCache.price.length - 3) { + return; + } + if (dataCache.price == '0' && char != '.') { + dataCache.price = ''; + } + dataCache.price += char; + updatePrice(); + updatePoundageStatus(); + } + } + + $('#coupon-box-toggle').click(function () { + $('.coupons-container').addClass('show'); + }); + $('.coupons-container>.coupons-mask,.coupons-container #close-coupon-box').click(function () { + $(this).parents('.coupons-container').removeClass('show'); + }); + + + $('.remark-btn').click(function () { + var cfg = { + title: '备注 Remark', + template: '', + initialize: function (dialog) { + $('').addClass('remark-input').attr('name', 'remark').val(dataCache.remark || '').appendTo($('.weui_dialog_bd', dialog)); + }, + confirm: function (dialog, chosen) { + if (chosen) { + var remark = $('textarea[name="remark"]', dialog).val(); + if (remark) { + $('#remark-box').text('备注:' + remark).show() + } else { + $('#remark-box').text('').hide(); + } + dataCache.remark = remark; + } + + } + }; + showWeuiDialog(cfg); + }); + + $('.paydetail').click(function () { + var config = { + title: 'Payment Detail', + template: '', + initialize: function (dialog) { + var bd = $('.weui_dialog_bd', dialog); + var currencySymbol = window.currency == 'AUD' ? '$' : '¥'; + $('

').html('Input Price 输入金额:' + currencySymbol + dataCache.price).appendTo(bd); + if (parseFloat(dataCache.customSurcharge) > 0) { + $('

').html('Surcharge 手续费(' + window.rateValue + '%):+' + currencySymbol + dataCache.customSurcharge).appendTo(bd); + $('

').addClass('warning-sm').html('温馨提示:商户将向您收取本次消费手续费' + window.rateValue + '%').appendTo(bd); + } + $(dataCache.discounts).each(function () { + $('

').html(this.title + ':-' + currencySymbol + this.amount).appendTo(bd); + }); + $('

').addClass('final').html('Final 支付金额:' + currencySymbol + (dataCache.finalPrice || 0)).appendTo(bd); + } + }; + showWeuiDialog(config); + }); + + $('#key_P').click(function () { + if (window.requireRemark) { + if (!dataCache.remark) { + var config = { + title: '请先输入备注', + template: '' + }; + showWeuiDialog(config); + } + + } + }); + + $('#key_P').bind('touchstart', function () { + if (window.requireRemark) { + if (!dataCache.remark) { + return; + } + } + $('#key_P').addClass('hidden'); + $('#key_Loading').removeClass('hidden'); + if (dataCache.paying) { + return; + } + dataCache.paying = true; + var data = {price: dataCache.price + '', original_number: true, currency: window.currency}; + if (dataCache.remark) { + data.description = dataCache.remark; + } + if (window.extensions.indexOf('preauthorize') >= 0) { + data.preauthorize = true; + } + if (window.extensions.indexOf('qrcodemode') >= 0) { + data.qrmode = true; + } + if (window.extensions.indexOf('customerrate') >= 0) { + data.customerrate = true; + } + data.coupons = dataCache.coupons; + data.qrcodeVersion = window.qrcodeVersion; + + $.ajax({ + url: '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders', + method: 'POST', + data: JSON.stringify(data), + contentType: 'application/json', + dataType: 'json', + success: function (pay) { + if (pay.direct_paid) { + location.href = '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result'; + return; + } + if (pay.mweb_url){ + location.href = pay.mweb_url; + return; + } + if (window.AlipayJSBridge) { + callPayment(); + } else { + // 如果没有注入则监听注入的事件 + document.addEventListener('AlipayJSBridgeReady', callPayment, false); + } + + function callPayment() { + try { + AlipayJSBridge.call('tradePay', { + tradeNO: pay.trade_no + }, function (res) { + dataCache.paying = false; + if (res.resultCode == '9000') { + AlipayJSBridge.call('startApp', { + appId: '20000056', + param: { + actionType: 'showSuccPage', + payResult: res.result + }, + closeCurrentApp: false + }); + startCheckOrder(pay.order_id, '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result'); + } else if (res.resultCode == '6001') { + //do nothing + } else { + if (res.memo) { + weuiAlert(res.memo); + } + } + $('#key_P').removeClass('hidden'); + $('#key_Loading').addClass('hidden'); + }) + } catch (err) { + weuiAlert(err) + } + } + }, + error: function (jqXhr) { + weuiAlert(jqXhr.responseJSON.message); + $('#key_P').removeClass('hidden'); + $('#key_Loading').addClass('hidden'); + dataCache.paying = false; + } + }) + }); + + function startCheckOrder(orderId, url) { + function checkOrderStd() { + $.ajax({ + url: '/api/v1.0/payment/orders/' + orderId + '/status', + method: 'GET', + dataType: 'json', + success: function (res) { + if (res.paid) { + location.href = url; + } else { + setTimeout(checkOrderStd, 500); + } + } + }) + } + + checkOrderStd(); + } + + function weuiAlert(msg) { + var config = { + template: msg + }; + showWeuiDialog(config); + } + + function showWeuiDialog(config) { + if (config.templateUrl) { + $.ajax({ + url: config.templateUrl, + dataType: 'html', + success: function (template) { + buildDialog(template); + } + }); + } else { + buildDialog(config.template); + } + + + function buildDialog(template) { + var defaultConfig = {backdrop: true}; + config = $.extend({}, defaultConfig, config); + var dialog = $("
", {class: 'weui_dialog_confirm'}); + var mask = $('
', {class: 'weui_mask'}).appendTo(dialog); + if (config.backdrop) { + mask.click(function () { + dialog.remove(); + if ($.isFunction(config.dismiss)) { + config.dismiss(); + } + }) + } + var dialogBox = $("
", {class: 'weui_dialog'}).appendTo(dialog); + if (config.title) { + $('
', {class: 'weui_dialog_hd'}).append($('', {class: 'weui_dialog_title'}).html(config.title)).appendTo(dialogBox); + } + var dialogBody = $("
", {class: 'weui_dialog_bd'}).appendTo(dialogBox); + if (template) { + dialogBody.append(template); + } + if ($.isFunction(config.initialize)) { + config.initialize(dialog); + } + var ft = $('
').appendTo(dialogBox); + if(window.paypad_version !== 'v3'){ + if ($.isFunction(config.confirm)) { + var yes = $('
', { + class: 'weui_btn_dialog primary', + text: 'OK', + style: 'background: #108ee9;color: #fff;' + }).appendTo(ft); + yes.click(function () { + config.confirm(dialog, true); + dialog.remove(); + }); + var no = $('', {class: 'weui_btn_dialog default', text: 'Cancel'}).appendTo(ft); + no.click(function () { + config.confirm(dialog, false); + dialog.remove(); + }) + } else { + var ok = $('', { + class: 'weui_btn_dialog primary', + text: 'OK', + style: 'background: #108ee9;color: #fff;' + }).appendTo(ft); + ok.click(function () { + dialog.remove(); + }) + } + }else{ + if ($.isFunction(config.confirm)) { + var yes = $('', { + class: 'weui_btn_dialog primary', + text: 'OK', + style: 'background: #FF9705;color: #fff;' + }).appendTo(ft); + yes.click(function () { + config.confirm(dialog, true); + dialog.remove(); + }); + var no = $('', {class: 'weui_btn_dialog default', text: 'Cancel'}).appendTo(ft); + no.click(function () { + config.confirm(dialog, false); + dialog.remove(); + }) + } else { + var ok = $('', { + class: 'weui_btn_dialog primary', + text: 'OK', + style: 'background: #FF9705;color: #fff;' + }).appendTo(ft); + ok.click(function () { + dialog.remove(); + }) + } + } + dialog.appendTo($('body')); + } + + } +}); diff --git a/src/main/ui/static/templates/alipayaps/v4/payment.js b/src/main/ui/static/templates/alipayaps/v4/payment.js new file mode 100644 index 000000000..43c4c0012 --- /dev/null +++ b/src/main/ui/static/templates/alipayaps/v4/payment.js @@ -0,0 +1,488 @@ +/** + * Created by yixian on 2017-05-08 + */ +var num = function(obj){ + obj.value = obj.value.replace(/[^\d.]/g,""); //清除"数字"和"."以外的字符 + obj.value = obj.value.replace(/^\./g,""); //验证第一个字符是数字 + obj.value = obj.value.replace(/\.{2,}/g,"."); //只保留第一个, 清除多余的 + obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$","."); + obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); //只能输入两个小数 +}; + +$(function () { + 'use strict'; + // document.querySelector('body').addEventListener('touchmove', function(e) { + // if (!document.querySelector('.coupons').contains(e.target)) { + // e.preventDefault(); + // } + // }); + var dataCache = {price: '0', coupons: [], coupon_groups: {}}; + var exchangeRate = parseFloat(window.exchange_rate); + + if (window.AlipayJSBridge) { + AlipayJSBridge.call('hideOptionMenu'); + } else { + document.addEventListener('AlipayJSBridgeReady', function () { + AlipayJSBridge.call('hideOptionMenu'); + }, false); + } + dataCache.paying = false; + var ctrl = {}; + + $('.ff.key').bind('touchstart', function () { + if (dataCache.paying) { + return; + } + var char = $(this).attr('data-char'); + appendChar(char); + }); + + $('#audVal').bind('input porpertychange', function () { + if (dataCache.paying) { + return; + } + var char = $(this).val(); + if (parseFloat(char) >= 100000) { + char = char.slice(0, char.length - 1); + $(this).val(char); + return; + } + appendChar(char); + }); + + $('.coupons .use-check').click(function () { + if ($(this).hasClass('disabled')) { + return; + } + var couponId = $(this).attr('data-coupon-id'); + var couponGroup = $(this).attr('data-coupon-group'); + if (couponGroup) { + var prevCouponId = dataCache.coupon_groups[couponGroup]; + if (prevCouponId) { + var prevIdx = dataCache.coupons.indexOf(prevCouponId); + if (prevIdx >= 0) { + dataCache.coupons.splice(prevIdx, 1); + } + if (prevCouponId != couponId) { + $('.coupons .use-check[data-coupon-id="' + prevCouponId + '"]').removeClass('checked').addClass('unchecked'); + dataCache.coupon_groups[couponGroup] = couponId; + } else { + dataCache.coupon_groups[couponGroup] = null; + } + } else { + dataCache.coupon_groups[couponGroup] = couponId; + } + + } + + if ($(this).is('.checked')) { + $(this).removeClass('checked').addClass('unchecked'); + } else { + $(this).removeClass('unchecked').addClass('checked'); + } + var checked = $(this).is('.checked'); + if (checked) { + dataCache.coupons.push(couponId); + updatePrice(); + } else { + var idx = dataCache.coupons.indexOf(couponId); + dataCache.coupons.splice(idx, 1); + updatePrice(); + } + }); + $('.cb_bankpay').click(function () { + $.ajax({ + url: '/sys/partners/' + window.client_moniker + '/jump/link', + method: 'GET', + success: function (res) { + location.href = res; + }, + error: function (resp) { + var config = { + template: resp + }; + showWeuiDialog(config); + } + }) + }); + $('#key_B').bind('touchstart', function () { + backspace(); + }); + + function updatePoundage(price) { + if (window.extensions.indexOf('customerrate') >= 0 && window.rateValue != null) { + if (window.use_customised_rate) { + var rate = new Decimal(100).plus(window.rateValue).div(100); + var poundageValue = new Decimal(dataCache.price).mul(rate).sub(dataCache.price); + } else { + var rateRemain = new Decimal(100).sub(window.rateValue).div(100); + poundageValue = new Decimal(dataCache.price).div(rateRemain).sub(dataCache.price); + } + dataCache.poundageValue = poundageValue.toFixed(2, Decimal.ROUND_HALF_UP); + return poundageValue.plus(price).toFixed(2, Decimal.ROUND_HALF_UP); + } + return price; + } + + function updatePrice() { + $('#audVal').html(dataCache.price); + var realPrice = dataCache.price; + $('#audValReal').html(realPrice); + var surchargeData = calculateSurcharge(realPrice); + + var price = surchargeData.newPrice || realPrice; + var priceBeforeDiscount = price; + dataCache.discounts = []; + dataCache.tax = surchargeData.tax; + dataCache.surcharge = surchargeData.surcharge; + $(window.coupons).each(function () { + price = this.handleDiscount(price, dataCache.price, dataCache.discounts, dataCache.coupons); + }); + dataCache.finalPrice = new Decimal(price).toFixed(2, Decimal.ROUND_FLOOR); + var rate = 'CNY' == window.currency ? 1 : exchangeRate; + var cnyVal = Decimal.mul(price, rate).toFixed(2, Decimal.ROUND_FLOOR); + dataCache.currencyPrice = 'CNY' == window.currency ? Decimal.div(priceBeforeDiscount, exchangeRate).toFixed(2, Decimal.ROUND_FLOOR) : priceBeforeDiscount; + $('#cnyVal').html(cnyVal) + } + + function backspace() { + dataCache.price = dataCache.price.substring(0, dataCache.price.length - 1); + if (dataCache.price.length == 0) { + dataCache.price = '0'; + } + updatePrice(); + updatePoundageStatus(); + } + + function appendChar(char) { + if (char == "") { + char = '0'; + } + var check = /[^\d.]/g; + if (check.test(char)) { + return; + } + var tmpChar = (char.split('.')).length-1; + if (tmpChar > 1) { + return; + } + var pointLocation = dataCache.price.indexOf('.'); + if (char == '.' || char.length > 8) { + return; + } + if (pointLocation >= 0 && pointLocation <= char.length - 4) { + return; + } + if (dataCache.price == '0' && char != '.') { + dataCache.price = ''; + } + dataCache.price = char; + updatePrice(); + updatePoundageStatus(); + } + + function updatePoundageStatus() { + $(window.coupons).each(function () { + var coupon = this; + var couponId = coupon.couponId(); + if (coupon.isEnable(dataCache.currencyPrice || 0)) { + $('.coupons .use-check[data-coupon-id=' + couponId + ']').removeClass('disabled'); + } else { + var dom = $('.coupons .use-check[data-coupon-id=' + couponId + ']').addClass('disabled'); + var couponGroup = dom.attr('data-coupon-group'); + if (couponGroup) { + if (dataCache.coupon_groups[couponGroup] == couponId) { + dataCache.coupon_groups[couponGroup] = null; + } + } + var idx = dataCache.coupons.indexOf(couponId); + if (idx >= 0) { + dataCache.coupons.splice(idx, 1); + } + dom.removeClass('checked').addClass('unchecked'); + } + }) + } + + updatePoundageStatus(); + + $('#coupon-box-toggle').click(function () { + $('.coupons-container').addClass('show'); + }); + $('.coupons-container>.coupons-mask,.coupons-container #close-coupon-box').click(function () { + $(this).parents('.coupons-container').removeClass('show'); + }); + + + $('.remark-btn').click(function () { + var cfg = { + title: '备注 Remark', + template: '', + initialize: function (dialog) { + $('').addClass('remark-input').attr('name', 'remark').val(dataCache.remark || '').appendTo($('.weui_dialog_bd', dialog)); + }, + confirm: function (dialog, chosen) { + if (chosen) { + var remark = $('textarea[name="remark"]', dialog).val(); + if (remark) { + $('#remark-box').text('备注:' + remark).show() + } else { + $('#remark-box').text('').hide(); + } + dataCache.remark = remark; + } + + } + }; + showWeuiDialog(cfg); + }); + + $('.paydetail').click(function () { + var config = { + title: 'Payment Detail', + template: '', + initialize: function (dialog) { + var bd = $('.weui_dialog_bd', dialog); + var currencySymbol = window.currency == 'CNY' ? '¥' : '$'; + $('

').html('Input Price 输入金额:' + currencySymbol + dataCache.price).appendTo(bd); + if (parseFloat(dataCache.surcharge) > 0) { + $('

').html('Surcharge 手续费(' + window.rateValue + '%):+' + currencySymbol + dataCache.surcharge).appendTo(bd); + } + if (parseFloat(dataCache.tax) > 0) { + $('

').html('GST(10%):' + currencySymbol + dataCache.tax).appendTo(bd); + } + $(dataCache.discounts).each(function () { + $('

').html(this.title + ':-' + currencySymbol + this.amount).appendTo(bd); + }); + $('

').addClass('final').html('Final 支付金额:' + currencySymbol + (dataCache.finalPrice || 0)).appendTo(bd); + } + }; + showWeuiDialog(config); + }); + + $('#key_P').click(function () { + dataCache.remark = $('.remark-textarea-new').val(); + if (window.requireRemark) { + if (!dataCache.remark) { + var config = { + title: '请先输入备注', + template: '' + }; + showWeuiDialog(config); + } + + } + }); + + $('#key_P').bind('touchstart', function () { + dataCache.remark = $('.remark-textarea-new').val(); + if (window.requireRemark) { + if (!dataCache.remark) { + return; + } + } + $('#key_P_div').addClass('hidden'); + $('#key_Loading_div').removeClass('hidden'); + if (dataCache.paying) { + return; + } + dataCache.paying = true; + var data = {price: dataCache.price + '', currency: window.currency}; + if (dataCache.remark) { + data.description = dataCache.remark; + } + if (window.extensions.indexOf('preauthorize') >= 0) { + data.preauthorize = true; + } + if (window.extensions.indexOf('qrcodemode') >= 0) { + data.qrmode = true; + } + if (window.extensions.indexOf('customerrate') >= 0) { + data.customerrate = true; + } + data.coupons = dataCache.coupons; + data.qrcodeVersion = window.qrcodeVersion; + $.ajax({ + url: '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders', + method: 'POST', + data: JSON.stringify(data), + contentType: 'application/json', + dataType: 'json', + success: function (pay) { + if (pay.direct_paid) { + location.href = '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result'; + return; + } + if (pay.mweb_url){ + location.href = pay.mweb_url; + return; + } + if (window.AlipayJSBridge) { + callPayment(); + } else { + // 如果没有注入则监听注入的事件 + document.addEventListener('AlipayJSBridgeReady', callPayment, false); + } + + function callPayment() { + try { + AlipayJSBridge.call('tradePay', { + tradeNO: pay.trade_no + }, function (res) { + dataCache.paying = false; + if (res.resultCode == '9000') { + AlipayJSBridge.call('startApp', { + appId: '20000056', + param: { + actionType: 'showSuccPage', + payResult: res.result + }, + closeCurrentApp: false + }); + startCheckOrder(pay.order_id, '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result'); + } else if (res.resultCode == '6001') { + //do nothing + } else { + if (res.memo) { + weuiAlert(res.memo); + } + } + $('#key_P_div').removeClass('hidden'); + $('#key_Loading_div').addClass('hidden'); + }) + } catch (err) { + weuiAlert(err) + } + } + }, + error: function (jqXhr) { + weuiAlert(jqXhr.responseJSON.message); + $('#key_P_div').removeClass('hidden'); + $('#key_Loading_div').addClass('hidden'); + dataCache.paying = false; + } + }) + }); + + function startCheckOrder(orderId, url) { + function checkOrderStd() { + $.ajax({ + url: '/api/v1.0/payment/orders/' + orderId + '/status', + method: 'GET', + dataType: 'json', + success: function (res) { + if (res.paid) { + location.href = url; + } else { + setTimeout(checkOrderStd, 500); + } + } + }) + } + + checkOrderStd(); + } + + function weuiAlert(msg) { + var config = { + template: msg + }; + showWeuiDialog(config); + } + + function showWeuiDialog(config) { + if (config.templateUrl) { + $.ajax({ + url: config.templateUrl, + dataType: 'html', + success: function (template) { + buildDialog(template); + } + }); + } else { + buildDialog(config.template); + } + + function buildDialog(template) { + var defaultConfig = {backdrop: true}; + config = $.extend({}, defaultConfig, config); + var dialog = $("
", {class: 'weui_dialog_confirm'}); + var mask = $('
', {class: 'weui_mask'}).appendTo(dialog); + if (config.backdrop) { + mask.click(function () { + dialog.remove(); + if ($.isFunction(config.dismiss)) { + config.dismiss(); + } + }) + } + var dialogBox = $("
", {class: 'weui_dialog'}).appendTo(dialog); + if (config.title) { + $('
', {class: 'weui_dialog_hd'}).append($('', {class: 'weui_dialog_title'}).html(config.title)).appendTo(dialogBox); + } + var dialogBody = $("
", {class: 'weui_dialog_bd'}).appendTo(dialogBox); + if (template) { + dialogBody.append(template); + } + if ($.isFunction(config.initialize)) { + config.initialize(dialog); + } + var ft = $('
').appendTo(dialogBox); + if(window.paypad_version !== 'v3'){ + if ($.isFunction(config.confirm)) { + var yes = $('', { + class: 'weui_btn_dialog primary', + text: 'OK', + style: 'background: #0bb20c;color: #fff;' + }).appendTo(ft); + yes.click(function () { + config.confirm(dialog, true); + dialog.remove(); + }); + var no = $('', {class: 'weui_btn_dialog default', text: 'Cancel'}).appendTo(ft); + no.click(function () { + config.confirm(dialog, false); + dialog.remove(); + }) + } else { + var ok = $('', { + class: 'weui_btn_dialog primary', + text: 'OK', + style: 'background: #0bb20c;color: #fff;' + }).appendTo(ft); + ok.click(function () { + dialog.remove(); + }) + } + } else { + if ($.isFunction(config.confirm)) { + var yes = $('', { + class: 'weui_btn_dialog primary', + text: 'OK', + style: 'background: #FF9705;color: #fff;' + }).appendTo(ft); + yes.click(function () { + config.confirm(dialog, true); + dialog.remove(); + }); + var no = $('', {class: 'weui_btn_dialog default', text: 'Cancel'}).appendTo(ft); + no.click(function () { + config.confirm(dialog, false); + dialog.remove(); + }) + } else { + var ok = $('', { + class: 'weui_btn_dialog primary', + text: 'OK', + style: 'background: #FF9705;color: #fff;' + }).appendTo(ft); + ok.click(function () { + dialog.remove(); + }) + } + } + dialog.appendTo($('body')); + } + + } +}); diff --git a/src/main/ui/static/templates/alipayaps/v5/payment.js b/src/main/ui/static/templates/alipayaps/v5/payment.js new file mode 100644 index 000000000..5c1498ad3 --- /dev/null +++ b/src/main/ui/static/templates/alipayaps/v5/payment.js @@ -0,0 +1,452 @@ +/** + * Created by yixian on 2017-05-08 + */ + +$(function () { + 'use strict'; + // document.querySelector('body').addEventListener('touchmove', function(e) { + // if (!document.querySelector('.coupons').contains(e.target)) { + // e.preventDefault(); + // } + // }); + var dataCache = {price: '0', coupons: [], coupon_groups: {}}; + var exchangeRate = 'CNY' == window.currency ? 1 : parseFloat(window.exchange_rate); + dataCache.paying = false; + var ctrl = {}; + + if (window.AlipayJSBridge) { + AlipayJSBridge.call('hideOptionMenu'); + } else { + document.addEventListener('AlipayJSBridgeReady', function () { + AlipayJSBridge.call('hideOptionMenu'); + }, false); + } + dataCache.paying = false; + var ctrl = {}; + + $('.ff.key').bind('touchstart', function () { + if (dataCache.paying) { + return; + } + var char = $(this).attr('data-char'); + appendChar(char); + }); + + $('.coupons .use-check').click(function () { + if ($(this).hasClass('disabled')) { + return; + } + var couponId = $(this).attr('data-coupon-id'); + var couponGroup = $(this).attr('data-coupon-group'); + if (couponGroup) { + var prevCouponId = dataCache.coupon_groups[couponGroup]; + if (prevCouponId) { + var prevIdx = dataCache.coupons.indexOf(prevCouponId); + if (prevIdx >= 0) { + dataCache.coupons.splice(prevIdx, 1); + } + if (prevCouponId != couponId) { + $('.coupons .use-check[data-coupon-id="' + prevCouponId + '"]').removeClass('checked').addClass('unchecked'); + dataCache.coupon_groups[couponGroup] = couponId; + } else { + dataCache.coupon_groups[couponGroup] = null; + } + } else { + dataCache.coupon_groups[couponGroup] = couponId; + } + + } + + if ($(this).is('.checked')) { + $(this).removeClass('checked').addClass('unchecked'); + } else { + $(this).removeClass('unchecked').addClass('checked'); + } + var checked = $(this).is('.checked'); + if (checked) { + dataCache.coupons.push(couponId); + updatePrice(); + } else { + var idx = dataCache.coupons.indexOf(couponId); + dataCache.coupons.splice(idx, 1); + updatePrice(); + } + }); + $('.cb_bankpay').click(function () { + $.ajax({ + url: '/sys/partners/' + window.client_moniker + '/jump/link', + method: 'GET', + success: function (res) { + location.href = res; + }, + error: function (resp) { + var config = { + template: resp + }; + showWeuiDialog(config); + } + }) + }); + $('#key_B').bind('touchstart', function () { + backspace(); + }); + + function updatePoundage(price) { + if (window.extensions.indexOf('customerrate') >= 0 && window.rateValue != null) { + if (window.use_customised_rate) { + var rate = new Decimal(100).plus(window.rateValue).div(100); + var poundageValue = new Decimal(dataCache.price).mul(rate).sub(dataCache.price); + } else { + var rateRemain = new Decimal(100).sub(window.rateValue).div(100); + poundageValue = new Decimal(dataCache.price).div(rateRemain).sub(dataCache.price); + } + dataCache.poundageValue = poundageValue.toFixed(2, Decimal.ROUND_HALF_UP); + return poundageValue.plus(price).toFixed(2, Decimal.ROUND_HALF_UP); + } + return price; + } + + function updatePrice() { + $('#audVal').html(dataCache.price); + var realPrice = dataCache.price; + $('#audValReal').html(realPrice); + var surchargeData = calculateSurcharge(realPrice); + + var price = surchargeData.newPrice || realPrice; + var priceBeforeDiscount = price; + dataCache.discounts = []; + dataCache.tax = surchargeData.tax; + dataCache.surcharge = surchargeData.surcharge; + $(window.coupons).each(function () { + price = this.handleDiscount(price, dataCache.price, dataCache.discounts, dataCache.coupons); + }); + dataCache.finalPrice = new Decimal(price).toFixed(2, Decimal.ROUND_FLOOR); + var rate = 'CNY' == window.currency ? 1 : exchangeRate; + var cnyVal = Decimal.mul(price, rate).toFixed(2, Decimal.ROUND_FLOOR); + dataCache.currencyPrice = 'CNY' == window.currency ? Decimal.div(priceBeforeDiscount, exchangeRate).toFixed(2, Decimal.ROUND_FLOOR) : priceBeforeDiscount; + $('#cnyVal').html(cnyVal) + } + + function backspace() { + dataCache.price = dataCache.price.substring(0, dataCache.price.length - 1); + if (dataCache.price.length == 0) { + dataCache.price = '0'; + } + updatePrice(); + updatePoundageStatus(); + } + + function appendChar(char) { + var pointLocation = dataCache.price.indexOf('.'); + if (pointLocation >= 0 || char == '.' || dataCache.price.length < 5) { + if (pointLocation >= 0 && char == '.') { + return; + } + if (pointLocation >= 0 && pointLocation <= dataCache.price.length - 3) { + return; + } + if (dataCache.price == '0' && char != '.') { + dataCache.price = ''; + } + dataCache.price += char; + updatePrice(); + updatePoundageStatus(); + } + } + + function updatePoundageStatus() { + $(window.coupons).each(function () { + var coupon = this; + var couponId = coupon.couponId(); + if (coupon.isEnable(dataCache.currencyPrice || 0)) { + $('.coupons .use-check[data-coupon-id=' + couponId + ']').removeClass('disabled'); + } else { + var dom = $('.coupons .use-check[data-coupon-id=' + couponId + ']').addClass('disabled'); + var couponGroup = dom.attr('data-coupon-group'); + if (couponGroup) { + if (dataCache.coupon_groups[couponGroup] == couponId) { + dataCache.coupon_groups[couponGroup] = null; + } + } + var idx = dataCache.coupons.indexOf(couponId); + if (idx >= 0) { + dataCache.coupons.splice(idx, 1); + } + dom.removeClass('checked').addClass('unchecked'); + } + }) + } + + updatePoundageStatus(); + + $('#coupon-box-toggle').click(function () { + $('.coupons-container').addClass('show'); + }); + $('.coupons-container>.coupons-mask,.coupons-container #close-coupon-box').click(function () { + $(this).parents('.coupons-container').removeClass('show'); + }); + + $('.paydetail').click(function () { + var config = { + title: 'Payment Detail', + template: '', + initialize: function (dialog) { + var bd = $('.weui_dialog_bd', dialog); + var currencySymbol = window.currency == 'CNY' ? '¥' : '$'; + $('

').html('Input Price 输入金额:' + currencySymbol + dataCache.price).appendTo(bd); + if (parseFloat(dataCache.surcharge) > 0) { + $('

').html('Surcharge 手续费(' + window.rateValue + '%):+' + currencySymbol + dataCache.surcharge).appendTo(bd); + } + if (parseFloat(dataCache.tax) > 0) { + $('

').html('GST(10%):' + currencySymbol + dataCache.tax).appendTo(bd); + } + $(dataCache.discounts).each(function () { + $('

').html(this.title + ':-' + currencySymbol + this.amount).appendTo(bd); + }); + $('

').addClass('final').html('Final 支付金额:' + currencySymbol + (dataCache.finalPrice || 0)).appendTo(bd); + } + }; + showWeuiDialog(config); + }); + + $('#key_P').click(function () { + if (window.requireRemark) { + if (!dataCache.remark) { + var config = { + title: '请先输入备注', + template: '' + }; + showWeuiDialog(config); + } + + } + }); + + function addBlurListen() { + $('.remark-input').on('blur', function (event) { + dataCache.remark = $('textarea[name="remark"]').val(); + }); + } + addBlurListen(); + + $('#audVal').bind('DOMNodeInserted', function(e) { + if(dataCache.price==0){ + $('.pay_button').css({"background-color":"#eee",}).attr('disabled',true); + $('.bank_button').css({"background-color":"#eee",}).attr('disabled',true); + }else{ + $('.pay_button').css({"background-color":"#108ee9",}).attr('disabled',false); + $('.bank_button').css({"background-color":"#FF6600",}).attr('disabled',false); + } + }); + $('#key_P').bind('touchstart', function () { + if (window.requireRemark) { + if ($('textarea[name="remark"]').val()=="") { + return; + } + } + $('#key_P').addClass('hidden'); + $('#key_Loading').removeClass('hidden'); + if (dataCache.paying) { + return; + } + dataCache.paying = true; + var data = {price: dataCache.price + '', currency: window.currency}; + if (dataCache.remark) { + data.description = dataCache.remark; + } + if (window.extensions.indexOf('preauthorize') >= 0) { + data.preauthorize = true; + } + if (window.extensions.indexOf('qrcodemode') >= 0) { + data.qrmode = true; + } + if (window.extensions.indexOf('customerrate') >= 0) { + data.customerrate = true; + } + data.coupons = dataCache.coupons; + data.qrcodeVersion = window.qrcodeVersion; + $.ajax({ + url: '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders', + method: 'POST', + data: JSON.stringify(data), + contentType: 'application/json', + dataType: 'json', + success: function (pay) { + if (pay.direct_paid) { + location.href = '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result'; + return; + } + if (pay.mweb_url){ + location.href = pay.mweb_url; + return; + } + if (window.AlipayJSBridge) { + callPayment(); + } else { + // 如果没有注入则监听注入的事件 + document.addEventListener('AlipayJSBridgeReady', callPayment, false); + } + + function callPayment() { + try { + AlipayJSBridge.call('tradePay', { + tradeNO: pay.trade_no + }, function (res) { + dataCache.paying = false; + if (res.resultCode == '9000') { + AlipayJSBridge.call('startApp', { + appId: '20000056', + param: { + actionType: 'showSuccPage', + payResult: res.result + }, + closeCurrentApp: false + }); + startCheckOrder(pay.order_id, '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result'); + } else if (res.resultCode == '6001') { + //do nothing + } else { + if (res.memo) { + weuiAlert(res.memo); + } + } + $('#key_P_div').removeClass('hidden'); + $('#key_Loading_div').addClass('hidden'); + }) + } catch (err) { + weuiAlert(err) + } + } + }, + error: function (jqXhr) { + weuiAlert(jqXhr.responseJSON.message); + $('#key_P_div').removeClass('hidden'); + $('#key_Loading_div').addClass('hidden'); + dataCache.paying = false; + } + }) + }); + + function startCheckOrder(orderId, url) { + function checkOrderStd() { + $.ajax({ + url: '/api/v1.0/payment/orders/' + orderId + '/status', + method: 'GET', + dataType: 'json', + success: function (res) { + if (res.paid) { + location.href = url; + } else { + setTimeout(checkOrderStd, 500); + } + } + }) + } + + checkOrderStd(); + } + + function weuiAlert(msg) { + var config = { + template: msg + }; + showWeuiDialog(config); + } + + function showWeuiDialog(config) { + if (config.templateUrl) { + $.ajax({ + url: config.templateUrl, + dataType: 'html', + success: function (template) { + buildDialog(template); + } + }); + } else { + buildDialog(config.template); + } + + function buildDialog(template) { + var defaultConfig = {backdrop: true}; + config = $.extend({}, defaultConfig, config); + var dialog = $("
", {class: 'weui_dialog_confirm'}); + var mask = $('
', {class: 'weui_mask'}).appendTo(dialog); + if (config.backdrop) { + mask.click(function () { + dialog.remove(); + if ($.isFunction(config.dismiss)) { + config.dismiss(); + } + }) + } + var dialogBox = $("
", {class: 'weui_dialog'}).appendTo(dialog); + if (config.title) { + $('
', {class: 'weui_dialog_hd'}).append($('', {class: 'weui_dialog_title'}).html(config.title)).appendTo(dialogBox); + } + var dialogBody = $("
", {class: 'weui_dialog_bd'}).appendTo(dialogBox); + if (template) { + dialogBody.append(template); + } + if ($.isFunction(config.initialize)) { + config.initialize(dialog); + } + var ft = $('
').appendTo(dialogBox); + if(window.paypad_version !== 'v3'){ + if ($.isFunction(config.confirm)) { + var yes = $('', { + class: 'weui_btn_dialog primary', + text: 'OK', + style: 'background: #0bb20c;color: #fff;' + }).appendTo(ft); + yes.click(function () { + config.confirm(dialog, true); + dialog.remove(); + }); + var no = $('', {class: 'weui_btn_dialog default', text: 'Cancel'}).appendTo(ft); + no.click(function () { + config.confirm(dialog, false); + dialog.remove(); + }) + } else { + var ok = $('', { + class: 'weui_btn_dialog primary', + text: 'OK', + style: 'background: #0bb20c;color: #fff;' + }).appendTo(ft); + ok.click(function () { + dialog.remove(); + }) + } + } else { + if ($.isFunction(config.confirm)) { + var yes = $('', { + class: 'weui_btn_dialog primary', + text: 'OK', + style: 'background: #FF9705;color: #fff;' + }).appendTo(ft); + yes.click(function () { + config.confirm(dialog, true); + dialog.remove(); + }); + var no = $('', {class: 'weui_btn_dialog default', text: 'Cancel'}).appendTo(ft); + no.click(function () { + config.confirm(dialog, false); + dialog.remove(); + }) + } else { + var ok = $('', { + class: 'weui_btn_dialog primary', + text: 'OK', + style: 'background: #FF9705;color: #fff;' + }).appendTo(ft); + ok.click(function () { + dialog.remove(); + }) + } + } + dialog.appendTo($('body')); + addBlurListen(); + } + + } +});