wxpay.html 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>充值</title>
  8. <style></style>
  9. </head>
  10. <body>
  11. <div class="vip-container">
  12. <div class="vip-info">
  13. <div class="title">加入AI降临派VIP</div>
  14. <div class="desc">和我们一起探索AI的技术边界</div>
  15. <div class="date">
  16. <span class="oplist" @click="gotoOrderList" v-if="!isIOS">订单记录></span>
  17. <span v-if="isVIP">会员有效期至: {{ expireTime ? dateFormat(expireTime, 'yyyy-MM-dd') : '-'}}</span>
  18. </div>
  19. </div>
  20. <template v-if="isIOS">
  21. <div class="vip-info iosview">
  22. IOS用户若想加入AI降临派,请联系客服。
  23. </div>
  24. <div class="btnview">
  25. <button class="subbtn" open-type="contact" >在线客服</button>
  26. </div>
  27. </template>
  28. <template v-else>
  29. <div class="vip-info vip-rights">
  30. <div class="title-view">
  31. <div class="tabitem" :class="{active: ctype == 1}" @click="ctype = 1">
  32. VIP会员权益
  33. </div>
  34. <div class="tabitem" :class="{active: ctype == 2}" @click="ctype = 2">
  35. AI能量包
  36. </div>
  37. </div>
  38. <div class="recharge-types">
  39. <div class="type-item" v-for="(item, index) in typelist" :class="{active: curIndex === index}" :key="index" @click="changeChargeType(index)">
  40. <div class="p1">{{ item.typename }}</div>
  41. <div class="p-now">{{ item.price }}</div>
  42. <div class="p-op">{{ item.op }}</div>
  43. <div class="p2" :class="{needScale: ctype == 1}">{{ item.desc }}</div>
  44. </div>
  45. </div>
  46. <div class="list" v-if="ctype == 1">
  47. <div class="list-item" v-for="(item, index) in list" :key="index">
  48. {{ item }}
  49. </div>
  50. </div>
  51. <div class="list" v-if="ctype == 2">
  52. <div class="list-item" v-for="(item, index) in list2" :key="index">
  53. {{ item }}
  54. </div>
  55. </div>
  56. </div>
  57. <div class="pay-view">
  58. <div class="pay-btn" @click="handlePay">
  59. 支付
  60. </div>
  61. </div>
  62. </template>
  63. </div>
  64. </body>
  65. <script src="http://res2.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
  66. <script>
  67. let appId = ""; //公众号ID,由商户传入
  68. let timeStamp = ""; //时间戳,自1970年以来的秒数
  69. let nonceStr = ""; //随机串
  70. let package = "";
  71. let signType = ""; //微信签名方式:
  72. let paySign = ""; //微信签名
  73. if (location.search) {
  74. ajax(
  75. "https://api.huiyaohuyu.com/pay/getOrder" + location.search,
  76. (res) => {
  77. let data = JSON.parse(res).data.pay_info;
  78. appId = data.appId;
  79. timeStamp = data.timeStamp;
  80. nonceStr = data.nonceStr;
  81. package = data.package;
  82. signType = data.signType;
  83. paySign = data.paySign;
  84. if (typeof WeixinJSBridge == "undefined") {
  85. if (document.addEventListener) {
  86. document.addEventListener(
  87. "WeixinJSBridgeReady",
  88. onBridgeReady,
  89. false
  90. );
  91. } else if (document.attachEvent) {
  92. document.attachEvent("WeixinJSBridgeReady", onBridgeReady);
  93. document.attachEvent("onWeixinJSBridgeReady", onBridgeReady);
  94. }
  95. } else {
  96. onBridgeReady();
  97. }
  98. }
  99. );
  100. }
  101. function init() {
  102. }
  103. function ajax(url, callback) {
  104. let xhr = new XMLHttpRequest();
  105. xhr.open("GET", url);
  106. xhr.onreadystatechange = function () {
  107. if (xhr.readyState == 4) {
  108. if (xhr.status == 200 || xhr.status == 304) {
  109. callback(xhr.responseText);
  110. } else {
  111. alert("支付失败");
  112. closePage();
  113. }
  114. }
  115. };
  116. xhr.send();
  117. }
  118. function onBridgeReady() {
  119. WeixinJSBridge.invoke(
  120. "getBrandWCPayRequest",
  121. {
  122. appId: appId, //公众号ID,由商户传入
  123. timeStamp: timeStamp, //时间戳,自1970年以来的秒数
  124. nonceStr: nonceStr, //随机串
  125. package: package,
  126. signType: signType, //微信签名方式:
  127. paySign: paySign, //微信签名
  128. },
  129. function (res) {
  130. if (res.err_msg == "get_brand_wcpay_request:ok") {
  131. // 使用以上方式判断前端返回,微信团队郑重提示:
  132. //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
  133. alert("支付成功");
  134. }
  135. closePage();
  136. }
  137. );
  138. }
  139. function closePage() {
  140. var userAgent = navigator.userAgent;
  141. if (
  142. userAgent.indexOf("Firefox") != -1 ||
  143. userAgent.indexOf("Chrome") != -1
  144. ) {
  145. // Firefox或Chrome中关闭
  146. window.location.href = "about:blank";
  147. } else {
  148. window.opener = null;
  149. window.open("", "_self");
  150. window.close();
  151. }
  152. if (WeixinJSBridge) {
  153. // 微信中关闭
  154. wx.closeWindow();
  155. }
  156. }
  157. </script>
  158. </html>