pay.js 11 KB

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