踩过的微信jsapi支付大坑以及需要注意的点

官方demo大bug
  1. 签名报错

    WxPay.JSAPIPay中获取jsapi支付的参数的GetJsApiParameters方法
    必须写签名生成方法为md5, 否则报错

    官方给的是这样

    ```
    $config = new WxPayConfig();
    $jsapi->SetPaySign($jsapi->MakeSign($config));
    ```
    

    改成下面

    ```
    $jsapi->SetSignType("MD5");   
    $jsapi->SetPaySign($jsapi->MakeSign());    不用传cofig进去, 直接生成签名
    ```
    
微信支付需要注意的点
  1. 回调地址

    $input->SetNotify_url('')    www网址前面要加http, 只写www无法回调
    
  2. 支付过程中要跳转页面, openid要提前获取

    获取openid过程中, 获取code和获取openid方法会跳转页面, 会把get和post收到的数据清空掉
    
    	if (!isset($_GET['code'])){
    		//触发微信返回code码
    		$baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    		$url = $this->_CreateOauthUrlForCode($baseUrl);
    		Header("Location: $url");  //此处跳转会清空数据
    		exit();
    	} else {
    		//获取code码,以获取openid
    	    $code = $_GET['code'];
    		$openid = $this->getOpenidFromMp($code);
    		return $openid;
    	}
    
  3. 公众号和公众平台获取到的openid不一样,
    处理时要用微信公众平台开发获取 UnionID区分开, unionid是唯一的

  4. $input->SetTotal_fee 是以分为单位, 要把价格 * 100

你可能感兴趣的:(微信签名大坑)