index.vue 19 KB

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