pay.js 13 KB

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