index.blade.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>微信安全支付</title>
  8. <style>
  9. * {
  10. padding: 0;
  11. margin: 0;
  12. }
  13. html,
  14. body {
  15. height: 100%;
  16. position: relative;
  17. }
  18. .banner {
  19. width: 100%;
  20. height: 67.4vw;
  21. display: block;
  22. }
  23. .tip {
  24. display: -webkit-box;
  25. display: -ms-flexbox;
  26. display: flex;
  27. -webkit-box-align: center;
  28. -ms-flex-align: center;
  29. align-items: center;
  30. -webkit-box-orient: horizontal;
  31. -webkit-box-direction: normal;
  32. -ms-flex-direction: row;
  33. flex-direction: row;
  34. -webkit-box-pack: start;
  35. -ms-flex-pack: start;
  36. justify-content: flex-start;
  37. font-size: 16px;
  38. color: #808080;
  39. padding: 25px 12px;
  40. }
  41. .tip img {
  42. width: 1em;
  43. margin-right: 20px;
  44. }
  45. .btn{
  46. background-color: #4ac22b;
  47. border-radius: 5px;
  48. text-align: center;
  49. font-size: 18px;
  50. height: 50px;
  51. line-height: 50px;
  52. margin: 0 12px;
  53. color: #fff;
  54. }
  55. .support{
  56. position: absolute;
  57. width: 100%;
  58. bottom: 1.5em;
  59. left: 0;
  60. text-align: center;
  61. color: #999;
  62. font-size: 14px;
  63. }
  64. </style>
  65. </head>
  66. <body>
  67. <img class="banner" src="https://cdn-novel.iycdm.com/static/img/paybackground.jpg">
  68. <div class="tip">
  69. <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACUAAAAlCAYAAADFniADAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkRGMTc3MzdBRTIyOTExRTdCNzQ4RTY5NDZDOTI5OUE3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkRGMTc3MzdCRTIyOTExRTdCNzQ4RTY5NDZDOTI5OUE3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6REYxNzczNzhFMjI5MTFFN0I3NDhFNjk0NkM5Mjk5QTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6REYxNzczNzlFMjI5MTFFN0I3NDhFNjk0NkM5Mjk5QTciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4Qn0ZAAAABpklEQVR42uzYz0vCYBgH8K9jdnEY1sHDCCHEgl2kY4fO/RcF0SUIhX4RdgnpVlG36C+JLkF06CAlgQkRgchYJhHFdOYsel+ZMMRsjrXXw/uFB7bDeD57946NJ2AYBgqFQhBAmlSKlAz/o5I6JnWkKIoZyOVyI+TkgVQM7FMilRCt1YlJkgRZliGKou+SVqsFVVWh6zpdmJRgoZiBaGhf2t/KmtDZQ6xAdpiVqIAhDEdxFEd5Gd38wGXlDM3vz+FAvTVfsXW7iMNiBtfVC/YoCtrJL0OtlzARmsTM2CxbVDdoL3kKKRhmh+oFCgcj3m30q5dzlGtPvoAcoUq1R+zfb2PjZgHF9/y/gxyhYqE45qLzaHzVsXu32hdmB9Hr3IAcP770dPZPWDcomzxxBXKMEgJCX5iXoIHevt9gXoPaP3wD3YEFo6GfDAqLjIxDM8qegQZG9YJpRt1TkCuUHTZKENXGM1amMp6BXKM6sKX4Ov+f4iiO4ig/UGpnHMMytv4ViqITtPZ8iBXMNM12fysHQznJExRFadIDUpukNEYYzeqfoJ4fAQYAz8zjeuE3n/8AAAAASUVORK5CYII=">
  70. <p>已开启支付安全</p>
  71. </div>
  72. <div class="btn" onclick="onBridgeReady()">
  73. 确认支付
  74. </div>
  75. <p class="support">支付安全由中国人民财产保险股份有限公司承保</p>
  76. <script>
  77. function onBridgeReady(){
  78. WeixinJSBridge.invoke(
  79. 'getBrandWCPayRequest', {
  80. "appId":"{{ $pay_info['appId'] }}", //公众号名称,由商户传入
  81. "timeStamp":"{{ $pay_info['timeStamp'] }}", //时间戳,自1970年以来的秒数
  82. "nonceStr":"{{ $pay_info['nonceStr'] }}", //随机串
  83. "package":"{{ $pay_info['package'] }}",
  84. "signType":"{{ $pay_info['signType'] }}", //微信签名方式:
  85. "paySign":"{{ $pay_info['paySign'] }}" //微信签名
  86. },
  87. function(res){
  88. // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。
  89. if(res.err_msg == "get_brand_wcpay_request:ok" ) {
  90. //alert('支付成功,点击跳转回去');
  91. window.location.href = "{!! $pay_info['pay_wait_url'] !!}";
  92. } else{
  93. var str = JSON.stringify(res);
  94. var appid = "{{ $pay_info['appId'] }}"
  95. var pay_order = "{{ $pay_order }}"
  96. var rand = Math.random();
  97. var temp_str = appid+','+pay_order+','+rand;
  98. postError('onBridgeReady Error,'+str+','+temp_str);
  99. }
  100. }
  101. );
  102. }
  103. if (typeof WeixinJSBridge == "undefined"){
  104. if( document.addEventListener ){
  105. document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
  106. }else if (document.attachEvent){
  107. document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
  108. document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
  109. }
  110. }else{
  111. onBridgeReady();
  112. }
  113. function postError(data) {
  114. try{
  115. var xhr = new XMLHttpRequest();
  116. xhr.open("POST", '/pay/reportError', true);
  117. xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  118. xhr.send('data='+data);
  119. }catch (Error){
  120. alert('sys error');
  121. }
  122. }
  123. </script>
  124. </body>
  125. </html>