pay.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <template>
  2. <view class="body">
  3. <view style="margin: 0px 20px;">
  4. <view class="ft18">请选择充值金额 <label class="ft14" style="float: right;">账户余额<label class="ft14 kb-txt">{{user_info.total_coin}}</label>K币</label></view>
  5. <text class="ft14" style="font-weight: bold;padding-top: 10px;display: block;">1元=100K币</text>
  6. </view>
  7. <view class="pay-box">
  8. <block v-for="(item,key) in list" :key="key">
  9. <view v-if="item.type =='COIN'" @click="selectPayItem(item)"
  10. :class="item.id == select.id ?'pay-select' :'' " class="box pay-box-items">
  11. <view style="height: 20px;align-self: flex-end;"><text class="ft12 top-lab"
  12. v-if="item.tip_text">{{item.tip_text}}</text></view>
  13. <text class="ft18 pay-box-items-txt" style="color: #FF9800;">{{item.price}}元</text>
  14. <view class="ft14 pay-box-items-txt" style="flex-direction: row;">
  15. {{item.price_text}} <text class="ft14"
  16. style="color: #FF9800;">+{{item.given}}K币</text> </view>
  17. <view class="ft14 pay-box-items-txt"
  18. style="flex-direction: row;display: flex;justify-content: space-between;"
  19. :class=" item.id == select.id ?'select-text' :'given-txt'">
  20. {{item.given_amount}} <text v-if="item.id == select.id"
  21. class="ft14" style="margin-right: 20px;">&#10003;️</text></view>
  22. </view>
  23. <view v-else @click="selectPayItem(item)"
  24. :class="item.id == select.id ?'pay-select' :'' " class="box pay-box-items">
  25. <view style="height: 20px;align-self: flex-end;"><text class="ft12 top-lab"
  26. v-if="item.tip_text">{{item.tip_text}}</text></view>
  27. <view class="vip-center">
  28. <view class="">
  29. <text class="ft18 pay-box-items-txt"
  30. style="color: #FF9800;">{{item.price}}0元</text>
  31. <view class="ft14 pay-box-items-txt">{{item.price_text}}</text></view>
  32. </view>
  33. <image class="vip-level-icon" src="/static/icon/vip.png"></image>
  34. </view>
  35. <view class="ft14 pay-box-items-txt"
  36. style="flex-direction: row;display: flex;justify-content: space-between;"
  37. :class=" item.id == select.id ?'select-text' :'given-txt'">
  38. <text class="ft14">{{item.given_amount}}</text> <text v-if="item.id == select.id"
  39. class="ft14" style="margin-right: 20px;">&#10003;️</text></view>
  40. </view>
  41. </block>
  42. </view>
  43. <view @click="toPay" class="ft16 btn-cz mt16 " >
  44. 确认充值{{select.price||0}}
  45. </view>
  46. <view class="ft14" style="margin: 10px 0; padding: 0 20px;">付费须知</view>
  47. <view class="ft14" style="padding: 0 20px;margin-bottom: 50px;">
  48. <text class="ft12">1、虚拟商品,一经购买不得退换</text>
  49. <text class="ft12">2、充值后K币可能有延迟,1小时未到账请在“我的”页面联系客服</text>
  50. <text class="ft12">3、未满18岁的未成年需要在监护人陪同下购买并观看短剧剧</text>
  51. <text class="ft12">4、购买成功后,“K币”仅在本小程序中使用</text>
  52. <text class="ft12">5、购买成功后可在”我的”页面订单中心进行查看</text>
  53. </view>
  54. </view>
  55. </template>
  56. <script>
  57. import {getUserInfo} from "@/common/apis/my.js";
  58. import {
  59. getOptions,
  60. getPayInfo,
  61. } from "@/common/apis/recharge.js"
  62. export default {
  63. data() {
  64. return {
  65. user_info:{},
  66. list: [],
  67. select: {},
  68. pay_success:false
  69. }
  70. },async onShow() {
  71. this.user_info = await getUserInfo();
  72. this.get_options();
  73. },
  74. methods: {
  75. async get_options() {
  76. this.list = await getOptions();
  77. this.list.forEach((item, index) => {
  78. if (item.is_default == 1) {
  79. this.select = item;
  80. }
  81. })
  82. },selectPayItem(item){
  83. this.select = item;
  84. },async toPay(){
  85. if(this.select.lenght < 1){
  86. uni.showToast({ title: '请选择要充值的项',icon:"none" });
  87. return false;
  88. }
  89. let params = {
  90. pay_proudct_id:this.select.id,
  91. video_id:this.video_info && this.video_info.video_id ? this.video_info.video_id :0,
  92. video_series_sequence:this.video_info && this.video_info.video_series_sequence ? this.video_info.video_series_sequence :0,
  93. is_first_pay:this.select.is_first_pay,
  94. };
  95. let result = false;
  96. let res = await getPayInfo(params);
  97. if(res){
  98. // #ifdef MP-WEIXIN
  99. this.wxMinPay(res);
  100. // #endif
  101. }
  102. },wxMinPay(param){
  103. wx.requestPayment({
  104. timeStamp: param.timeStamp,
  105. nonceStr: param.nonceStr,
  106. package: param.package,
  107. signType: param.signType,
  108. paySign: param.paySign,
  109. success (res) {
  110. this.pay_success = true;
  111. uni.showToast({ title: '支付成功',icon:"none" });
  112. // console.log('success:' + JSON.stringify(res));
  113. },
  114. fail (e) {
  115. if(e.errMsg == "requestPayment:fail cancel"){
  116. uni.showToast({ title: '取消支付',icon:"none" });
  117. }else{
  118. uni.showToast({ title: '支付失败',icon:"none" });
  119. }
  120. }
  121. })
  122. }
  123. }
  124. }
  125. </script>
  126. <style>
  127. @import url("style/pay.css");
  128. </style>