caimei-pay.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. /**
  2. *Created by ZHJY on 2020/7/14.
  3. */
  4. var payContainer = new Vue({
  5. el:"#payContainer",
  6. mixins: [hlbPayMixin,mhPayMixin],
  7. data: {
  8. paymentChannel:'HLB',
  9. isSubMitStatus:false,
  10. payInfo:{
  11. payBankNum:'',//银行网管信息
  12. payCode:'',//链接状态
  13. shopOrderId:'',//主订单ID
  14. payUnpaidAmount:0,//本次支付金额
  15. payTime:'',//链接失效时间
  16. payLinkLogo:'',
  17. payLinkType:'',
  18. payUserType:'',//网银支付类型
  19. payLinkTypeText:'',//文案
  20. },
  21. iframe:'',
  22. orderFlag:1,// 是否是订单 0非订单 1订单
  23. bankListB2BData:[],// 企业网银银行列表
  24. bankListB2CData:[],// 个人网银银行列表
  25. userName :'',
  26. goodList:'',
  27. totalAmount: '', //合计
  28. payableAmount:'',//剩余支付金额
  29. payAmount:'', //本次支付金额
  30. obligation:'',// 本次待付金额
  31. eachDiscount:'',// 子订单优惠金额
  32. receiptAmount:'',//已支付金额
  33. discernReceipt:'',//支付记录
  34. discernReceiptList:[],//支付记录列表
  35. orderProductList:[],//商品列表
  36. bankTabIndex:0,
  37. downHour:'00',//倒计时
  38. downMinute:'00',//倒计分
  39. downSecond:'00',//倒计秒
  40. isSiled:false,
  41. mbOrderId:'',
  42. isRequest:false,
  43. isPayAlert:false,
  44. isErrorShow:false,
  45. iconErrorClass:'',
  46. iconErrorText:'',
  47. iconErrorMsgnone:'',
  48. organizeId:'', //组织机构id
  49. orderNo:'', //订单号
  50. orderTotalFee:'',
  51. unpaidAmount:'', //真正的付款金额
  52. comboInfo: [], // 会员套餐
  53. type: 1,
  54. vipMonth: 0,
  55. vipRecordId: undefined
  56. },
  57. filters: {
  58. NumFormat :function(value) {
  59. if(!value) return '0.00';
  60. var intPart = Number(value) - Number(value)%1; //获取整数部分(这里是windy93的方法)
  61. var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断
  62. var floatPart = ".00"; //预定义小数部分
  63. var value2Array = value.toString().split(".");
  64. if(value2Array.length == 2) { //=2表示数据有小数位
  65. floatPart = value2Array[1].toString(); //拿到小数部分
  66. if(floatPart.length == 1) { //补0,实际上用不着
  67. return intPartFormat + "." + floatPart + '0';
  68. } else {
  69. return intPartFormat + "." + floatPart;
  70. }
  71. } else {
  72. return intPartFormat + floatPart;
  73. }
  74. }
  75. },
  76. methods: {
  77. LinkInfoOrderBank:function(linkLogo){//初始化支付订单加密数据
  78. var _self = this;
  79. PayApi.PayOrderLinkData({linkLogo:linkLogo},function(response){
  80. if(response.code === 0){
  81. var data = response.data;
  82. console.log(data);
  83. _self.payInfo.shopOrderId = data.orderPayLink.shopOrderId;
  84. _self.orderFlag = data.orderFlag;
  85. _self.payInfo.payUnpaidAmount = _self.payAmount = data.orderPayLink.unpaidAmount;
  86. _self.payInfo.payTime = decodeURI(data.time);
  87. _self.payInfo.payLinkType = data.orderPayLink.payType;
  88. _self.payInfo.payLinkTypeText = _self.payInfo.payLinkType === 1 ? '企业网银' : '个人网银';
  89. if(_self.paymentChannel === 'HLB'){
  90. _self.payInfo.payUserType = _self.payInfo.payLinkType === 1 ? 'B2B' : 'B2C';
  91. }else{
  92. _self.payInfo.payUserType = _self.payInfo.payLinkType === 1 ? 'ENTERPRISE' : 'USER';
  93. }
  94. _self.getBankList();
  95. _self.unpaidAmount = data.orderPayLink.unpaidAmount;
  96. _self.type = data.type;
  97. if(data.code === 0){
  98. setTimeout(function () { //支付倒计时
  99. _self.countTime(_self.payInfo.payTime)
  100. }, 1000);
  101. if(_self.type === 1){
  102. _self.infoPayOrderCheckoutCounter();
  103. }else{
  104. console.log('本次支付链接是支付超级会员');
  105. _self.userName = data.userName;
  106. _self.vipMonth = data.orderPayLink.vipMonth;
  107. _self.vipRecordId = data.orderPayLink.vipRecordId;
  108. _self.isRequest = true;
  109. }
  110. }else{
  111. _self.isErrorShow = true;
  112. _self.isRequest = true;
  113. switch (_self.payInfo.payCode) {
  114. case -2:
  115. _self.iconErrorClass = 'offline';
  116. _self.iconErrorText = '订单已通过线下转账方式付款';
  117. _self.iconErrorMsgnone = '不能再使用网银支付';
  118. break;
  119. case -3:
  120. _self.iconErrorClass = 'fail';
  121. _self.iconErrorText = '链接超过24小时未完成支付,已失效';
  122. _self.iconErrorMsgnone = '请重新生成支付链接,继续支付';
  123. break;
  124. case 5:
  125. _self.iconErrorClass = 'paid';
  126. _self.iconErrorText = '款项已支付完成,无需重复支付';
  127. _self.iconErrorMsgnone = '';
  128. break;
  129. }
  130. }
  131. }else if(response.code === -1){
  132. _self.isErrorShow = true;
  133. _self.isRequest = true;
  134. _self.iconErrorClass = 'again';
  135. _self.iconErrorText = '链接已更新,请联系业务人员获取最新链接再进行支付';
  136. _self.iconErrorMsgnone = '';
  137. }else{
  138. CAIMEI.Alert(response.msg,'确定',false);
  139. }
  140. });
  141. },
  142. infoPayOrderCheckoutCounter:function(){//初始化订单数据
  143. var _self = this;
  144. PayApi.PayOrderCheckoutShoporders({shopOrderId:_self.payInfo.shopOrderId},function(response){
  145. console.log(response);
  146. if(response.code === 0){
  147. var data = response.data;
  148. _self.discernReceiptList = data.discernReceipt;// 支付记录
  149. _self.orderProductList = data.orderProductList;// 自订单商品信息
  150. _self.obligation = data.shopOrder.obligation; // 待付金额
  151. _self.eachDiscount = data.shopOrder.eachDiscount; //优惠金额
  152. _self.payableAmount = (data.shopOrder.obligation*100 - _self.payInfo.payUnpaidAmount*100)/100; //剩余支付金额 = 子订单待付金额 - 本次支付金额
  153. _self.userName = data.userName;
  154. _self.totalAmount = data.shopOrder.totalAmount; // 子订单金额合计
  155. _self.receiptAmount= data.shopOrder.receiptAmount; // 已支付金额
  156. _self.isRequest = true;
  157. }else{
  158. CAIMEI.Alert(response.msg,'确定',false);
  159. }
  160. })
  161. },
  162. getBankList:function () {// 获取网银支付银行列表
  163. var _self = this;
  164. PayApi.PayGetBankCode({},function(response){
  165. if(response.code === 0){
  166. _self.bankListB2BData = response.data.B2B;
  167. _self.bankListB2CData = response.data.B2C;
  168. if( _self.payInfo.payLinkType === 1){
  169. _self.payInfo.payBankNum = _self.bankListB2BData[0].b2B;
  170. }else{
  171. _self.payInfo.payBankNum = _self.bankListB2CData[0].b2C;
  172. }
  173. }else{
  174. console.log('获取网银支付银行列表异常')
  175. }
  176. })
  177. },
  178. PaySubmitFn:function(){//立即支付
  179. var _self = this;
  180. if(_self.payInfo.payBankNum === ''){
  181. CAIMEI.dialog('请选择银行!');
  182. return;
  183. }
  184. if (_self.type === 2){
  185. // 支付超级会员
  186. console.log('支付超级会员');
  187. if(this.paymentChannel === 'HLB'){
  188. _self.hlb_PayVipPcMallPay();
  189. }else{
  190. _self.mh_PayVipPcMallPay();
  191. }
  192. }else {
  193. // 普通订单
  194. console.log('支付普通订单');
  195. if(this.paymentChannel === 'HLB'){
  196. _self.hlb_PayOrderPcMallPay();
  197. }else{
  198. _self.mh_PayOrderPcMallPay();
  199. }
  200. }
  201. },
  202. RefreshBody:function(){//刷新弹窗
  203. var _self = this;
  204. PayApi.PayOrderUnionStatus({mbOrderId:_self.mbOrderId,orderFlag:_self.orderFlag,shopOrderId:_self.payInfo.shopOrderId},function(response){
  205. if(response.code === 0){
  206. _self.isPayAlert = false;
  207. var data = response.data;
  208. var pageType = _self.type === 1 ? 'www' : 'vip&payFlag=1'; // 1 普通订单 2 vip订单
  209. var type = data.rt10_orderStatus === 'SUCCESS' ? 'success' : 'error'; // 成功 or 失败
  210. window.location.href = '/pay/success.html?pageType='+ pageType +'&type='+ type +'&payAmount=' + _self.payInfo.payUnpaidAmount;
  211. }else{
  212. CAIMEI.Alert(response.msg,'确定',false);
  213. }
  214. });
  215. },
  216. checkBankPay:function(index,item){// 选择银行
  217. this.bankTabIndex = index;
  218. if( this.payInfo.payLinkType === 1){
  219. this.payInfo.payBankNum = item.b2B;
  220. }else{
  221. this.payInfo.payBankNum = item.b2C;
  222. }
  223. },
  224. slideToggleContent:function(){
  225. this.isSiled = !this.isSiled;
  226. },
  227. countTime:function(value){//支付链接倒计时
  228. var _self = this;
  229. //获取当前时间
  230. var date = new Date();
  231. var now = date.getTime();
  232. //设置截止时间
  233. var endDate = new Date(value);
  234. var end = endDate.getTime();
  235. //时间差
  236. var differTime = end - now;
  237. //定义变量,h,m,s保存倒计时的时间
  238. var h, m, s;
  239. if (differTime >= 0) {
  240. h = Math.floor(differTime / 1000 / 60 / 60);
  241. m = Math.floor(differTime / 1000 / 60 % 60);
  242. s = Math.floor(differTime / 1000 % 60);
  243. _self.downHour = h < 10 ? ("0" + h) : h;
  244. _self.downMinute = m < 10 ? ("0" + m) : m;
  245. _self.downSecond = s < 10 ? ("0" + s) : s;
  246. //递归调用函数所以是延时器不是定时器
  247. setTimeout(function () {
  248. _self.countTime(value)
  249. }, 1000);
  250. } else {
  251. _self.downHour = '00';
  252. _self.downMinute = '00';
  253. _self.downSecond = '00';
  254. }
  255. },
  256. freightText:function (type) {//处理邮费显示
  257. var text ="";
  258. if(type > 0){
  259. text = '¥'+type.toFixed(2);
  260. }else if(type === -1){
  261. text = '到付';
  262. }else{
  263. text = '包邮';
  264. }
  265. return text
  266. },
  267. payTypeText(record) {
  268. //处理支付记录文字
  269. const map = {
  270. 12: '企业网银',
  271. 13: '微信支付',
  272. 14: '支付宝',
  273. 15: '微信支付',
  274. 16: '余额抵扣',
  275. }
  276. if(record.payType === 28 || record.payType === 29 ){
  277. return record.quickPayStr
  278. }else{
  279. return map[record.payType]
  280. }
  281. },
  282. toFixedFn:function(text){
  283. return Number(text).toFixed(2);
  284. },
  285. },
  286. mounted: function () {
  287. var _self = this;
  288. _self.payInfo.payLinkLogo= CAIMEI.getUrlParam('linkLogo');
  289. _self.LinkInfoOrderBank(_self.payInfo.payLinkLogo);
  290. }
  291. });