电商app支付倒计时
所有电商app支付页面都是有倒计时的,一来可以促进消费,二来可以减少恶意减库存的问题发生。
因为创建订单的时候,除了预售的商品外,实际销售的商品是需要减库存的。
一般的电商app倒计时都是30分钟或者45分钟的。
如果在此页面没有进行付款或者付款失败,则此订单会进入到待付款页面中,在那个页面还是可以进行二次支付的。此时的倒计时会延续之前的倒计时时间。如果倒计时到了0,则此订单默认为交易失败,订单关闭。
此处的解决方法如下:
创建订单时,默认是30分钟倒计时。
创建订单成功后,如果未支付状态,则后台接口需要返回一个时间戳时间,在此时间戳的时间基础上进行倒计时处理。
onLoad(options) {
// 这个expirationTime是从待支付列表中点击支付按钮传递过来的时间戳参数
this.expirationTime = options.expirationTime;
// 如果没有这个时间戳参数,则代表是从创建订单的时候进入的此支付页面,默认为4500000时间。
var result = 45000000;
if(options.expirationTime){
var now=new Date();
var end=new Date(options.expirationTime);
// 用当前的时间与时间戳时间比较,如果到了时间戳时间,则代表倒计时结束,交易失败。
if(end-now > 45000000){
result=45000000;
}else{
result=Math.floor(end-now);
}
}
this.runBack(result);
},
methods:{
runBack(cm) {
if (cm > 0) {
cm > 60000?
(this.rocallTime =(new Date(cm).getMinutes() < 10? "0" + new Date(cm).getMinutes(): new Date(cm).getMinutes()) + ":" + (new Date(cm).getSeconds() < 10? "0" + new Date(cm).getSeconds(): new Date(cm).getSeconds()))
:
(this.rocallTime ="00:" +(new Date(cm).getSeconds() < 10 ? "0" + new Date(cm).getSeconds(): new Date(cm).getSeconds()));
let _msThis = this;
// 此处是一个递归,调用时间计时器函数,一秒时间减少一秒,一秒后继续调用当前函数,这就是函数的递归。
setTimeout(function() {
cm -= 1000;
_msThis.runBack(cm);
}, 1000);
} else {
this.ispay = false
}
},
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
————————————————
版权声明:本文为CSDN博主「yehaocheng520」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yehaocheng520/article/details/108995871