index.vue 20 KB

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