index.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843
  1. <template>
  2. <view class="page" v-if="payPriceShow">
  3. <view class="pay-price">
  4. <view class="price">
  5. <text class="unit">{{$t(`¥`)}}</text>
  6. <numberScroll :num='payPriceShow' color="#E93323" width='30' height='50' fontSize='50'></numberScroll>
  7. </view>
  8. <view class="count-down">
  9. {{$t(`支付剩余时间`)}}:
  10. <countDown :is-day="false" :tip-text="' '" :day-text="' '" :hour-text="' : '" :minute-text="' : '"
  11. :second-text="' '" :datatime="invalidTime"></countDown>
  12. </view>
  13. </view>
  14. <view class="payment">
  15. <view class="title">
  16. {{$t(`支付方式`)}}
  17. </view>
  18. <view class="item acea-row row-between-wrapper" v-for="(item,index) in cartArr" :key="index"
  19. v-show='item.payStatus' @click="payType(item.number || 0, item.value, index)">
  20. <view class="left acea-row row-between-wrapper">
  21. <view class="iconfont" :class="item.icon"></view>
  22. <view class="text">
  23. <view class="name">{{$t(item.name)}}</view>
  24. <view class="info" v-if="item.value == 'yue'">
  25. {{$t(item.title)}} <span class="money">{{$t(`¥`)}}{{ item.number }}</span>
  26. </view>
  27. <view class="info" v-else>{{$t(item.title)}}</view>
  28. </view>
  29. </view>
  30. <view class="iconfont" :class="active==index?'icon-xuanzhong11 font-num':'icon-weixuan'"></view>
  31. </view>
  32. </view>
  33. <view class="btn">
  34. <view class="button acea-row row-center-wrapper" @click='goPay(number, paytype)'>{{$t(`确认支付`)}}</view>
  35. <view class="wait-pay" @click="waitPay">{{$t(`暂不支付`)}}</view>
  36. </view>
  37. <view v-show="false" v-html="formContent"></view>
  38. </view>
  39. </view>
  40. </template>
  41. <script>
  42. import countDown from '@/components/countDown';
  43. import numberScroll from '@/components/numberScroll.vue'
  44. import {
  45. getCashierOrder,
  46. orderPay
  47. } from '@/api/order.js';
  48. import {
  49. basicConfig
  50. } from '@/api/public.js'
  51. export default {
  52. components: {
  53. countDown,
  54. numberScroll
  55. },
  56. data() {
  57. return {
  58. checked: false,
  59. datatime: 1676344056,
  60. //支付方式
  61. cartArr: [{
  62. "name": this.$t(`微信支付`),
  63. "icon": "icon-weixin2",
  64. value: 'weixin',
  65. title: this.$t(`使用微信快捷支付`),
  66. payStatus: 1,
  67. },
  68. {
  69. "name": this.$t(`支付宝支付`),
  70. "icon": "icon-zhifubao",
  71. value: 'agree',
  72. title: this.$t(`使用支付宝支付`),
  73. payStatus: 1,
  74. },
  75. {
  76. "name": this.$t(`余额支付`),
  77. "icon": "icon-yuezhifu",
  78. value: 'yue',
  79. title: this.$t(`可用余额`),
  80. payStatus: 1,
  81. },
  82. {
  83. "name": this.$t(`线下支付`),
  84. "icon": "icon-yuezhifu1",
  85. value: 'offline',
  86. title: this.$t(`使用线下付款`),
  87. payStatus: 2,
  88. }, {
  89. "name": this.$t(`好友代付`),
  90. "icon": "icon-haoyoudaizhifu",
  91. value: 'friend',
  92. title: this.$t(`找微信好友支付`),
  93. payStatus: 1,
  94. },
  95. {
  96. "name": this.$t(`汇聚支付`),
  97. "icon": "icon-yuezhifu1",
  98. value: 'huijupay',
  99. title: this.$t(`使用汇聚支付`),
  100. payStatus: 1,
  101. }
  102. ],
  103. orderId: 0,
  104. fromType: '',
  105. active: 0,
  106. payPrice: 0,
  107. payPriceShow: 0,
  108. payPostage: 0,
  109. offlinePostage: false,
  110. invalidTime: 0,
  111. initIn: false,
  112. jumpData: {
  113. orderId: '',
  114. msg: ''
  115. },
  116. formContent: ''
  117. }
  118. },
  119. watch: {
  120. cartArr: {
  121. handler(newV, oldValue) {
  122. let newPayList = [];
  123. newV.forEach((item, index) => {
  124. if (item.payStatus) {
  125. item.index = index;
  126. newPayList.push(item)
  127. }
  128. });
  129. this.$nextTick(e => {
  130. this.active = newPayList[0].index;
  131. this.paytype = newPayList[0].value;
  132. })
  133. },
  134. immediate: true,
  135. deep: true
  136. }
  137. },
  138. onLoad(options) {
  139. if (options.order_id) this.orderId = options.order_id
  140. if (options.from_type) this.fromType = options.from_type
  141. this.getBasicConfig()
  142. },
  143. onShow() {
  144. let options = wx.getEnterOptionsSync();
  145. if (options.scene == '1038' && options.referrerInfo.appId == 'wxef277996acc166c3' && this.initIn) {
  146. // 代表从收银台小程序返回
  147. let extraData = options.referrerInfo.extraData;
  148. this.initIn = false
  149. if (!extraData) {
  150. // "当前通过物理按键返回,未接收到返参,建议自行查询交易结果";
  151. this.$util.Tips({
  152. title: this.$t(`取消支付`)
  153. }, {
  154. tab: 5,
  155. url: `/pages/goods/order_pay_status/index?order_id=${this.orderId}&msg=${this.$t(`取消支付`)}&type=3&totalPrice=${this.payPriceShow}&status=2`
  156. });
  157. } else {
  158. if (extraData.code == 'success') {
  159. this.$util.Tips({
  160. title: this.$t(`支付成功`),
  161. icon: 'success'
  162. }, {
  163. tab: 5,
  164. url: `/pages/goods/order_pay_status/index?order_id=${this.orderId}&msg=${this.jumpData.msg}&type=3&totalPrice=${this.payPriceShow}`
  165. });
  166. } else if (extraData.code == 'cancel') {
  167. // "支付已取消";
  168. this.$util.Tips({
  169. title: this.$t(`取消支付`)
  170. }, {
  171. tab: 5,
  172. url: `/pages/goods/order_pay_status/index?order_id=${this.orderId}&msg=${this.$t(`取消支付`)}&type=3&totalPrice=${this.payPriceShow}&status=2`
  173. });
  174. } else {
  175. // "支付失败:" + extraData.errmsg;
  176. uni.reLaunch({
  177. url: `/pages/goods/order_pay_status/index?order_id=${this.orderId}&msg=${this.$t(`支付失败`)}&totalPrice=${this.payPriceShow}`
  178. })
  179. }
  180. }
  181. }
  182. },
  183. methods: {
  184. getBasicConfig() {
  185. basicConfig().then(res => {
  186. //微信支付是否开启
  187. this.cartArr[0].payStatus = res.data.pay_weixin_open || 0
  188. //支付宝是否开启
  189. this.cartArr[1].payStatus = res.data.ali_pay_status || 0;
  190. //#ifdef MP
  191. this.cartArr[1].payStatus = 0;
  192. //#endif
  193. //余额支付是否开启
  194. this.cartArr[2].payStatus = res.data.yue_pay_status
  195. if (res.data.offline_pay_status) {
  196. this.cartArr[3].payStatus = 1
  197. } else {
  198. this.cartArr[3].payStatus = 0
  199. }
  200. //好友代付是否开启
  201. this.cartArr[4].payStatus = res.data.friend_pay_status || 0;
  202. this.getCashierOrder()
  203. }).catch(err => {
  204. uni.hideLoading();
  205. return this.$util.Tips({
  206. title: err
  207. })
  208. })
  209. },
  210. getCashierOrder() {
  211. uni.showLoading({
  212. title: this.$t(`创建订单中`)
  213. });
  214. getCashierOrder(this.orderId, this.fromType).then(res => {
  215. this.payPrice = this.payPriceShow = res.data.pay_price
  216. this.payPostage = res.data.pay_postage
  217. this.offlinePostage = res.data.offline_postage
  218. this.invalidTime = res.data.invalid_time
  219. this.cartArr[2].number = res.data.now_money;
  220. this.number = Number(res.data.now_money) || 0;
  221. uni.hideLoading();
  222. }).catch(err => {
  223. uni.hideLoading();
  224. return this.$util.Tips({
  225. title: err
  226. })
  227. })
  228. },
  229. payType(number, paytype, index) {
  230. this.active = index;
  231. this.paytype = paytype;
  232. this.number = number;
  233. if (this.offlinePostage) {
  234. if (paytype == 'offline') {
  235. this.payPriceShow = this.$util.$h.Sub(this.payPrice, this.payPostage);
  236. } else {
  237. this.payPriceShow = this.payPrice;
  238. }
  239. }
  240. },
  241. formpost(url, postData) {
  242. let tempform = document.createElement("form");
  243. tempform.action = url;
  244. tempform.method = "post";
  245. tempform.target = "_self";
  246. tempform.style.display = "none";
  247. for (let x in postData) {
  248. let opt = document.createElement("input");
  249. opt.name = x;
  250. opt.value = postData[x];
  251. tempform.appendChild(opt);
  252. }
  253. document.body.appendChild(tempform);
  254. this.$nextTick(e => {
  255. tempform.submit();
  256. })
  257. },
  258. waitPay() {
  259. uni.reLaunch({
  260. url: '/pages/goods/order_pay_status/index?order_id=' + this.orderId + '&msg=取消支付&type=3' +
  261. '&status=2&totalPrice=' + this.payPriceShow
  262. })
  263. },
  264. goPay(number, paytype) {
  265. let that = this;
  266. if (!that.orderId) return that.$util.Tips({
  267. title: that.$t(`请选择要支付的订单`)
  268. });
  269. if (paytype == 'yue' && parseFloat(number) < parseFloat(that.payPriceShow)) return that.$util.Tips({
  270. title: that.$t(`余额不足`)
  271. });
  272. uni.showLoading({
  273. title: that.$t(`支付中`)
  274. });
  275. if (paytype == 'friend' && that.orderId) {
  276. uni.hideLoading();
  277. return uni.navigateTo({
  278. url: '/pages/users/payment_on_behalf/index?order_id=' + that.orderId + '&spread=' +
  279. this.$store.state.app.uid,
  280. success: res => {},
  281. fail: () => {},
  282. complete: () => {}
  283. });
  284. }
  285. let updata = {
  286. uni: that.orderId,
  287. paytype: paytype,
  288. type: that.friendPay ? 1 : 0,
  289. // #ifdef H5
  290. quitUrl: location.port ? location.protocol + '//' + location.hostname + ':' + location
  291. .port +
  292. '/pages/goods/order_details/index?order_id=' + this.orderId : location.protocol +
  293. '//' + location.hostname +
  294. '/pages/goods/order_details/index?order_id=' + this.orderId
  295. // #endif
  296. // #ifdef APP-PLUS
  297. quitUrl: '/pages/goods/order_details/index?order_id=' + this.orderId
  298. // #endif
  299. }
  300. if (paytype == 'agree') {
  301. updata.paytype = 'huijupay';
  302. updata.join_pay = 'uni';
  303. }
  304. if (paytype == 'huijupay') {
  305. updata.paytype = 'huijupay';
  306. updata.join_pay = 'agree';
  307. }
  308. orderPay(updata).then(res => {
  309. let status = res.data.status,
  310. orderId = res.data.result.order_id,
  311. jsConfig = res.data.result.jsConfig,
  312. goPages = '/pages/goods/order_pay_status/index?order_id=' + this.orderId + '&msg=' +
  313. res
  314. .msg +
  315. '&type=3' + '&totalPrice=' + this.payPriceShow,
  316. friendPay = '/pages/users/payment_on_behalf/index?order_id=' + this.orderId +
  317. '&spread=' +
  318. this
  319. .$store.state.app.uid;
  320. if (paytype == 'huijupay' && that.orderId) {
  321. setTimeout(() => {
  322. uni.hideLoading();
  323. uni.reLaunch({
  324. url: goPages
  325. })
  326. }, 3000)
  327. return
  328. }
  329. if (paytype == 'agree' && that.orderId) {
  330. console.log(res);
  331. setTimeout(() => {
  332. uni.hideLoading();
  333. let urlarr = (res.data.result.jsConfig.rc_Result.split(`location.href='`))[1].split("'");
  334. // #ifdef H5
  335. window.open(urlarr[0]);
  336. // #endif
  337. // #ifdef APP
  338. plus.runtime.openWeb(urlarr[0]);
  339. // #endif
  340. // uni.reLaunch({
  341. // url: goPages
  342. // })
  343. }, 3000)
  344. return
  345. }
  346. switch (status) {
  347. case 'ORDER_EXIST':
  348. case 'EXTEND_ORDER':
  349. uni.hideLoading();
  350. return that.$util.Tips({
  351. title: res.msg
  352. }, {
  353. tab: 5,
  354. url: goPages
  355. });
  356. case 'ALLINPAY_PAY':
  357. uni.hideLoading();
  358. // #ifdef MP
  359. this.initIn = true
  360. wx.openEmbeddedMiniProgram({
  361. appId: 'wxef277996acc166c3',
  362. extraData: {
  363. cusid: jsConfig.cusid,
  364. appid: jsConfig.appid,
  365. version: jsConfig.version,
  366. trxamt: jsConfig.trxamt,
  367. reqsn: jsConfig.reqsn,
  368. notify_url: jsConfig.notify_url,
  369. body: jsConfig.body,
  370. remark: jsConfig.remark,
  371. validtime: jsConfig.validtime,
  372. randomstr: jsConfig.randomstr,
  373. paytype: jsConfig.paytype,
  374. sign: jsConfig.sign,
  375. signtype: jsConfig.signtype
  376. }
  377. })
  378. this.jumpData = {
  379. orderId: res.data.result.order_id,
  380. msg: res.msg,
  381. }
  382. // #endif
  383. // #ifdef APP-PLUS
  384. plus.runtime.openURL(jsConfig.payinfo);
  385. setTimeout(e => {
  386. uni.reLaunch({
  387. url: goPages
  388. })
  389. }, 1000)
  390. // #endif
  391. // #ifdef H5
  392. this.formpost(res.data.result.pay_url, jsConfig)
  393. // #endif
  394. break;
  395. case 'PAY_ERROR':
  396. uni.hideLoading();
  397. return that.$util.Tips({
  398. title: res.msg
  399. }, {
  400. tab: 5,
  401. url: goPages
  402. });
  403. break;
  404. case 'SUCCESS':
  405. uni.hideLoading();
  406. if (paytype !== 'friend') {
  407. return that.$util.Tips({
  408. title: res.msg,
  409. icon: 'success'
  410. }, {
  411. tab: 4,
  412. url: goPages
  413. });
  414. } else {
  415. return that.$util.Tips({
  416. title: res.msg,
  417. icon: 'success'
  418. }, {
  419. tab: 4,
  420. url: friendPay
  421. });
  422. }
  423. break;
  424. case 'WECHAT_PAY':
  425. that.toPay = true;
  426. // #ifdef MP
  427. /* that.toPay = true; */
  428. let mp_pay_name = ''
  429. if (uni.requestOrderPayment) {
  430. mp_pay_name = 'requestOrderPayment'
  431. } else {
  432. mp_pay_name = 'requestPayment'
  433. }
  434. uni[mp_pay_name]({
  435. timeStamp: jsConfig.timestamp,
  436. nonceStr: jsConfig.nonceStr,
  437. package: jsConfig.package,
  438. signType: jsConfig.signType,
  439. paySign: jsConfig.paySign,
  440. success: function(res) {
  441. uni.hideLoading();
  442. if (that.BargainId || that.combinationId || that.pinkId ||
  443. that
  444. .seckillId || that.discountId)
  445. return that.$util.Tips({
  446. title: that.$t(`支付成功`),
  447. icon: 'success'
  448. }, {
  449. tab: 4,
  450. url: goPages
  451. });
  452. return that.$util.Tips({
  453. title: that.$t(`支付成功`),
  454. icon: 'success'
  455. }, {
  456. tab: 5,
  457. url: goPages
  458. });
  459. },
  460. fail: function(e) {
  461. uni.hideLoading();
  462. return that.$util.Tips({
  463. title: that.$t(`取消支付`)
  464. }, {
  465. tab: 5,
  466. url: goPages + '&status=2'
  467. });
  468. },
  469. complete: function(e) {
  470. uni.hideLoading();
  471. //关闭当前页面跳转至订单状态
  472. if (res.errMsg == 'requestPayment:cancel' || e.errMsg ==
  473. 'requestOrderPayment:cancel') return that.$util
  474. .Tips({
  475. title: that.$t(`取消支付`)
  476. }, {
  477. tab: 5,
  478. url: goPages + '&status=2'
  479. });
  480. },
  481. })
  482. // #endif
  483. // #ifdef H5
  484. this.$wechat.pay(res.data.result.jsConfig).then(res => {
  485. return that.$util.Tips({
  486. title: that.$t(`支付成功`),
  487. icon: 'success'
  488. }, {
  489. tab: 5,
  490. url: goPages
  491. });
  492. }).catch(res => {
  493. if (!this.$wechat.isWeixin()) {
  494. uni.redirectTo({
  495. url: goPages + '&msg=' + that.$t(`支付失败`) +
  496. '&status=2'
  497. // '&msg=支付失败&status=2'
  498. })
  499. }
  500. if (res.errMsg == 'chooseWXPay:cancel') return that.$util.Tips({
  501. title: that.$t(`取消支付`)
  502. }, {
  503. tab: 5,
  504. url: goPages + '&status=2'
  505. });
  506. })
  507. // #endif
  508. // #ifdef APP-PLUS
  509. uni.requestPayment({
  510. provider: 'wxpay',
  511. orderInfo: jsConfig,
  512. success: (e) => {
  513. let url = goPages;
  514. uni.showToast({
  515. title: that.$t(`支付成功`)
  516. })
  517. setTimeout(res => {
  518. uni.redirectTo({
  519. url: url
  520. })
  521. }, 2000)
  522. },
  523. fail: (e) => {
  524. let url = '/pages/goods/order_pay_status/index?order_id=' +
  525. orderId +
  526. '&msg=' + that.$t(`支付失败`);
  527. uni.showModal({
  528. content: that.$t(`支付失败`),
  529. showCancel: false,
  530. success: function(res) {
  531. if (res.confirm) {
  532. uni.redirectTo({
  533. url: url
  534. })
  535. } else if (res.cancel) {}
  536. }
  537. })
  538. },
  539. complete: () => {
  540. uni.hideLoading();
  541. },
  542. });
  543. // #endif
  544. break;
  545. case 'PAY_DEFICIENCY':
  546. uni.hideLoading();
  547. //余额不足
  548. return that.$util.Tips({
  549. title: res.msg
  550. }, {
  551. tab: 5,
  552. url: goPages + '&status=1'
  553. });
  554. break;
  555. case "WECHAT_H5_PAY":
  556. uni.hideLoading();
  557. that.$util.Tips({
  558. title: that.$t(`等待支付中`)
  559. }, {
  560. tab: 4,
  561. url: goPages + '&status=0'
  562. });
  563. setTimeout(() => {
  564. location.href = res.data.result.jsConfig.h5_url;
  565. }, 1500);
  566. break;
  567. case 'ALIPAY_PAY':
  568. //#ifdef H5
  569. uni.hideLoading();
  570. that.$util.Tips({
  571. title: that.$t(`等待支付中`)
  572. }, {
  573. tab: 4,
  574. url: goPages + '&status=0'
  575. });
  576. that.formContent = res.data.result.jsConfig;
  577. setTimeout(() => {
  578. document.getElementById('alipaysubmit').submit();
  579. }, 1500);
  580. //#endif
  581. // #ifdef MP
  582. uni.navigateTo({
  583. url: `/pages/users/alipay_invoke/index?id=${orderId}&link=${jsConfig.qrCode}`
  584. });
  585. // #endif
  586. // #ifdef APP-PLUS
  587. uni.requestPayment({
  588. provider: 'alipay',
  589. orderInfo: jsConfig,
  590. success: (e) => {
  591. uni.showToast({
  592. title: that.$t(`支付成功`)
  593. })
  594. let url = '/pages/goods/order_pay_status/index?order_id=' +
  595. orderId +
  596. '&msg=' + that.$t(`支付成功`);
  597. setTimeout(res => {
  598. uni.redirectTo({
  599. url: url
  600. })
  601. }, 2000)
  602. },
  603. fail: (e) => {
  604. let url = '/pages/goods/order_pay_status/index?order_id=' +
  605. orderId +
  606. '&msg=' + that.$t(`支付失败`);
  607. uni.showModal({
  608. content: that.$t(`支付失败`),
  609. showCancel: false,
  610. success: function(res) {
  611. if (res.confirm) {
  612. uni.redirectTo({
  613. url: url
  614. })
  615. } else if (res.cancel) {}
  616. }
  617. })
  618. },
  619. complete: () => {
  620. uni.hideLoading();
  621. },
  622. });
  623. // #endif
  624. break;
  625. }
  626. }).catch(err => {
  627. uni.hideLoading();
  628. if (paytype == 'huijupay') {
  629. if (err == '无签约记录') {
  630. uni.showModal({
  631. title: '错误',
  632. content: '您未签约是否立即签约',
  633. success: res => {
  634. if (res.confirm) {
  635. uni.reLaunch({
  636. url: '/pages/users/user_bind/index'
  637. })
  638. }
  639. },
  640. });
  641. }
  642. }
  643. return that.$util.Tips({
  644. title: err
  645. }, () => {
  646. that.$emit('onChangeFun', {
  647. action: 'pay_fail'
  648. });
  649. });
  650. })
  651. }
  652. }
  653. }
  654. </script>
  655. <style lang="scss" scoped>
  656. .page {
  657. .pay-price {
  658. display: flex;
  659. justify-content: center;
  660. flex-direction: column;
  661. align-items: center;
  662. padding: 50rpx 0 40rpx 0;
  663. .price {
  664. color: #E93323;
  665. margin-bottom: 20rpx;
  666. display: flex;
  667. align-items: flex-end;
  668. .unit {
  669. font-size: 34rpx;
  670. font-weight: 500;
  671. line-height: 41rpx;
  672. }
  673. .num {
  674. font-size: 50rpx;
  675. font-weight: 600;
  676. }
  677. }
  678. .count-down {
  679. display: flex;
  680. align-items: center;
  681. background-color: #fff;
  682. padding: 8rpx 28rpx;
  683. border-radius: 40rpx;
  684. font-size: 24rpx;
  685. color: #E93323;
  686. .time {
  687. margin-top: 0 !important;
  688. }
  689. /deep/.red {
  690. margin: 0 !important;
  691. }
  692. }
  693. }
  694. .payment {
  695. width: 690rpx;
  696. border-radius: 14rpx 14rpx;
  697. background-color: #fff;
  698. z-index: 999;
  699. margin: 0 30rpx;
  700. .title {
  701. color: #666666;
  702. font-size: 26rpx;
  703. padding: 30rpx 0 0 30rpx;
  704. }
  705. .payMoney {
  706. font-size: 28rpx;
  707. color: #333333;
  708. text-align: center;
  709. margin-top: 50rpx;
  710. .font-color {
  711. margin-left: 10rpx;
  712. .money {
  713. font-size: 40rpx;
  714. }
  715. }
  716. }
  717. }
  718. .payment.on {
  719. transform: translate3d(0, 0, 0);
  720. }
  721. .icon-xuanzhong11 {
  722. color: #E93323 !important;
  723. }
  724. .payment .item {
  725. border-bottom: 1rpx solid #eee;
  726. height: 130rpx;
  727. margin-left: 30rpx;
  728. padding-right: 30rpx;
  729. }
  730. .payment .item:last-child {
  731. border-bottom: none;
  732. }
  733. .payment .item .left {
  734. flex: 1;
  735. }
  736. .payment .item .left .text {
  737. flex: 1;
  738. }
  739. .payment .item .left .text .name {
  740. font-size: 30rpx;
  741. color: #333;
  742. }
  743. .payment .item .left .text .info {
  744. font-size: 22rpx;
  745. color: #999;
  746. }
  747. .payment .item .left .text .info .money {
  748. color: #ff9900;
  749. }
  750. .payment .item .left .iconfont {
  751. font-size: 50rpx;
  752. color: #09bb07;
  753. margin-right: 28rpx;
  754. }
  755. .payment .item .left .iconfont.icon-zhifubao {
  756. color: #00aaea;
  757. }
  758. .payment .item .left .iconfont.icon-yuezhifu {
  759. color: #ff9900;
  760. }
  761. .payment .item .left .iconfont.icon-yuezhifu1 {
  762. color: #eb6623;
  763. }
  764. .payment .item .left .iconfont.icon-tonglianzhifu1 {
  765. color: #305fd8;
  766. }
  767. .payment .item .iconfont {
  768. font-size: 40rpx;
  769. color: #ccc;
  770. }
  771. .icon-haoyoudaizhifu {
  772. color: #F34C3E !important;
  773. }
  774. .btn {
  775. position: fixed;
  776. left: 30rpx;
  777. display: flex;
  778. flex-direction: column;
  779. align-items: center;
  780. bottom: 30rpx;
  781. bottom: calc(30rpx + constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
  782. bottom: calc(30rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
  783. }
  784. .wait-pay {
  785. color: #aaa;
  786. font-size: 24rpx;
  787. padding-top: 20rpx;
  788. }
  789. .button {
  790. width: 690rpx;
  791. height: 90rpx;
  792. border-radius: 45rpx;
  793. color: #FFFFFF;
  794. background-color: #E93323;
  795. }
  796. }
  797. </style>