pay.js 9.9 KB

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