微信支付流程总结

1.微信支付需要在微信商户平台设置支付目录  这个支付目录可以设置五个,必须要设置这个否则无法发起支付

 这个域名可以不用写的模块控制器  直接域名加上一个/即可    注意结束一定是以/结束

2.想要发起支付还必须获取到绑定商户平台的微信openid,这个是调起支付的必要参数

需要登录微信公众平台  找到接口权限------->

 

吧网页授权域名修改成你的业务域名即可

3.下载微信官方的sdk 根据需要封装一下

在wxpayconfig里填写参数

在wxpayjsapipay里设置获取用户openid的回调网址 此处注意回调域名必须要与当前页面的url地址一样  如果有拼接参数的地方一定要吧相应的参数拼接上  否则获取不到用户的openid  完成不了支付

public function GetOpenid($resident_code,$open_id)
	{
		//通过code获得openid
		if (!isset($_GET['code'])){
			//触发微信返回code码
			// $baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING']);
			$baseUrl = urlencode('https://********/posthouse/index/index?resident_code='.$resident_code.'&open_id='.$open_id);
			$url = $this->__CreateOauthUrlForCode($baseUrl);
			Header("Location:$url");
			exit();
		} else {
			//获取code码,以获取openid
		    $code = $_GET['code'];
			$openid = $this->getOpenidFromMp($code);
			// var_dump($openid);exit;
			return $openid;
		}
	}

4.生成预支付参数

此处要注意  生成签名需要以上参数  可以使用签名调试工具测试生成的签名是否正确

参与签名参数为:appId、timeStamp、nonceStr、package、signType,请注意参数大小写。

将生成的预支付参数传到前端调起支付

function onBridgeReady(){
   WeixinJSBridge.invoke(
      'getBrandWCPayRequest', {
         "appId":"wx2421b1c4370ec43b",     //公众号名称,由商户传入     
         "timeStamp":"1395712654",         //时间戳,自1970年以来的秒数     
         "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串     
         "package":"prepay_id=u802345jgfjsdfgsdg888",     
         "signType":"MD5",         //微信签名方式:     
         "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 
      },
      function(res){
      if(res.err_msg == "get_brand_wcpay_request:ok" ){
      // 使用以上方式判断前端返回,微信团队郑重提示:
            //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
      } 
   }); 
}
if (typeof WeixinJSBridge == "undefined"){
   if( document.addEventListener ){
       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
       document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
}

如果你支付时遇见问题需要注意的几点

1.后台设置网页授权域名,商户平台设置支付授权目录

2.签名,参数区分大小写,签名校验是回调域名要设置对

猜你喜欢

转载自blog.csdn.net/myzhou2017/article/details/81166898