pay.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511
  1. var __request = require('../../utils/request.js')
  2. var _handle = require('../../utils/handle.js')
  3. var validator = require('../../utils/validator.js')
  4. Page({
  5. data: {
  6. orderId: 0,
  7. payData: {},
  8. address: null,
  9. pick_address: null,
  10. selectaddress:false,
  11. selectpickaddress:false,
  12. balanceInfo: {},
  13. centInfo:{},
  14. userInfo: {},
  15. radish: 0,
  16. pwd: '',
  17. pwdDialog: false,
  18. useRadishSelect: false,
  19. useRadishSelectVal: 'select',
  20. showModal: false,
  21. luoboCount: '',
  22. countMoney: '',
  23. curPayway: 'weixinpay',
  24. payway: {
  25. weixin: 'weixinpay',
  26. balance: 'balance',
  27. cent: 'cent'
  28. },
  29. total:0,
  30. yunfei:0,
  31. _yunfei:0,
  32. payFlag:false,
  33. useBalance:false,
  34. afterdec:0,//使用提货券扣除后的总额
  35. remark:'',
  36. receivetype:0,//提货方式
  37. pickdepartsList:[],
  38. repickdepartsList:[],
  39. pickindex:0,
  40. pickid:0,
  41. },
  42. onLoad: function (options) {
  43. this.data.orderId = options.orderId;
  44. this.getOrderInfo()
  45. // this.getBalanceInfo()
  46. wx.setStorageSync('use_address', false);
  47. wx.setStorageSync('use_pick_address', false);
  48. wx.setStorageSync('receivetype', 0);
  49. this.getpickdeparts();
  50. },
  51. onShow: function () {
  52. this.getUserInfo()
  53. var receivetype = wx.getStorageSync('receivetype');
  54. if(receivetype == 0){
  55. var address = wx.getStorageSync('use_address');
  56. if(address){
  57. this.setData({
  58. address: address,
  59. selectaddress:true,
  60. receivetype : receivetype,
  61. yunfei : this.data._yunfei
  62. });
  63. }
  64. }else{
  65. var address = wx.getStorageSync('use_pick_address');
  66. if(address){
  67. this.setData({
  68. pick_address: address,
  69. selectpickaddress:true,
  70. receivetype : receivetype,
  71. yunfei : 0
  72. });
  73. }
  74. }
  75. this.setData({
  76. payFlag: false
  77. })
  78. },
  79. inputPwd: function (e) {
  80. this.setData({
  81. pwd: e.detail.value
  82. })
  83. },
  84. checkboxChange: function (e) {
  85. if (e.detail.value[0]) {
  86. this.setData({
  87. useRadishSelect: true,
  88. useRadishSelectVal: 'select'
  89. })
  90. } else {
  91. this.setData({
  92. useRadishSelect: false
  93. })
  94. }
  95. },
  96. getOrderInfo: function () {
  97. var that = this
  98. var url = "v1/order/" + that.data.orderId;
  99. var params = {}
  100. var success = function (val) {
  101. if (val.data && val.data.product && !val.data.product.robo_balance_price) {
  102. that.setData({
  103. curPayway: 'weixinpay'
  104. })
  105. }
  106. var total = 0;
  107. for(var i in val.data.product_list){
  108. total = total + (val.data.product_list[i].price * val.data.product_list[i].count)
  109. }
  110. that.setData({
  111. payData: val.data,
  112. project: val.data.product_list,
  113. total:total,
  114. yunfei:that.data.receivetype == 0 ? total<9900?val.data.freight:0 : 0,
  115. _yunfei:total<9900?val.data.freight:0,
  116. });
  117. if(that.data.payData.order_type == 3){
  118. that.getCentInfo();
  119. }else{
  120. that.getBalanceInfo();
  121. }
  122. }
  123. __request.$get(url, params, success)
  124. },
  125. getDefaultAddress: function () {
  126. var that = this
  127. var url = "v1/user/address/default";
  128. var params = {}
  129. var success = function (val) {
  130. if (val.data !== null) {
  131. that.setData({
  132. address: val.data
  133. });
  134. }
  135. }
  136. __request.$get(url, params, success)
  137. },
  138. getBalanceInfo: function () {
  139. var that = this
  140. var url = "v1/user/balance/info";
  141. var params = {}
  142. var success = function (val) {
  143. // console.log('showusebalance:',(val.data.total > 0 && that.data.payData.order_type == 0))
  144. that.setData({
  145. balanceInfo: val.data,
  146. cache: false,
  147. // curPayway:val.data.total >= (that.data.total + that.data.yunfei)?'balance':'weixinpay'
  148. curPayway:'weixinpay',
  149. useBalance:(val.data.total > 0 && that.data.payData.order_type == 0 && that.data.payData.pv >= that.data.payData.total_price)? true:false,
  150. afterdec:that.data.receivetype == 0 ? parseInt(val.data.total) >= parseInt(that.data.total) + parseInt(that.data.yunfei)?'0':(that.data.total + that.data.yunfei)-val.data.total : 0
  151. });
  152. }
  153. __request.$get(url, params, success)
  154. },
  155. getCentInfo: function () {
  156. var that = this
  157. var url = "v1/user/cent/info";
  158. var params = {}
  159. var success = function (val) {
  160. // console.log('showusebalance:',(val.data.total > 0 && that.data.payData.order_type == 0))
  161. that.setData({
  162. centInfo: val.data,
  163. cache: false,
  164. curPayway:'cent',
  165. useBalance:false,
  166. afterdec:that.data.receivetype == 0 ? parseInt(val.data.total) >= parseInt(that.data.total) + parseInt(that.data.yunfei)?'0':(that.data.total + that.data.yunfei)-val.data.total : 0
  167. });
  168. }
  169. __request.$get(url, params, success)
  170. },
  171. switchChange:function(e){
  172. var that = this;
  173. that.setData({
  174. useBalance:e.detail.value
  175. })
  176. },
  177. getUserInfo: function () {
  178. var that = this
  179. var url = "v1/user/info";
  180. var params = {
  181. cache: false
  182. }
  183. var success = function (val) {
  184. that.setData({
  185. userInfo: val.data
  186. });
  187. }
  188. __request.$get(url, params, success)
  189. },
  190. cancelDialog: function () {
  191. this.setData({
  192. pwdDialog: false
  193. })
  194. },
  195. toPay: function (e) {
  196. if(this.data.payFlag){
  197. wx.showToast({
  198. title: '支付中,请稍后...',
  199. icon: 'none',
  200. duration: 2000
  201. })
  202. return false;
  203. }
  204. _handle.setFormId(e)
  205. var that = this
  206. this.setData({
  207. payFlag: true
  208. })
  209. if (that.data.receivetype == 0 && !that.data.address) {
  210. wx.showToast({
  211. title: '请先填写地址',
  212. icon: 'none',
  213. duration: 2000
  214. })
  215. that.setData({
  216. payFlag: false
  217. })
  218. } else if (that.data.receivetype == 0 && !validator.required1(this.data.address.contact)) {
  219. wx.showToast({
  220. title: '国家安全局规定:运单禁止出现“先生”,“小姐”,“女士”等,请重新填写地址',
  221. icon: 'none',
  222. duration: 2000
  223. })
  224. that.setData({
  225. payFlag: false
  226. })
  227. }else if (that.data.receivetype == 1 && !that.data.pick_address) {
  228. wx.showToast({
  229. title: '请先选择提货人',
  230. icon: 'none',
  231. duration: 2000
  232. })
  233. that.setData({
  234. payFlag: false
  235. })
  236. }else if (that.data.receivetype == 1 && !that.data.pickid) {
  237. wx.showToast({
  238. title: '请选择自提门店',
  239. icon: 'none',
  240. duration: 2000
  241. })
  242. that.setData({
  243. payFlag: false
  244. })
  245. } else {
  246. if (that.data.curPayway === 'balance') {
  247. var p
  248. if (that.data.project) {
  249. p = that.data.balanceInfo.total - that.data.project.robo_balance_price * that.data.payData.count
  250. }
  251. if (p < 0) {
  252. this.setData({
  253. luoboCount: -(that.data.balanceInfo.total - that.data.project.robo_balance_price * that.data.payData.count),
  254. showModal: true,
  255. countMoney: -(that.data.balanceInfo.total - that.data.project.robo_balance_price * that.data.payData.count) / 100,
  256. payFlag: false
  257. })
  258. } else {
  259. that.pay()
  260. }
  261. } else if (that.data.curPayway === 'cent') {
  262. // var b
  263. // if (that.data.project) {
  264. // b = that.data.balanceInfo.dc_total - that.data.project.mall_balance_price * that.data.payData.count
  265. // }
  266. // if (b < 0) {
  267. // this.setData({
  268. // luoboCount: that.data.project.mall_balance_price * that.data.payData.count - that.data.balanceInfo.dc_total,
  269. // showModal: true,
  270. // payFlag: false
  271. // })
  272. // } else {
  273. that.pay()
  274. // }
  275. } else if (that.data.curPayway === 'weixinpay') {
  276. if(that.data.useBalance && that.data.afterdec > 0){
  277. wx.showModal({
  278. title: '提示',
  279. content: '当前使用提货券抵扣 '+ (that.data.balanceInfo.total / 100)+' 后,还需支付 '+(that.data.afterdec / 100)+' 使用微信支付?' ,
  280. success: function (sm) {
  281. if (sm.confirm) {
  282. that.pay()
  283. } else if (sm.cancel) {
  284. console.log('用户点击取消')
  285. that.setData({
  286. payFlag: false
  287. })
  288. }
  289. }
  290. })
  291. }else{
  292. that.pay()
  293. }
  294. }
  295. // if (!that.data.userInfo.user.has_trade_pwd) {
  296. // that.setPwdDialog()
  297. // } else {
  298. // if (that.data.balanceInfo.total - that.data.project.price * that.data.payData.count < 0) {
  299. // this.setData({
  300. // luoboCount: -(that.data.balanceInfo.total - that.data.project.price * that.data.payData.count),
  301. // showModal: true,
  302. // countMoney: -(that.data.balanceInfo.total - that.data.project.price * that.data.payData.count) / 100
  303. // })
  304. // } else {
  305. // that.setData({
  306. // pwdDialog: true
  307. // })
  308. // if (that.data.useRadishSelect) {
  309. // that.setData({
  310. // pwdDialog: true
  311. // })
  312. // } else {
  313. // that.openToast('请勾选使用提货券兑换~')
  314. // }
  315. // }
  316. // }
  317. }
  318. },
  319. onCancel: function () {
  320. this.setData({
  321. showModal: false
  322. });
  323. },
  324. onConfirm: function () {
  325. wx.navigateTo({
  326. url: '/packageUser/pages/user/exchange/exchange'
  327. })
  328. },
  329. onConfirm1: function() {
  330. wx.navigateTo({
  331. url: '/packageUser/pages/user/buy/buy?path=/pages/pay/pay&orderId=' + this.data.orderId +
  332. '&luoboCount=' + this.data.luoboCount + '&countMoney=' + this.data.countMoney
  333. })
  334. // /pages/pay/pay?order_id=EX201807206A91F25E
  335. },
  336. onConfirm2: function () {
  337. wx.navigateTo({
  338. url: '/pages/parse/parse?id=8'
  339. })
  340. },
  341. preventTouchMove: function () {
  342. },
  343. selectClick: function (e) {
  344. var that = this
  345. that.setData({
  346. curPayway: e.target.dataset.payway
  347. });
  348. },
  349. pay: function () {
  350. var that = this
  351. var url = "v1/pay";
  352. var params;
  353. if(that.data.receivetype == 0){
  354. params = {
  355. pick_way: 0,
  356. order_id: that.data.orderId,
  357. trad_pwd: that.data.pwd,
  358. pay_way: that.data.curPayway,
  359. address_id: that.data.address.id,
  360. s: 'xcx',
  361. use_coupon:that.data.useBalance,
  362. remark:that.data.remark
  363. }
  364. }else{
  365. params = {
  366. pick_way: 1,
  367. order_id: that.data.orderId,
  368. trad_pwd: that.data.pwd,
  369. pay_way: that.data.curPayway,
  370. s: 'xcx',
  371. use_coupon:that.data.useBalance,
  372. remark:that.data.remark,
  373. pick_dept:that.data.pickid,
  374. pick_addr_id:that.data.pick_address.id
  375. }
  376. }
  377. console.log('onpay',params)
  378. var success = function (val) {
  379. console.log(val);
  380. if(val.statusCode === 200){
  381. if (that.data.curPayway === 'weixinpay' && val.data.need_wx) {
  382. wx.requestPayment({
  383. 'timeStamp': val.data.pay_data.timeStamp,
  384. 'nonceStr': val.data.pay_data.nonceStr,
  385. 'package': val.data.pay_data.package,
  386. 'signType': val.data.pay_data.signType,
  387. 'paySign': val.data.pay_data.paySign,
  388. 'success':function(res){
  389. wx.showToast({
  390. title: '支付成功',
  391. icon: 'success',
  392. duration: 1000
  393. })
  394. wx.navigateTo({
  395. // url: '/packageUser/pages/user/orders/orders'
  396. url: '/pages/projects/project-success/project-success?id=' + that.data.orderId
  397. })
  398. },
  399. 'fail':function(res){
  400. that.setData({
  401. payFlag: false
  402. })
  403. }
  404. })
  405. } else {
  406. that.setData({
  407. pay: val.data
  408. });
  409. wx.redirectTo({
  410. // url: '/packageUser/pages/user/orders/orders'
  411. url: '/pages/projects/project-success/project-success?id=' + that.data.orderId
  412. })
  413. }
  414. that.setData({
  415. payFlag: false
  416. })
  417. }else{
  418. that.setData({
  419. payFlag: false
  420. })
  421. }
  422. }
  423. var fail = function(err){
  424. that.setData({
  425. payFlag: false
  426. })
  427. }
  428. __request.$post(url, params, success, fail)
  429. },
  430. setPwdDialog: function () {
  431. wx.showModal({
  432. title: '提示',
  433. confirmColor: '#eab86a',
  434. content: '您未设置交易密码,是否前往设置?',
  435. success: function(res) {
  436. if (res.confirm) {
  437. wx.navigateTo({
  438. url: '/packageUser/pages/user/safe/safe'
  439. })
  440. } else if (res.cancel) {
  441. }
  442. }
  443. })
  444. },
  445. onShareAppMessage: function (val) {
  446. return _request.share({
  447. sc: 'xcx_pay'
  448. })
  449. },
  450. bindremark (e) {
  451. this.setData({
  452. remark: e.detail.value
  453. })
  454. },
  455. receivetbn(e){
  456. this.setData({
  457. receivetype: e.target.dataset.value,
  458. yunfei : e.target.dataset.value == 0 ? this.data._yunfei : 0
  459. })
  460. wx.setStorageSync('receivetype', e.target.dataset.value) //存入
  461. },
  462. getpickdeparts: function () {
  463. var that = this
  464. var url = "v1/pick_departs";
  465. var params = {}
  466. var success = function (val) {
  467. let list = [];
  468. for(var i in val.data){
  469. list.push(val.data[i]['pick_address']+'-'+val.data[i]['pick_title'])
  470. }
  471. that.setData({
  472. pickdepartsList:val.data,
  473. repickdepartsList:list,
  474. pickindex: 0,
  475. pickid:val.data[0]['id']
  476. })
  477. }
  478. __request.$get(url, params, success)
  479. },
  480. bindPickerChange: function(e) {
  481. console.log('picker发送选择改变,携带值为', e.detail.value)
  482. var that = this;
  483. this.setData({
  484. pickindex: e.detail.value,
  485. pickid:that.data.pickdepartsList[e.detail.value]['id']
  486. })
  487. },
  488. })