caimei-hlbpay.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. /**
  2. *Created by ZHJY on 2020/7/14.
  3. */
  4. var payContainer = new Vue({
  5. el:"#payContainer",
  6. mixins: [hlbPayMixin],
  7. data: {
  8. isSubMitStatus:false,
  9. payInfo:{
  10. payBankNum: '', //支付类型
  11. shopOrderId: '', //订单ID
  12. obligation: '', //待支付金额
  13. payAmount: 0,//本次支付金额
  14. payMobileUrl: '',//二维码生成链接
  15. payData:{}, //支付数据
  16. payUserType:'B2B',
  17. payType:'1',
  18. },
  19. iframe:'',
  20. orderFlag:1,// 是否是订单 0非订单 1订单
  21. couponInfo:{},
  22. bankListB2BData:[],// 企业网银银行列表
  23. bankListB2CData:[],// 个人网银银行列表
  24. methodTab:['线上支付','转账支付'],
  25. mobileData:[
  26. {imgUrl:'/img/pay/iconbank-ali@2x.png',bankName:'支付宝支付',bankNum:'ALIPAY'},
  27. {imgUrl:'/img/pay/iconbank-wx@2x.png',bankName:'微信支付',bankNum:'WEIXIN'},
  28. {imgUrl:'/img/pay/iconbank-B2Bbank@2x.png',bankName:'网银支付',bankNum:'ICBC_B2B'},
  29. {imgUrl:'/img/pay/iconbank-B2Cbank@2x.png',bankName:'个人网银',bankNum:'ICBC_B2C'}
  30. ],
  31. pageType:'',//页面跳转类型 1 二手支付
  32. obligation:'',//订单待付金额
  33. payableAmount:'',//应付金额
  34. receiptAmount:'',//已支付金额
  35. balanceAmount:'',//应付剩余金额
  36. payAmount:'',//本次支付金额
  37. paymentIimit:5000,
  38. paymentIimitText:'',
  39. discernReceiptList:[],//支付记录列表
  40. tabIndex:0,//支付方式 0 移动支付 1网银支付 2线下转账
  41. mbOrderId:'',//支付订单ID
  42. bigPayInfo:{},// 银联转账信息
  43. BankUserType:1,
  44. mobileTabIndex:null,
  45. bankTabIndex:0,
  46. isRequest:false,
  47. isPayAlert:false,
  48. isPaySwitch:false,
  49. paySuccessCounter:'',
  50. bankPayLink_url:'',
  51. invoiceStatus:false,
  52. isReceiptStatus:false,
  53. onlinePay:'',
  54. payStatusText:'使用任何一种线上支付方式支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。',
  55. productID:'',//发布商品的ID
  56. is_Wechat_bowcr:false,
  57. comboInfo: null, //选中的svip套餐信息
  58. vipRecordId: undefined,
  59. couponRecordId:undefined,
  60. couponId:undefined,
  61. userId:0
  62. },
  63. filters: {
  64. NumFormat:function(value) {
  65. if(!value) return '0.00';
  66. var intPart = Number(value) - Number(value)%1; //获取整数部分(这里是windy93的方法)
  67. var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断
  68. var floatPart = ".00"; //预定义小数部分
  69. var value2Array = value.toString().split(".");
  70. if(value2Array.length == 2) { //=2表示数据有小数位
  71. floatPart = value2Array[1].toString(); //拿到小数部分
  72. if(floatPart.length == 1) { //补0,实际上用不着
  73. return intPartFormat + "." + floatPart + '0';
  74. } else {
  75. return intPartFormat + "." + floatPart;
  76. }
  77. } else {
  78. return intPartFormat + floatPart;
  79. }
  80. }
  81. },
  82. methods: {
  83. initCouponDetail:function (couponId) {//初始化优惠券数据
  84. var _self = this;
  85. ProductApi.QueryCouponDetail({ couponId: couponId },function (response) {
  86. if(response.code == 0){
  87. _self.couponInfo = response.data
  88. if(globalUserData){
  89. _self.userId = globalUserData.userId;
  90. }
  91. }else{
  92. CAIMEI.Alert(response.msg, '确定', false);
  93. }
  94. })
  95. },
  96. infoPayOrderCheckoutCounter:function(){//初始化子订单数据
  97. var _self = this;
  98. PayApi.PayOrderCheckoutShoporders({shopOrderId:_self.payInfo.shopOrderId},function(response){
  99. if(response.code == 0){
  100. // console.log(response);
  101. var data = response.data; //金额初始化
  102. _self.payInfo.payAmount = (data.shopOrder.realPay - data.shopOrder.receiptAmount).toFixed(2);
  103. _self.discernReceiptList = data.discernReceipt;// 支付记录
  104. _self.payInfo.obligation = data.shopOrder.obligation;
  105. _self.obligation = data.shopOrder.obligation;// 待付金额
  106. _self.payableAmount = data.shopOrder.realPay;
  107. _self.receiptAmount = data.shopOrder.receiptAmount;
  108. _self.balanceAmount = ( _self.obligation - _self.receiptAmount).toFixed(2) - _self.payInfo.payAmount;
  109. _self.payAmount = (_self.payableAmount - _self.receiptAmount).toFixed(2);
  110. _self.paySuccessCounter = data.shopOrder.paySuccessCounter;
  111. _self.onlinePay = data.onlinePay;
  112. _self.isRequest = true;
  113. _self.PayOrderOnLineSwitch();
  114. }else{
  115. CAIMEI.Alert(response.msg,'确定',false);
  116. }
  117. })
  118. },
  119. getBankList:function () {// 获取网银支付银行列表
  120. var _self = this;
  121. PayApi.PayGetBankCode({},function(response){
  122. if(response.code == 0){
  123. _self.bankListB2BData = response.data.B2B;
  124. _self.bankListB2CData = response.data.B2C;
  125. }else{
  126. console.log('获取网银支付银行列表异常')
  127. }
  128. })
  129. },
  130. PayOrderOnLineSwitch:function(){//获取是否可以先上支付
  131. var _self = this;
  132. PayApi.PayOrderOnLineSwitch({},function(response){
  133. if(response.code == 0){
  134. if(response.data === 0){
  135. _self.isPaySwitch = true;
  136. if (_self.pageType === '2') {
  137. CAIMEI.dialog('支付系统遇到点小问题,请稍后重试', false);
  138. return;
  139. }
  140. CAIMEI.Alert('线上支付功能正在维护中,请前往订单详情页面查看线下转账方式后进行付款','确定',true,function(){
  141. window.location.href='/user/order/detail.html?orderId='+_self.payInfo.shopOrderId;
  142. });
  143. }
  144. }else{
  145. CAIMEI.Alert(response.msg,'确定',false);
  146. }
  147. })
  148. },
  149. PayMobileSubmitFn:function(){//点击移动支付方式
  150. var _self = this;
  151. if(_self.isPaySwitch && _self.pageType === '2'){
  152. CAIMEI.dialog('支付系统遇到点小问题,请稍后重试', false);
  153. return;
  154. }
  155. if(_self.pageType === '3'){// 移动支付优惠券
  156. _self.PayCouponMiniPayFn();
  157. }else{
  158. if(_self.payInfo.payBankNum == ''){
  159. CAIMEI.dialog('请选择支付方式');
  160. return;
  161. }
  162. if(_self.payAmount == ''){
  163. CAIMEI.dialog('请输入本次支付金额');
  164. return;
  165. }
  166. if(_self.payAmount == 0){
  167. CAIMEI.dialog('本次支付金额不能为0');
  168. return;
  169. }
  170. if(_self.payAmount*100 < 2){
  171. CAIMEI.dialog('本次支付金额必须大于¥0.02');
  172. return;
  173. }
  174. if(_self.payAmount > _self.paymentIimit){
  175. switch (_self.payInfo.payBankNum) {
  176. case 'WEIXIN':
  177. _self.paymentIimitText = '本次支付金额已超出微信支付限额,请输入小于5千的金额进行支付';
  178. break;
  179. case 'ALIPAY':
  180. _self.paymentIimitText = '本次支付金额已超出支付宝限额,请输入小于5千的金额进行支付';
  181. break;
  182. }
  183. CAIMEI.Alert(_self.paymentIimitText,'知道了');
  184. return;
  185. }
  186. if(_self.payInfo.payBankNum == "WEIXIN"){// 微信
  187. if(_self.pageType === '1'){ // 二手
  188. _self.hlb_PaySecondMiniWxPay();
  189. }else if(_self.pageType === '2'){ // 会员
  190. _self.hlb_PayVipMiniWxPay();
  191. }else{ // 正常订单
  192. _self.hlb_PayOrderMiniWxPay();
  193. }
  194. }else if(_self.payInfo.payBankNum == "ALIPAY"){// 支付宝
  195. if(_self.pageType === '1'){// 二手
  196. _self.hlb_PayOrdersecondScanAliPay();
  197. }else if(_self.pageType === '2'){ // 会员
  198. _self.hlb_PayVipScanAliPay();
  199. }else{// 正常订单
  200. _self.hlb_PayOrderPcScanAliPay();
  201. }
  202. }
  203. }
  204. },
  205. PaySubmitFn:function(){//点击网银支付方式
  206. var _self = this;
  207. if(_self.isPaySwitch && _self.pageType === '2'){
  208. CAIMEI.dialog('支付系统遇到点小问题,请稍后重试', false);
  209. return;
  210. }
  211. if(_self.pageType === '3'){// 网银支付优惠券
  212. _self.hlb_PayCouponUnionPayFn();
  213. }else{
  214. if(_self.payInfo.payBankNum == ''){
  215. CAIMEI.dialog('请选择银行!');
  216. return;
  217. }
  218. if(_self.payAmount <= 10){
  219. CAIMEI.dialog('网银支付的金额必须大于¥10.00');
  220. return;
  221. }
  222. if(_self.pageType === '1'){// 二手
  223. _self.hlb_PayOrdersecondUnion();
  224. } else if (_self.pageType === '2') { // 会员
  225. _self.hlb_PayVipPcMallPay();
  226. } else {// 正常订单
  227. _self.hlb_PayOrderPcMallPay();
  228. }
  229. }
  230. },
  231. PayCouponMiniPayFn:function () { // 移动支付购买优惠券
  232. var _self = this;
  233. if(_self.payInfo.payBankNum == "WEIXIN"){
  234. _self.hlb_PayCouponMiniWxPay();
  235. }else if(_self.payInfo.payBankNum == "ALIPAY"){//支付宝支付
  236. _self.hlb_PayCouponAliPay();
  237. }
  238. },
  239. changePayAmount:function(event){//输入支付金额控制
  240. var _self = this;
  241. var value = event.target.value;
  242. if(value == "" || value <0 ){//判断是否等于0 或者为空
  243. _self.payAmount = '';
  244. _self.payInfo.payAmount = _self.payInfo.obligation;
  245. _self.balanceAmount = _self.toFixedFn(_self.payInfo.obligation);
  246. return;
  247. }else if(Number(value) > _self.payInfo.obligation){//判断大于应付金额
  248. _self.payAmount = _self.payInfo.obligation;
  249. _self.payInfo.payAmount = _self.payAmount;
  250. _self.balanceAmount = _self.toFixedFn(_self.payInfo.obligation-_self.payInfo.payAmount);
  251. }else{
  252. _self.payAmount = value;
  253. _self.payInfo.payAmount = _self.payAmount;
  254. _self.balanceAmount = _self.toFixedFn(_self.payInfo.obligation-_self.payInfo.payAmount);
  255. }
  256. },
  257. changePayAmountBlur:function(event){//失去焦点设置金额
  258. var _self = this;
  259. _self.payAmount = _self.toFixedFn(event.target.value);
  260. _self.payInfo.payAmount = _self.payAmount;
  261. },
  262. changeTab:function(index,item){//选择支付方式切换
  263. this.tabIndex = index;
  264. switch (this.tabIndex) {
  265. case 0:
  266. this.payInfo.payBankNum = 'ALIPAY';
  267. break;
  268. case 1:
  269. this.payInfo.payBankNum = '';
  270. break;
  271. }
  272. },
  273. checkMobilePay:function(index,bankNum){//选择移动支付方式
  274. var _self = this;
  275. _self.mobileTabIndex = index;
  276. _self.payInfo.payBankNum = bankNum;
  277. switch (index) {
  278. case 2:// 企业网银
  279. _self.bankTabIndex = 0
  280. _self.payInfo.payType = '1';
  281. _self.payInfo.payUserType = 'B2B';
  282. _self.payInfo.payBankNum = _self.bankListB2BData[0].b2B;
  283. break;
  284. case 3:// 个人网银
  285. _self.bankTabIndex = 0
  286. _self.payInfo.payType = '2';
  287. _self.payInfo.payUserType = 'B2C';
  288. _self.payInfo.payBankNum = _self.bankListB2CData[0].b2C;
  289. break;
  290. }
  291. },
  292. checkBankPay:function(index,item){//选择网银支付方式-选择银行
  293. var _self = this;
  294. _self.bankTabIndex = index;
  295. switch (_self.mobileTabIndex) {
  296. case 2:// 企业网银
  297. _self.payInfo.payBankNum = item.b2B;
  298. break;
  299. case 3:// 个人网银
  300. _self.payInfo.payBankNum = item.b2C;
  301. break;
  302. }
  303. },
  304. copyLinkPaySubmitFn:function(){//复制网银支付链接
  305. var _self = this;
  306. if(_self.isPaySwitch && _self.pageType === '2'){
  307. CAIMEI.dialog('支付系统遇到点小问题,请稍后重试', false);
  308. return;
  309. }
  310. if(_self.payAmount == ''){
  311. CAIMEI.dialog('请输入本次支付金额');
  312. return;
  313. }
  314. if(_self.payAmount == 0){
  315. CAIMEI.dialog('本次支付金额不能为0');
  316. return;
  317. }
  318. if(_self.payAmount <= 10){
  319. CAIMEI.dialog('网银支付的金额必须大于¥12.00');
  320. return;
  321. }
  322. var params = {};
  323. if(_self.pageType == 2){
  324. params = {
  325. unpaidAmount:_self.payAmount,
  326. vipRecordId: _self.vipRecordId,
  327. payType:_self.payInfo.payType,
  328. }
  329. }else{
  330. params = {
  331. unpaidAmount:_self.payAmount,
  332. shopOrderId:_self.payInfo.shopOrderId,
  333. payType:_self.payInfo.payType
  334. }
  335. }
  336. _self.hlb_CopyLinkPaySubmitFn(params)
  337. },
  338. hidePayAlert:function(){//隐藏已支付弹窗
  339. var _self = this;
  340. _self.isPayAlert = false;
  341. },
  342. RefreshBody:function(){//刷新页面
  343. var _self = this;
  344. if(_self.payInfo.payBankNum == 'WEIXIN'){
  345. if( _self.pageType == '2' ){ // 验证支付(支付会员)
  346. PayApi.PayOrderPayVipCheck({recordId : _self.vipRecordId},function(response){
  347. // console.log(response);
  348. if(response.code === 0){
  349. _self.windowLocationHref('success');
  350. }else{
  351. _self.windowLocationHref('error');
  352. }
  353. });
  354. }else if(_self.pageType == '3'){ // 验证支付(优惠券)
  355. PayApi.PayOrderPayCouponCheck({ couponRecordId: _self.couponRecordId },function(response){
  356. // console.log(response);
  357. if(response.code === 0){
  358. _self.windowLocationHref('success');
  359. }else{
  360. _self.windowLocationHref('error');
  361. }
  362. });
  363. }else{
  364. PayApi.PayOrderPayWhetherSuccess({shopOrderId: _self.payInfo.shopOrderId, paySuccessCounter:_self.paySuccessCounter},function(response){
  365. _self.isPayAlert = false;
  366. if(response.code === 0){
  367. _self.windowLocationHref('success');
  368. }else{
  369. _self.windowLocationHref('error');
  370. }
  371. });
  372. }
  373. }else if(_self.payInfo.payBankNum == 'ALIPAY'){// 校验支付宝支付成功
  374. PayApi.PayOrderFindOrderStatus({mbOrderId:_self.mbOrderId,orderFlag:_self.orderFlag,shopOrderId:_self.payInfo.shopOrderId},function(response){
  375. if(response.code === 0){
  376. _self.isPayAlert = false;
  377. var data = response.data;
  378. if(data.rt7_orderStatus === 'SUCCESS'){
  379. _self.windowLocationHref('success');
  380. }else{
  381. _self.windowLocationHref('error');
  382. }
  383. }else{
  384. CAIMEI.Alert(response.msg,'确定',false);
  385. }
  386. });
  387. }else{// 校验网银支付成功
  388. PayApi.PayOrderUnionStatus({mbOrderId:_self.mbOrderId,orderFlag:_self.orderFlag,shopOrderId:_self.payInfo.shopOrderId},function(response){
  389. if(response.code === 0){
  390. _self.isPayAlert = false;
  391. var data = response.data;
  392. if(data.rt10_orderStatus === 'SUCCESS'){
  393. _self.windowLocationHref('success');
  394. }else{
  395. _self.windowLocationHref('error');
  396. }
  397. }else{
  398. CAIMEI.Alert(response.msg,'确定',false);
  399. }
  400. });
  401. }
  402. },
  403. windowLocationHref:function(state){
  404. var _self = this;
  405. if( _self.pageType === '1'){
  406. window.location.href = '/pay/success.html?pageType=second&type='+state+'&payAmount='+_self.payAmount;
  407. }else if(_self.pageType === '2'){
  408. window.location.href = '/pay/success.html?pageType=vip&type='+state+'&payAmount='+_self.payAmount;
  409. }else if(_self.pageType === '3') {
  410. window.location.href = '/pay/success.html?pageType=coupon&type=' + state + '&payAmount=' + _self.couponInfo.moneyCouponPrice;
  411. }else{
  412. window.location.href = '/pay/success.html?pageType=www&type='+state+'&payAmount='+_self.payAmount;
  413. }
  414. },
  415. payTypeText:function(state){//处理支付记录文字
  416. var stateText = '',
  417. stateTextObject={
  418. 12:'网银',
  419. 13:'微信支付',
  420. 14:'支付宝',
  421. 15:'微信支付',
  422. 16:'余额抵扣',
  423. 20:'大额银联转账',
  424. };
  425. Object.keys(stateTextObject).forEach(function(key) {
  426. if(key == state){
  427. stateText = stateTextObject[key]
  428. }
  429. });
  430. return stateText;
  431. },
  432. toFixedFn:function(text){//处理小数点后两位数
  433. return Number(text).toFixed(2);
  434. },
  435. },
  436. mounted: function () {
  437. var _self = this;
  438. // 判断当前支付是订单支付
  439. this.pageType = CAIMEI.getUrlParam('pageType');
  440. if (this.pageType === '1') {//二手
  441. this.productID = CAIMEI.getUrlParam('productID');
  442. this.payAmount = _self.toFixedFn(100);
  443. this.isRequest = true;
  444. this.payStatusText = '';
  445. this.orderFlag = 0;
  446. } else if (this.pageType === '2') { // 支付会员
  447. this.orderFlag = 0;
  448. this.vipRecordId = parseInt(CAIMEI.getUrlParam('vipRecordId'));
  449. this.PayOrderOnLineSwitch();
  450. // 从本地获取选中的svip套餐信息后删除本地信息
  451. this.comboInfo = JSON.parse(CAIMEI.Storage.getItem('comboInfo'));
  452. // CAIMEI.Storage.removeItem('comboInfo');
  453. // 设置支付金额
  454. this.payAmount = this.toFixedFn(this.comboInfo.price);
  455. // 获取银行列表
  456. this.getBankList();
  457. } else if(this.pageType === '3') {// 支付优惠券
  458. this.orderFlag = 0;
  459. this.couponId = parseInt(CAIMEI.getUrlParam('couponId'));
  460. this.couponRecordId = parseInt(CAIMEI.getUrlParam('couponRecordId'));
  461. this.initCouponDetail(this.couponId);
  462. this.PayOrderOnLineSwitch();
  463. this.getBankList();
  464. }else{
  465. this.orderFlag = 1;
  466. this.payInfo.shopOrderId = CAIMEI.getUrlParam('shopOrderId');
  467. // 获取银行列表
  468. this.getBankList();
  469. //正常订单初始化
  470. this.infoPayOrderCheckoutCounter();
  471. }
  472. var viewer = window.navigator.userAgent.toLowerCase();
  473. if(viewer.match(/MicroMessenger/i) == 'micromessenger'){
  474. this.is_Wechat_bowcr = true;
  475. this.payInfo.payBankNum = 'WEIXIN';
  476. this.mobileTabIndex = 1;
  477. }else{
  478. this.is_Wechat_bowcr = false;
  479. this.payInfo.payBankNum = 'ALIPAY';
  480. this.mobileTabIndex = 0;
  481. }
  482. }
  483. });