index.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. const api = 'https://game.84game.cn/sdk' // 请求地址
  2. let payParam = ''; appId=""; // 支付参数
  3. let wechatPayId = "";
  4. let query = {}
  5. // 关闭
  6. const closeHandle = () => {
  7. console.log('关闭')
  8. if (query.isGame) {
  9. history.go(-2);
  10. } else {
  11. document.addEventListener('WeixinJSBridgeReady', () => {
  12. WeixinJSBridge.call('closeWindow');
  13. }, false);
  14. WeixinJSBridge.call('closeWindow');
  15. }
  16. }
  17. // 支付
  18. const onBridgeReady = () => {
  19. if (payParam) {
  20. let { package, nonceStr, paySign, signType, timeStamp } = JSON.parse(payParam)
  21. WeixinJSBridge.invoke('getBrandWCPayRequest', {
  22. "appId": appId, //公众号ID,由商户传入 -
  23. "timeStamp": timeStamp, //时间戳,自1970年以来的秒数
  24. "nonceStr": nonceStr, //随机串
  25. "package": `prepay_id=${package.prepay_id}`,
  26. "signType": signType, //微信签名方式:
  27. "paySign": paySign //微信签名
  28. }, res => {
  29. if (res.err_msg == "get_brand_wcpay_request:ok") {
  30. // 使用以上方式判断前端返回,微信团队郑重提示:
  31. // res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
  32. // 跳转支付成功展示页面
  33. // closeHandle()
  34. // window.location.href = window.location.origin + "/html/wechatPay/paySucc.html";
  35. document.getElementById('succ').style.display = 'block'
  36. if (query.isGame) {
  37. document.querySelector('.back').innerText = '返回游戏'
  38. }
  39. } else if (res.err_msg == "get_brand_wcpay_request:fail") {
  40. document.getElementById('tip').style.display = 'block'
  41. document.getElementsByClassName('tipTitle')[0].innerHTML = '该订单已失效,请回复“2”或游戏内重新下单获取最新支付订单';
  42. } else {
  43. console.log("取消支付")
  44. //修改上面生成的预支付订单状态
  45. // cancelPayMoney();
  46. }
  47. });
  48. } else {
  49. document.getElementById('tip').style.display = 'block'
  50. document.getElementsByClassName('tipTitle')[0].innerHTML = '订单异常,请联系客服重新下单';
  51. }
  52. }
  53. window.onload = () => {
  54. let search = window.location.search.replace('?', '')
  55. let obj = {}
  56. search.split('&').forEach(s => {
  57. let arr = s.split('=')
  58. obj[arr[0]] = arr[1]
  59. })
  60. query = obj
  61. if (obj.isGame) {
  62. document.querySelector('.back').innerText = '返回游戏'
  63. document.querySelector('.backNoPay').style.display = 'block'
  64. }
  65. document.getElementById('money').innerHTML = (obj.amount || '8') + '元'
  66. document.getElementById('title').innerHTML = decodeURIComponent(obj.description) || '购买8元档充值'
  67. document.getElementById('orderNo').innerHTML = '订单号:' + (obj.orderId || '2023010711541555400125675')
  68. if (!obj.appId) {
  69. alert('请传入appId')
  70. return
  71. }
  72. if (!obj.code) {
  73. window.location.replace(`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${obj.appId}&redirect_uri=${encodeURIComponent(location.href)}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect`)
  74. } else {
  75. console.log('获取信息====>', obj)
  76. appId = obj.appId
  77. fetch(api + `/api/pay/param/applet?orderId=${obj.orderId}&code=${obj.code}`, {
  78. method: 'GET',
  79. headers: { ['Content-Type']: 'application/json;charset=UTF-8' }
  80. }).then(res => res.json()).then(res => {
  81. if (res.success) {
  82. let { payParam: param } = res.data
  83. payParam = param
  84. if (typeof WeixinJSBridge == "undefined") {
  85. if (document.addEventListener) {
  86. document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
  87. } else if (document.attachEvent) {
  88. document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
  89. document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
  90. }
  91. } else {
  92. //wechatPayId = result.data.wechatPayId;//微信预支付id 用于用户取消支付时,修改生成的预支付订单状态onBridgeReady(result.data.appId,result.data.timeStamp,result.data.nonceStr,result.data.package,result.data.signType,result.data.paySign);
  93. onBridgeReady()
  94. }
  95. } else {
  96. document.getElementById('tip').style.display = 'block'
  97. document.getElementsByClassName('tipTitle')[0].innerHTML = res.msg || '该订单已失效,请回复“2”或游戏内重新下单获取最新支付订单';
  98. }
  99. })
  100. }
  101. }