confirm-pay.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <style>
  2. #app{
  3. background-color: #ffffff;
  4. }
  5. .order_steps{
  6. padding: 30px;
  7. width: 35%;
  8. margin: 0 auto;
  9. }
  10. .order_steps .el-step__title{
  11. font-size: small;
  12. font-weight: initial;
  13. }
  14. .line_title{
  15. line-height: 40px;
  16. color: #333;
  17. padding-left: 60px;
  18. border: 1px solid #ede5e5;
  19. padding-bottom: 90px;
  20. }
  21. .line_title raw{
  22. padding-left: 20px;
  23. }
  24. .el-table__header thead tr th{
  25. background-color: rgb(242 242 242);
  26. height: 40px;
  27. line-height: 40px;
  28. }
  29. .line_title img{
  30. padding: 20px 0 0 0;
  31. }
  32. .line_clue{
  33. width: 35%;
  34. margin: 0 auto;
  35. height: 3px;
  36. background-color: rgb(46 143 244);
  37. clear: both;
  38. }
  39. .submit{
  40. float: right;
  41. padding-left: 20px;
  42. padding-right: 20px;
  43. margin-top: 10px;
  44. }
  45. .pay-msg{
  46. margin-top: 23px;
  47. padding-left: 47px;
  48. color: #999;
  49. }
  50. .topay{
  51. margin-top: 50px;
  52. }
  53. .line_5{
  54. width: 100%;
  55. height: 2px;
  56. clear: both;
  57. background-color: #f2f2f2;
  58. margin-bottom: 21px;
  59. }
  60. </style>
  61. <div id="app" v-cloak>
  62. <template>
  63. <div class="order_steps">
  64. <el-steps :active="active" finish-status="success">
  65. <el-step title="提交订单"></el-step>
  66. <el-step title="支付订单"></el-step>
  67. <el-step title="订单结果"></el-step>
  68. </el-steps>
  69. </div>
  70. <div class="line_5"></div>
  71. <div class="line_clue"></div>
  72. <div class="order_steps line_title" >
  73. <div >应用名称:<samp>{{title}}</samp></div>
  74. <div v-if="addons.duration == -1">应用周期:<samp>{{unit[addons.unit]}}</samp></div>
  75. <div v-else>应用周期:<samp>{{addons.duration}}{{unit[addons.unit]}}</samp></div>
  76. <div >订购店铺:<samp>{{addons.mall_name}}</samp></div>
  77. <div >支付金额:<samp style="font-size: 26px; color: red;">{{addons.pay_money}}元</samp></div>
  78. <div >支付方式:
  79. <span >
  80. <el-radio-group v-model="payment_type" v-if = "payment_arr">
  81. <el-radio :label="index" v-for="(item,index) in payment_arr" :key="index" @change="qrcode(item)" border>{{item.payment_name}}</el-radio>
  82. </el-radio-group>
  83. </span>
  84. </div>
  85. <div style="margin-left: 67px;" v-show = "is_scan">
  86. <!-- 二维码 -->
  87. <div id="qrcode-info">
  88. <div id="qrcode">
  89. </div>
  90. </div>
  91. <div class="pay-msg">请使用微信扫码支付</div>
  92. </div>
  93. <div v-show = "!is_scan" style="margin-left: 60px;height: 315px;">
  94. <el-button class="topay" type="primary" :loading="btnLoading" @click="topay()">跳转到支付宝支付</el-button>
  95. </div>
  96. <el-button v-show = "is_scan" class="submit" type="primary" :loading="btnLoading" @click="entrysuccess">已完成支付</el-button>
  97. </div>
  98. </template>
  99. </div>
  100. <script>
  101. new Vue({
  102. el: '#app',
  103. data() {
  104. return {
  105. unit:['永久','月','年'],
  106. loading: false,
  107. btnLoading:false,
  108. is_scan:true,
  109. payment_type: 0,
  110. payment_arr:[],
  111. title:'',
  112. pay_data:[],
  113. active: 2,
  114. name:'',
  115. checked:0,
  116. addons:{
  117. price_setting:[{unit: 1, money: 10, duration: 1}],
  118. },
  119. setting_index:'',
  120. };
  121. },
  122. created() {
  123. this.order_id = getQuery('order_id');
  124. this.getList();
  125. },
  126. methods: {
  127. getList() {
  128. request({
  129. params: {
  130. r: 'mall/addons/confirm-pay',
  131. order_id:this.order_id,
  132. },
  133. method: 'get',
  134. }).then(e => {
  135. this.loading = false;
  136. if (e.data.code === 0) {
  137. this.addons = e.data.data
  138. this.title = e.data.data.addons.title;
  139. this.payment_arr = this.addons.extra_info.payment_arr;
  140. if(this.payment_arr[0].payment_way == 'scan'){
  141. this.is_scan = true;
  142. this.createQrcode(this.payment_arr[0].payment_url);
  143. }else{
  144. this.pay_data = this.payment_arr[0];
  145. this.is_scan = false;
  146. }
  147. } else {
  148. this.$message.error(e.data.msg);
  149. }
  150. }).catch(e => {
  151. });
  152. },
  153. qrcode(data){
  154. this.pay_data = data;
  155. if(data.payment_way =='scan'){
  156. this.is_scan = true;
  157. this.createQrcode(data.payment_url);
  158. }else {
  159. this.is_scan = false;
  160. }
  161. },
  162. topay(){
  163. if(this.pay_data.payment_way =='navigate'){
  164. window.open(this.pay_data.payment_url, '_self')
  165. }
  166. },
  167. createQrcode(url){
  168. let qrcodeInfo = document.getElementById("qrcode-info");
  169. document.getElementById("qrcode").remove(); //删除生成的二维码
  170. let addCodeDom = document.createElement("div");
  171. addCodeDom.setAttribute("id", "qrcode");
  172. addCodeDom.setAttribute("style", "width:200px; height:200px;");
  173. qrcodeInfo.appendChild(addCodeDom) //添加标签
  174. let qrCodeDom = document.getElementById("qrcode");
  175. var qrcode = new QRCode(qrCodeDom, {
  176. width: 200,
  177. height: 200,
  178. });
  179. qrcode.makeCode(url);
  180. // 获取二维码生成的图片信息
  181. return new Promise((req, rej) => {
  182. setTimeout(() => {
  183. src = qrCodeDom.getElementsByTagName("img")[0].src;
  184. req(src);
  185. }, 200);
  186. })
  187. },
  188. saveAddForm(){
  189. },
  190. entrysuccess() {
  191. navigateTo({r: 'mall/addons/confirm-success',order_id:this.order_id});
  192. }
  193. }
  194. });
  195. </script>