pay.html 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>支付测试页</title>
  6. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
  7. <script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
  8. </head>
  9. <body>
  10. <div>点击如下按钮,发起支付的测试</div>
  11. <div>
  12. <button id="wx_pub">微信公众号</button>
  13. </div>
  14. </body>
  15. <script>
  16. let shopOrderId = undefined;
  17. let payOrderId = undefined;
  18. let server = 'http://127.0.0.1:28080';
  19. $(function() {
  20. // 获得 JsapiTicket
  21. // 参考 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 文档
  22. $.ajax({
  23. url: server + "/api/wx/mp/create-jsapi-signature?url=" + document.location.href,
  24. method: 'POST',
  25. success: function( result ) {
  26. if (result.code !== 0) {
  27. alert('获取 JsapiTicket 失败,原因:' + result.msg)
  28. return;
  29. }
  30. var jsapiTicket = result.data;
  31. jsapiTicket.jsApiList = ['chooseWXPay'];
  32. jsapiTicket.debug = false;
  33. // 初始化 JS
  34. wx.config(jsapiTicket);
  35. }
  36. });
  37. // 自动发起商城订单编号
  38. $.ajax({
  39. url: server + "/api/shop/order/create",
  40. method: 'POST',
  41. success: function( result ) {
  42. if (result.code !== 0) {
  43. alert('创建商城订单失败,原因:' + result.msg)
  44. return;
  45. }
  46. shopOrderId = result.data.id;
  47. payOrderId = result.data.payOrderId;
  48. console.log("商城订单:" + shopOrderId)
  49. console.log("支付订单:" + payOrderId)
  50. }
  51. })
  52. })
  53. // 微信公众号
  54. $( "#wx_pub").on( "click", function() {
  55. if (typeof WeixinJSBridge == "undefined") {
  56. if (document.addEventListener) {
  57. document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
  58. } else if (document.attachEvent) {
  59. document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
  60. document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
  61. }
  62. } else {
  63. onBridgeReady()
  64. }
  65. function onBridgeReady() {
  66. $.ajax({
  67. url: server + "/api/pay/order/submit",
  68. method: 'POST',
  69. dataType: "json",
  70. contentType: "application/json",
  71. data: JSON.stringify({
  72. "id": payOrderId,
  73. "channelCode": 'wx_pub',
  74. }),
  75. success: function( result ) {
  76. if (result.code !== 0) {
  77. alert('提交支付订单失败,原因:' + result.msg)
  78. return;
  79. }
  80. alert('开始调用微信支付');
  81. let data = result.data.invokeResponse;
  82. wx.chooseWXPay({
  83. timestamp: data.timeStamp,
  84. nonceStr: data.nonceStr,
  85. package: data.package,
  86. signType: data.signType,
  87. paySign: data.paySign,
  88. success: function (res) {
  89. alert(JSON.stringify(res));
  90. },
  91. error: function(e) {
  92. alert(JSON.stringify(e));
  93. }
  94. });
  95. }
  96. })
  97. }
  98. });
  99. </script>
  100. </html>