caimei-paymobile.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. /**
  2. *Created by ZHJY on 2020/7/14.
  3. */
  4. var payContainer = new Vue({
  5. el:"#payContainer",
  6. data: {
  7. loginLoading:true,
  8. payInfo:{
  9. payType:'',//支付类型 WEIXIN 微信支付 ALIPAY 支付宝支付
  10. payOrderId:'', //订单ID
  11. payAmount:0,
  12. payUnpaidAmount:0,//本次支付金额
  13. payMobileUrl:'',//URL
  14. },
  15. orderNo:'',//订单编号
  16. payableAmount:'',//应付金额
  17. receiptAmount:'',//已支付金额
  18. balanceAmount:'',//应付剩余金额
  19. payAmount:'',//本次支付金额
  20. discernReceiptList:[],//支付记录列表
  21. tabIndex:0,//支付方式 0 移动支付 1网银支付 2线下转账
  22. paySuccessCounter:'',
  23. mobileTabIndex:0,
  24. bankTabIndex:0,
  25. isRequest:false,
  26. isRefresh:false,
  27. maxtime:300,
  28. pageType:'',//页面跳转类型
  29. productID:'',//商品ID
  30. duration: 0, // 购买的会员期限
  31. mbOrderId:0,
  32. couponRecordId:0,
  33. vipId: null, // vip套餐id
  34. vipRecordId: undefined,
  35. couponId:0,
  36. userId:0
  37. },
  38. filters: {
  39. NumFormat:function(value) {
  40. if(!value) return '0.00';
  41. var intPart = Number(value) - Number(value)%1; //获取整数部分(这里是windy93的方法)
  42. var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断
  43. var floatPart = ".00"; //预定义小数部分
  44. var value2Array = value.toString().split(".");
  45. if(value2Array.length == 2) { //=2表示数据有小数位
  46. floatPart = value2Array[1].toString(); //拿到小数部分
  47. if(floatPart.length == 1) { //补0,实际上用不着
  48. return intPartFormat + "." + floatPart + '0';
  49. } else {
  50. return intPartFormat + "." + floatPart;
  51. }
  52. } else {
  53. return intPartFormat + floatPart;
  54. }
  55. }
  56. },
  57. methods: {
  58. infoPayOrderCheckoutCounter:function(){//初始化订单数据
  59. var _self = this;
  60. if( _self.pageType === '1' || _self.pageType === '2' || _self.pageType === '3'){
  61. setTimeout(function(){
  62. switch (_self.payInfo.payType) {
  63. case 'WEIXIN':
  64. _self.getWrchatQrcodeShow();
  65. break;
  66. case 'ALIPAY':
  67. _self.getAliPayQrcodeInfo();
  68. break;
  69. }
  70. }, 2000);
  71. } else {
  72. PayApi.PayOrderCheckoutCounter({orderId:_self.payInfo.payOrderId},function(response){
  73. if(response.code == 0){
  74. // console.log(response);
  75. var data = response.data;
  76. _self.orderNo = data.order.orderNo;
  77. _self.paySuccessCounter = data.order.paySuccessCounter;
  78. _self.payInfo.payAmount = data.order.payableAmount-data.order.receiptAmount;
  79. switch (_self.payInfo.payType) {
  80. case 'WEIXIN':
  81. _self.getWrchatQrcodeShow();
  82. break;
  83. case 'ALIPAY':
  84. _self.getAliPayQrcodeInfo();
  85. break;
  86. }
  87. }else{
  88. CAIMEI.Alert(response.msg,'确定',false);
  89. }
  90. })
  91. }
  92. },
  93. getAliPayQrcodeInfo:function(){//生成支付宝二维码
  94. var _self = this;
  95. var qrcode = new QRCode(document.getElementById("ali_pay_container"), {
  96. render: "canvas", //也可以替换为table
  97. text: _self.payInfo.payMobileUrl,
  98. width: 220,
  99. height: 220,
  100. colorDark : "#000000",
  101. colorLight : "#ffffff",
  102. correctLevel : QRCode.CorrectLevel.H
  103. });
  104. _self.loginLoading = false;
  105. _self.isRequest = true;
  106. var timeClock = setInterval(function(){
  107. _self.maxtime--;
  108. if (_self.maxtime == 0) {
  109. clearInterval(timeClock);
  110. _self.isRefresh = true;
  111. }
  112. },1000);
  113. _self.setTimerAliPay();
  114. },
  115. getWrchatQrcodeShow:function(){//生成微信二维码
  116. var _self = this;
  117. var orderInfo = {};
  118. if( _self.pageType === '1'){
  119. orderInfo = {//二手微信二维码参数
  120. pageType:1,
  121. productId:_self.productID,
  122. payAmount:_self.payAmount
  123. };
  124. } else if (_self.pageType === '2') { // 微信支付会员
  125. console.log('微信支付会员');
  126. orderInfo = {
  127. pageType: 2,
  128. payAmount: _self.payAmount,
  129. vipId: _self.vipId,
  130. vipRecordId: _self.vipRecordId
  131. };
  132. } else if (_self.pageType === '3') { // 微信支付优惠券
  133. console.log('微信支付优惠券');
  134. orderInfo = {
  135. pageType: 3,
  136. payAmount: _self.payAmount,
  137. couponId: _self.couponId,
  138. couponRecordId:_self.couponRecordId,
  139. userId : _self.userId
  140. };
  141. } else {
  142. orderInfo = {//普通订单微信二维码参数
  143. pageType:0,
  144. orderID:_self.payInfo.payOrderId,
  145. payAmount:_self.payAmount
  146. };
  147. }
  148. _self.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state="+JSON.stringify(orderInfo)+"#wechat_redirect";
  149. console.log(_self.payInfo.payMobileUrl);
  150. var qrcode = new QRCode(document.getElementById("wx_pay_container"), {
  151. render: "canvas", //也可以替换为table
  152. text: _self.payInfo.payMobileUrl,
  153. width: 220,
  154. height: 220,
  155. colorDark : "#000000",
  156. colorLight : "#ffffff",
  157. correctLevel : QRCode.CorrectLevel.H
  158. });
  159. _self.loginLoading = false;
  160. _self.isRequest = true;
  161. var timeClock = setInterval(function(){
  162. _self.maxtime--;
  163. if (_self.maxtime == 0) {
  164. clearInterval(timeClock);
  165. _self.isRefresh = true;
  166. }
  167. },1000);
  168. _self.setTimerWechatPay();
  169. },
  170. setTimerWechatPay:function () {//定时任务查询微信支付结果
  171. var _self = this;
  172. var timer;
  173. if(_self.pageType === '2'){//超级会员支付结果
  174. PayApi.PayOrderPayVipCheck({recordId : _self.vipRecordId},function(response){
  175. // console.log(response);
  176. if(response.code === 0){
  177. CAIMEI.dialog('支付成功');
  178. clearTimeout(timer); //清理定时任务
  179. setTimeout(function(){
  180. window.location.href = '/index.html';
  181. },2000);
  182. }else{
  183. timer = setTimeout(function(){
  184. _self.setTimerWechatPay()
  185. }, 1000*10);
  186. }
  187. });
  188. }else if(_self.pageType === '3'){//优惠券支付结果
  189. PayApi.PayOrderPayCouponCheck({ couponRecordId: _self.couponRecordId },function(response){
  190. // console.log(response);
  191. if(response.code === 0){
  192. CAIMEI.dialog('支付成功');
  193. clearTimeout(timer); //清理定时任务
  194. setTimeout(function(){
  195. window.location.href = '/index.html';
  196. },2000);
  197. }else{
  198. timer = setTimeout(function(){
  199. _self.setTimerWechatPay()
  200. }, 1000*10);
  201. }
  202. });
  203. }else{
  204. PayApi.PayOrderPayWhetherSuccess({orderId: _self.payInfo.payOrderId, paySuccessCounter:_self.paySuccessCounter},function(response){
  205. // console.log(response);
  206. if(response.code === 0){
  207. CAIMEI.dialog('支付成功');
  208. clearTimeout(timer); //清理定时任务
  209. setTimeout(function(){
  210. window.location.href = '/index.html';
  211. },2000);
  212. }else{
  213. timer = setTimeout(function(){
  214. _self.setTimerWechatPay()
  215. }, 1000*10);
  216. }
  217. });
  218. }
  219. },
  220. setTimerAliPay:function () {//定时任务查询支付宝支付结果
  221. var _self = this;
  222. var timer;
  223. PayApi.PayOrderFindOrderStatus({mbOrderId:_self.mbOrderId},function(response){
  224. var data = response.data.data;
  225. if(data.status === '1'){
  226. CAIMEI.dialog('支付成功');
  227. clearTimeout(timer); //清理定时任务
  228. setTimeout(function(){
  229. window.location.href = '/index.html';
  230. },3000);
  231. }else{
  232. timer = setTimeout(function(){
  233. _self.setTimerAliPay()
  234. }, 1000*10);
  235. }
  236. });
  237. },
  238. hidePayAlert:function(){//隐藏已支付弹窗
  239. var _self = this;
  240. _self.isPayAlert = false;
  241. },
  242. toFixedFn:function(text){//处理小数点后两位数
  243. return Number(text).toFixed(2);
  244. },
  245. },
  246. mounted: function () {
  247. var _self = this;
  248. var payData = JSON.parse(CAIMEI.Storage.getItem('payData'));
  249. _self.pageType = CAIMEI.getUrlParam('pageType');
  250. _self.duration = CAIMEI.getUrlParam('duration');
  251. if( _self.pageType === '1'){
  252. console.log('二手商品');
  253. _self.payInfo.payType = payData.type;
  254. _self.productID = payData.productId;
  255. _self.payInfo.payMobileUrl = payData.url;
  256. _self.mbOrderId = payData.mbOrderId;
  257. _self.payAmount = _self.payableAmount = payData.amount;
  258. }else if(_self.pageType === '2'){
  259. _self.payInfo.payType = payData.type;
  260. _self.payAmount = _self.payableAmount = payData.amount;
  261. _self.payInfo.payMobileUrl = payData.url;
  262. _self.vipId = payData.vipId;
  263. _self.vipRecordId = payData.vipRecordId;
  264. if(!_self.duration) { // 微信支付获取会员开通月份
  265. _self.duration = payData.duration;
  266. }
  267. }else if(_self.pageType === '3'){
  268. _self.payInfo.payType = payData.type;
  269. _self.payAmount = _self.payableAmount = payData.amount;
  270. _self.couponRecordId = payData.couponRecordId;
  271. _self.payInfo.payMobileUrl = payData.url;
  272. _self.couponId = payData.couponId;
  273. _self.userId = payData.userId;
  274. }else{
  275. console.log('订单支付');
  276. _self.payInfo.payType = payData.type;
  277. _self.payInfo.payOrderId = payData.orderid;
  278. _self.payInfo.payUnpaidAmount = payData.amount;
  279. _self.payInfo.payMobileUrl = payData.url;
  280. _self.mbOrderId = payData.mbOrderId;
  281. _self.payAmount =_self.payableAmount = _self.payInfo.payUnpaidAmount;
  282. }
  283. console.log(_self.payInfo.payType);
  284. _self.infoPayOrderCheckoutCounter();
  285. }
  286. });