caimei-paycash.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465
  1. /**
  2. *Created by ZHJY on 2020/7/14.
  3. */
  4. var payContainer = new Vue({
  5. el:"#payContainer",
  6. data: {
  7. isSubMitStatus:false,
  8. payInfo:{
  9. PAY_BANK_NUM: 'ALIPAY', //支付类型
  10. PAY_ORDERID: '', //订单ID
  11. PAY_UNPAIDAMOUNT: '', //待支付金额
  12. PAY_PAYAMOUNT: 0,//本次支付金额
  13. PAY_MOBILE_URL: '',//二维码生成链接
  14. PAY_DATA:{} //支付数据
  15. },
  16. bankData:[
  17. {imgUrl:'/img/pay/iconbank-01@2x.png',bankName:'中国工商银行',bankNum:'ICBC_B2B'},
  18. {imgUrl:'/img/pay/iconbank-02@2x.png',bankName:'招商银行',bankNum:'CMBCHINA_B2B'},
  19. {imgUrl:'/img/pay/iconbank-03@2x.png',bankName:'中国建设银行',bankNum:'CCB_B2B'},
  20. {imgUrl:'/img/pay/iconbank-04@2x.png',bankName:'交通银行',bankNum:'BOCO_B2B'},
  21. {imgUrl:'/img/pay/iconbank-05@2x.png',bankName:'兴业银行',bankNum:'CIB_B2B'},
  22. {imgUrl:'/img/pay/iconbank-06@2x.png',bankName:'中国民生银行',bankNum:'CMBC_B2B'},
  23. {imgUrl:'/img/pay/iconbank-07@2x.png',bankName:'中国广发银行',bankNum:'CEB_B2B'},
  24. {imgUrl:'/img/pay/iconbank-08@2x.png',bankName:'中国银行',bankNum:'BOC_B2B'},
  25. {imgUrl:'/img/pay/iconbank-09@2x.png',bankName:'平安银行',bankNum:'SZPA_B2B'},
  26. {imgUrl:'/img/pay/iconbank-10@2x.png',bankName:'中信银行',bankNum:'ECITIC_B2B'},
  27. {imgUrl:'/img/pay/iconbank-11@2x.png',bankName:'浦发银行',bankNum:'SPDB_B2B'},
  28. {imgUrl:'/img/pay/iconbank-12@2x.png',bankName:'华夏银行',bankNum:'HXB_B2B'},
  29. {imgUrl:'/img/pay/iconbank-13@2x.png',bankName:'北京银行',bankNum:'BCCB_B2B'},
  30. {imgUrl:'/img/pay/iconbank-14@2x.png',bankName:'中国农业银行',bankNum:'ABC_B2B'},
  31. {imgUrl:'/img/pay/iconbank-15@2x.png',bankName:'中国邮政储蓄银行',bankNum:'PSBC_B2B'},
  32. {imgUrl:'/img/pay/iconbank-16@2x.png',bankName:'徽商银行',bankNum:'HSB_B2B'},
  33. {imgUrl:'/img/pay/iconbank-17@2x.png',bankName:'青岛银行',bankNum:'QDYH_B2B'},
  34. {imgUrl:'/img/pay/iconbank-18@2x.png',bankName:'浙商银行',bankNum:'CZ_B2B'},
  35. {imgUrl:'/img/pay/iconbank-19@2x.png',bankName:'齐鲁银行',bankNum:'QLYH_B2B'}
  36. ],
  37. methodTab:['线上支付','转账支付'],
  38. mobileData:[
  39. {imgUrl:'/img/pay/iconbank-ali@2x.png',bankName:'支付宝支付',bankNum:'ALIPAY'},
  40. {imgUrl:'/img/pay/iconbank-wx@2x.png',bankName:'微信支付',bankNum:'WEIXIN'},
  41. {imgUrl:'/img/pay/iconbank-bank@2x.png',bankName:'网银支付',bankNum:'ICBC_B2B'}
  42. ],
  43. pageType:'',//页面跳转类型
  44. paidAmount:'',//订单待付金额
  45. payableAmount:'',//应付金额
  46. receiptAmount:'',//已支付金额
  47. balanceAmount:'',//应付剩余金额
  48. payAmount:'',//本次支付金额
  49. paymentIimit:50000,
  50. paymentIimitText:'',
  51. discernReceiptList:[],//支付记录列表
  52. tabIndex:0,//支付方式 0 移动支付 1网银支付 2线下转账
  53. mbOrderId:'',//支付订单ID
  54. mobileTabIndex:0,
  55. bankTabIndex:0,
  56. isRequest:false,
  57. isPayAlert:false,
  58. paySuccessCounter:'',
  59. bankPayLink_url:'',
  60. orderIdentificationId:'',//订单标识
  61. receiptStatus:'',
  62. invoiceStatus:false,
  63. isReceiptStatus:false,
  64. onlinePayFlag:'',
  65. payStatusText:'使用微信和企业网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。',
  66. productID:''//发布商品的ID
  67. },
  68. filters: {
  69. NumFormat:function(value) {
  70. if(!value) return '0.00';
  71. var intPart = Number(value) - Number(value)%1; //获取整数部分(这里是windy93的方法)
  72. var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断
  73. var floatPart = ".00"; //预定义小数部分
  74. var value2Array = value.toString().split(".");
  75. if(value2Array.length == 2) { //=2表示数据有小数位
  76. floatPart = value2Array[1].toString(); //拿到小数部分
  77. if(floatPart.length == 1) { //补0,实际上用不着
  78. return intPartFormat + "." + floatPart + '0';
  79. } else {
  80. return intPartFormat + "." + floatPart;
  81. }
  82. } else {
  83. return intPartFormat + floatPart;
  84. }
  85. }
  86. },
  87. methods: {
  88. infoPayOrderCheckoutCounter:function(){//初始化订单数据
  89. var _self = this;
  90. PayApi.PayOrderCheckoutCounter({orderId:_self.payInfo.PAY_ORDERID},function(response){
  91. if(response.code == 0){
  92. // console.log(response);
  93. var data = response.data; //金额初始化
  94. _self.payInfo.PAY_UNPAIDAMOUNT = (data.order.payableAmount - data.order.receiptAmount).toFixed(2);
  95. _self.payInfo.PAY_PAYAMOUNT = (data.order.payableAmount-data.order.receiptAmount).toFixed(2);
  96. _self.discernReceiptList = data.discernReceipt;
  97. _self.paidAmount = (data.order.payableAmount-data.order.receiptAmount).toFixed(2);
  98. _self.receiptAmount = data.order.receiptAmount;
  99. _self.payableAmount= data.order.payableAmount;
  100. _self.balanceAmount = ( _self.payableAmount - _self.receiptAmount).toFixed(2) - _self.payInfo.PAY_PAYAMOUNT;
  101. _self.payAmount = (_self.payableAmount - _self.receiptAmount).toFixed(2);//本次支付金额
  102. _self.paySuccessCounter = data.order.paySuccessCounter;
  103. _self.receiptStatus = data.order.receiptStatus;
  104. _self.invoiceStatus = data.order.invoiceStatus;
  105. _self.onlinePayFlag = data.order.onlinePayFlag;
  106. if(_self.receiptAmount>0){
  107. _self.payStatusText = '使用微信和企业网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。';
  108. _self.isReceiptStatus = false;
  109. }else{
  110. _self.payStatusText = '使用微信和企业网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。';
  111. _self.isReceiptStatus = true;
  112. }
  113. _self.isRequest = true;
  114. }else{
  115. CAIMEI.Alert(response.msg,'确定',false);
  116. }
  117. })
  118. },
  119. PayMobileSubmitFn:function(){//点击移动支付方式
  120. var _self = this;
  121. if(_self.invoiceStatus){
  122. _self.layerConfirm();
  123. }else{
  124. if(_self.payInfo.PAY_BANK_NUM == ''){
  125. CAIMEI.dialog('请选择支付方式');
  126. return;
  127. }
  128. if(_self.payAmount == ''){
  129. CAIMEI.dialog('请输入本次支付金额');
  130. return;
  131. }
  132. if(_self.payAmount == 0){
  133. CAIMEI.dialog('本次支付金额不能为0');
  134. return;
  135. }
  136. if(_self.payAmount*100 < 2){
  137. CAIMEI.dialog('本次支付金额必须大于¥0.02');
  138. return;
  139. }
  140. if(_self.payAmount > _self.paymentIimit){
  141. switch (_self.payInfo.PAY_BANK_NUM) {
  142. case 'WEIXIN':
  143. _self.paymentIimitText = '本次支付金额已超出微信支付限额,请输入小于5万的金额进行支付';
  144. break;
  145. case 'ALIPAY':
  146. _self.paymentIimitText = '本次支付金额已超出支付宝限额,请输入小于5万的金额进行支付';
  147. break;
  148. }
  149. CAIMEI.Alert(_self.paymentIimitText,'知道了');
  150. return;
  151. }
  152. if(_self.payInfo.PAY_BANK_NUM == "WEIXIN"){
  153. if(_self.pageType === '1'){
  154. _self.payInfo.PAY_DATA = {//二手
  155. type:_self.payInfo.PAY_BANK_NUM,
  156. productId:_self.productID,
  157. amount:_self.payAmount,
  158. url:_self.payInfo.PAY_MOBILE_URL
  159. };
  160. CAIMEI.Storage.setItem('PAY_DATA',JSON.stringify(_self.payInfo.PAY_DATA));
  161. window.open("/pay/caimei-paymobile.html?pageType=1");
  162. _self.isPayAlert = true;
  163. }else{
  164. _self.payInfo.PAY_DATA = {//正常订单
  165. type:_self.payInfo.PAY_BANK_NUM,
  166. orderid:_self.payInfo.PAY_ORDERID,
  167. amount:_self.payAmount,
  168. url:_self.payInfo.PAY_MOBILE_URL
  169. };
  170. CAIMEI.Storage.setItem('PAY_DATA',JSON.stringify(_self.payInfo.PAY_DATA));
  171. window.open("/pay/caimei-paymobile.html");
  172. _self.isPayAlert = true;
  173. }
  174. }else{
  175. if(_self.pageType === '1'){
  176. var params = {//二手
  177. payWay:_self.payInfo.PAY_BANK_NUM,
  178. returnUrl:'https://www.caimei365.com/',
  179. productId:_self.productID,
  180. };
  181. _self.PayOrdersecondHandPay(params,_self.payInfo.PAY_BANK_NUM);
  182. }else{
  183. var params = {//正常订单
  184. payWay:_self.payInfo.PAY_BANK_NUM,
  185. payAmount:parseInt(_self.payAmount*100),
  186. returnUrl:'https://www.caimei365.com/',
  187. orderId:_self.payInfo.PAY_ORDERID
  188. };
  189. _self.PayOrderPcMallPay(params,_self.payInfo.PAY_BANK_NUM);
  190. }
  191. }
  192. }
  193. },
  194. PaySubmitFn:function(){//点击网银支付方式
  195. var _self = this;
  196. if(_self.invoiceStatus){
  197. _self.layerConfirm();
  198. }else{
  199. if(_self.payInfo.PAY_BANK_NUM == ''){
  200. CAIMEI.dialog('请选择银行!');
  201. return;
  202. }
  203. if(_self.payAmount <= 10){
  204. CAIMEI.dialog('企业网银支付的金额必须大于¥10.00');
  205. return;
  206. }
  207. if(_self.pageType === '1'){
  208. var params = {//二手
  209. payWay:'UNIONPAY',
  210. payAmount: parseInt(_self.payAmount*100),
  211. bankCode:_self.payInfo.PAY_BANK_NUM,
  212. returnUrl:'https://www.caimei365.com/',
  213. productId:_self.productID,
  214. };
  215. _self.PayOrdersecondHandPay(params,_self.payInfo.PAY_BANK_NUM);
  216. }else{
  217. var params = {//正常订单
  218. payWay:'UNIONPAY',
  219. payAmount: parseInt(_self.payAmount*100),
  220. bankCode:_self.payInfo.PAY_BANK_NUM,
  221. returnUrl:'https://www.caimei365.com/',
  222. orderId:_self.payInfo.PAY_ORDERID
  223. };
  224. _self.PayOrderPcMallPay(params,_self.payInfo.PAY_BANK_NUM);
  225. }
  226. }
  227. },
  228. PayOrderPcMallPay:function(params,type){//网银&&支付宝生成支付地址
  229. var _self = this;
  230. _self.isSubMitStatus=true;
  231. PayApi.PayOrderPcMallPay(params,function(response){
  232. if(response.code == 0){
  233. _self.isPayAlert = true;
  234. _self.isSubMitStatus=false;
  235. _self.mbOrderId = response.data.data.mbOrderId;
  236. if(type == 'ALIPAY'){
  237. _self.payInfo.PAY_MOBILE_URL = response.data.data.payUrl;
  238. _self.payInfo.PAY_DATA = {
  239. mbOrderId:_self.mbOrderId,
  240. type:_self.payInfo.PAY_BANK_NUM,
  241. orderid:_self.payInfo.PAY_ORDERID,
  242. amount:_self.payAmount,
  243. url:_self.payInfo.PAY_MOBILE_URL
  244. };
  245. CAIMEI.Storage.setItem('PAY_DATA',JSON.stringify(_self.payInfo.PAY_DATA));
  246. window.open("/pay/caimei-paymobile.html?pageType=1");
  247. }else{
  248. window.open(response.data.data.payUrl);
  249. }
  250. }else{
  251. _self.isSubMitStatus=false;
  252. CAIMEI.Alert(response.msg,'确定',false);
  253. }
  254. })
  255. },
  256. PayOrdersecondHandPay:function(params,type){//二手支付请求
  257. var _self = this;
  258. _self.isSubMitStatus=true;
  259. PayApi.PayOrdersecondHandPay(params,function(response){
  260. if(response.code == 0){
  261. _self.isPayAlert = true;
  262. _self.isSubMitStatus=false;
  263. _self.mbOrderId = response.data.data.mbOrderId;
  264. if(type == 'ALIPAY'){
  265. _self.payInfo.PAY_MOBILE_URL = response.data.data.payUrl;
  266. if(_self.pageType === '1'){
  267. _self.payInfo.PAY_DATA = {
  268. mbOrderId:_self.mbOrderId,
  269. type:_self.payInfo.PAY_BANK_NUM,
  270. productId:_self.productID,
  271. amount:_self.payAmount,
  272. url:_self.payInfo.PAY_MOBILE_URL
  273. };
  274. CAIMEI.Storage.setItem('PAY_DATA',JSON.stringify(_self.payInfo.PAY_DATA));
  275. window.open("/pay/caimei-paymobile.html?pageType=1");
  276. }else{
  277. _self.payInfo.PAY_DATA = {
  278. mbOrderId:_self.mbOrderId,
  279. type:_self.payInfo.PAY_BANK_NUM,
  280. orderid:_self.payInfo.PAY_ORDERID,
  281. amount:_self.payAmount,
  282. url:_self.payInfo.PAY_MOBILE_URL
  283. };
  284. CAIMEI.Storage.setItem('PAY_DATA',JSON.stringify(_self.payInfo.PAY_DATA));
  285. window.open("/pay/caimei-paymobile.html");
  286. }
  287. }else{
  288. window.open(response.data.data.payUrl);
  289. }
  290. }else{
  291. CAIMEI.Alert(response.msg,'确定',false);
  292. _self.isSubMitStatus=false;
  293. }
  294. })
  295. },
  296. changePayAmount:function(event){//输入支付金额控制
  297. var _self = this;
  298. var value = event.target.value;
  299. if(value == "" || value <0 ){//判断是否等于0 或者为空
  300. _self.payAmount = '';
  301. _self.payInfo.PAY_PAYAMOUNT = _self.payInfo.PAY_UNPAIDAMOUNT;
  302. _self.balanceAmount = _self.toFixedFn(_self.payInfo.PAY_UNPAIDAMOUNT);
  303. return;
  304. }else if(Number(value) > _self.payInfo.PAY_UNPAIDAMOUNT){//判断大于应付金额
  305. _self.payAmount = _self.payInfo.PAY_UNPAIDAMOUNT;
  306. _self.payInfo.PAY_PAYAMOUNT = _self.payAmount;
  307. _self.balanceAmount = _self.toFixedFn(_self.payInfo.PAY_UNPAIDAMOUNT-_self.payInfo.PAY_PAYAMOUNT);
  308. }else{
  309. _self.payAmount = value;
  310. _self.payInfo.PAY_PAYAMOUNT = _self.payAmount;
  311. _self.balanceAmount = _self.toFixedFn(_self.payInfo.PAY_UNPAIDAMOUNT-_self.payInfo.PAY_PAYAMOUNT);
  312. }
  313. },
  314. changePayAmountBlur:function(event){//失去焦点设置金额
  315. var _self = this;
  316. _self.payAmount = _self.toFixedFn(event.target.value);
  317. _self.payInfo.PAY_PAYAMOUNT = _self.payAmount;
  318. },
  319. changeTab:function(index,item){//选择支付方式切换
  320. this.tabIndex = index;
  321. switch (this.tabIndex) {
  322. case 0:
  323. this.payInfo.PAY_BANK_NUM = 'ALIPAY';
  324. break;
  325. case 1:
  326. this.payInfo.PAY_BANK_NUM = '';
  327. break;
  328. }
  329. },
  330. checkMobilePay:function(index,item){//选择移动支付方式
  331. this.mobileTabIndex = index;
  332. this.payInfo.PAY_BANK_NUM = item.bankNum;
  333. if( this.mobileTabIndex==2){
  334. }
  335. },
  336. checkBankPay:function(index,item){//选择网银支付方式-选择银行
  337. this.bankTabIndex = index;
  338. this.payInfo.PAY_BANK_NUM = item.bankNum;
  339. },
  340. copyLinkPaySubmitFn:function(){//复制网银支付链接
  341. var _self = this;
  342. if(_self.invoiceStatus){
  343. _self.layerConfirm();
  344. }else{
  345. if(_self.payAmount == ''){
  346. CAIMEI.dialog('请输入本次支付金额');
  347. return;
  348. }
  349. if(_self.payAmount == 0){
  350. CAIMEI.dialog('本次支付金额不能为0');
  351. return;
  352. }
  353. if(_self.payAmount <= 10){
  354. CAIMEI.dialog('企业网银支付的金额必须大于¥10.00');
  355. return;
  356. }
  357. PayApi.PayOrderPayLink({unpaidAmount:_self.payAmount,orderId:_self.payInfo.PAY_ORDERID},function(response){
  358. _self.bankPayLink_url = response.data;
  359. var oInput = document.createElement("textarea");
  360. oInput.value = _self.bankPayLink_url;
  361. document.body.appendChild(oInput);
  362. oInput.select(); // 选择对象
  363. document.execCommand("Copy"); // 执行浏览器复制命令
  364. document.body.removeChild(oInput);
  365. CAIMEI.dialog('复制成功');
  366. })
  367. }
  368. },
  369. copyOrderBtnSubmitFn:function(){//复制订单标识
  370. var _self = this;
  371. var oInput = document.createElement("textarea");
  372. oInput.value = _self.orderIdentificationId;
  373. document.body.appendChild(oInput);
  374. oInput.select(); // 选择对象
  375. document.execCommand("Copy"); // 执行浏览器复制命令
  376. document.body.removeChild(oInput);
  377. CAIMEI.dialog('复制成功');
  378. },
  379. hidePayAlert:function(){//隐藏已支付弹窗
  380. var _self = this;
  381. _self.isPayAlert = false;
  382. },
  383. RefreshBody:function(){//刷新页面
  384. var _self = this;
  385. if(_self.payInfo.PAY_BANK_NUM == 'WEIXIN'){
  386. PayApi.PayOrderPayWhetherSuccess({orderId: _self.payInfo.PAY_ORDERID, paySuccessCounter:_self.paySuccessCounter},function(response){
  387. _self.isPayAlert = false;
  388. if(response.code === 0){
  389. _self.windowLocationHref('success');
  390. }else{
  391. _self.windowLocationHref('error');
  392. }
  393. });
  394. }else{
  395. PayApi.PayOrderFindOrderStatus({mbOrderId:_self.mbOrderId},function(response){
  396. _self.isPayAlert = false;
  397. var data = response.data.data;
  398. if(data.status === '1'){
  399. _self.windowLocationHref('success');
  400. }else{
  401. _self.windowLocationHref('error');
  402. }
  403. });
  404. }
  405. },
  406. windowLocationHref:function(state){
  407. var _self = this;
  408. if( _self.pageType === '1'){
  409. window.location.href = '/pay/success.html?pageType=second&type='+state+'&payAmount='+_self.payAmount;
  410. }else{
  411. window.location.href = '/pay/success.html?pageType=www&type='+state+'&payAmount='+_self.payAmount;
  412. }
  413. },
  414. payTypeText:function(state){//处理支付记录文字
  415. var stateText = '',
  416. stateTextObject={
  417. 12:'企业网银',
  418. 13:'微信支付',
  419. 14:'支付宝',
  420. 15:'微信支付',
  421. 16:'余额抵扣',
  422. };
  423. Object.keys(stateTextObject).forEach(function(key) {
  424. if(key == state){
  425. stateText = stateTextObject[key]
  426. }
  427. });
  428. return stateText;
  429. },
  430. toFixedFn:function(text){//处理小数点后两位数
  431. return Number(text).toFixed(2);
  432. },
  433. layerConfirm:function(){
  434. var _self = this;
  435. CAIMEI.Alert('本次交易暂不支持线上支付开票,请使用线下转账的方式付款','知道了',true,function () {
  436. _self.payStatusText = '使用微信和企业网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。';
  437. _self.isReceiptStatus = true;
  438. });
  439. }
  440. },
  441. mounted: function () {
  442. var _self = this;
  443. _self.pageType = CAIMEI.getUrlParam('pageType');
  444. if( _self.pageType === '1'){//二手
  445. _self.productID = CAIMEI.getUrlParam('productID');
  446. _self.payAmount = _self.toFixedFn(100);
  447. _self.isRequest = true;
  448. _self.payStatusText = '';
  449. }else{
  450. var HrefType = CAIMEI.getUrlParam('type');
  451. if(HrefType == 'payfirm'){
  452. _self.payInfo.PAY_ORDERID = CAIMEI.getUrlParam('orderID');
  453. _self.orderIdentificationId = '#'+_self.payInfo.PAY_ORDERID+'#';
  454. }else{
  455. var data =JSON.parse(localStorage.getItem("confirmOrderInfo"));
  456. _self.payInfo.PAY_ORDERID = data.data.orderID;
  457. _self.orderIdentificationId = '#'+_self.payInfo.PAY_ORDERID+'#';
  458. }
  459. _self.infoPayOrderCheckoutCounter();//正常订单初始化
  460. }
  461. }
  462. });