Home  >  Article  >  Web Front-end  >  How to implement WeChat payment for H5 page payment with built-in browser_javascript skills

How to implement WeChat payment for H5 page payment with built-in browser_javascript skills

WBOY
WBOYOriginal
2016-05-16 15:38:071468browse

Due to project requirements, WeChat payment needs to be added to the H5 page, so I tried it. I just want to say that it is really tricky, especially when debugging is inconvenient

This is the official API document of WeChat WeChat API

Preparation for WeChat payment

Apply for a public account and activate payment. This is very simple. Just use Baidu yourself
After applying, configure the "Payment Authorization Directory", "Test Authorization Directory", and "Test Whitelist" on the "Development Configuration" tab in the "WeChat Payment" page of the WeChat public platform page
Find "AppID (Application ID)" and "AppSecret (Application Key)" in the "Developer Center" on the WeChat public platform page
Find the merchant number assigned by WeChat payment in the merchant platform, and configure a merchant payment key

Specific steps

First, obtain the prepay_id for payment through the WeChat payment api. Here you need to use the above-mentioned "AppID (application ID)", "AppSecret (application key)", "merchant number assigned by WeChat payment", " "Merchant Payment Key" and some other parameters (please refer to the WeChat development documentation for details) are encrypted into a signature using MD5 (the first signature). After obtaining the prepay_id, use prepay_id and some other parameters (please refer to the WeChat development documentation for details) to encrypt it into a signature using MD5. (Second signature) Then on the front end, use the js API provided by WeChat’s built-in browser, WeixinJSBridge.invoke, to call the pop-up page of WeChat payment. Here you need to use the second signature above

The specific code is as follows

$.get('/xxx',function(data){
 if(data && data !== ""){
  var _data = $.parseJSON(data)[0];
  if(parseInt(_data.userAgent) < 5){
  alert('您的微信版本低于5.0,无法使用微信支付!');
  return false;
  }
  WeixinJSBridge.invoke('getBrandWCPayRequest',{
  'appId': _data.appId,
  'timeStamp': _data.timeStamp,
  'nonceStr': _data.nonceStr,
  'package': 'prepay_id=' + _data.packageOne,
  'signType': _data.signType,
  'paySign': _data.paySign
  },function(res){
   if(res.err_msg === 'get_brand_wcpay_request:ok'){
   alert('支付成功,返回订单列表!');
   }else if(res.err_msg === 'get_brand_wcpay_request:cancel'){
   alert('取消支付!');
   }
  });

 }
});

A few easy failure points need attention

The payment link does not match the link configured on the development platform

A total of 2 signatures are required, and the required parameters are different. The signature used in JS is the second signature. Don’t confuse the parameters and pass them correctly

If there are Chinese characters in the body that need to be escaped, there are still some problems that have not been completely solved, that is, there is no time to judge the validity of location payment. If the pop-up layer of WeChat payment stays for too long, the order may be on our website. It has expired, but the payment can still be successful in WeChat payment. If anyone knows how to solve this problem, I hope they can tell you the solution

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn