September 2018


If you had done WeChat jssdk before, you would find nothing in the first look at the document. The process is nothing more than a back-end signature, which is returned to the front end.

But I think carefully that there is no value information of the goods, and the H5 page on the public address only returns the signature.

Looking back at the request parameter, I found the clue.

 WeChat order ID

At first, I looked at an arbitrary number of examples that I understood. Prepay_ ID by Unified order interface Returns the parameters in the result

Resume writing logic

Here we are using H5 payment, and the result is returned. Https:// Prepay_ Id=wx151809054027204613d0ca330422xxxxxx&package=287231xxxx

You can only intercept URL and get it. Prepay_ ID by Wx151809054027204613d0ca330422xxxxxx

take Prepay_ ID Send back to the back to sign and return.

 {"code": 1, "MSG": "get WeChat browser payment signature successfully", "data": {"appId": "wx54c4e3c9a7xxxxxx", "timeStamp": "1537007685", "nonceStr": "5b9ce0458db30", "package": "prepay_": "prepay_") Id=wx151809054027204613d0ca330422xxxxxx "," "signType": "MD5", "paySign": "A819D6551E9E3FE62BE612FA96000000", "}}}

Now the front end can be used happily. WeixinJSBridge and JSSDK

Related links:

WeChat H5 tune up payment
WeChat unified order

Appear Invalid signature The wrong situation is really fascinating.

  1. At the very beginning, the document did not need to escape. Later, I saw the error related. EncodeURIComponent ( Location.href.split ([0])
  2. Wx.config () Medium NonceStr When signing with the backend Noncestr Dissimilarity
  3. It is very fascinating to get the description of the URL dynamically. It is not clear whether it is necessary to use the interface provided by the back end to provide the signature or the URL when the front-end initiates the request.

In short, we need to use it. AJAX Signature, front-end needs EncodeURIComponent ( Location.href.split ([0]) The current URL is passed as the parameter to the back-end signature interface. If the backend is PHP, it needs. URLDecode ($) GET['url']) And get it again. Jsapi_ Ticket Signature, return parameter