pay.js 10 KB

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