微信实现不关注也能微信支付

时间:2024-02-17 22:09:26

需要再次补充,若多个公众号,实现同一个商户支付情况下,此方法即可实现 

第一步:思维导图

对上图的(1)进行说明:

到官网下站sdk代码。本例是php代码

官网代码:

public function wxget() {
        //非微信环境下不允许使用此方法
        if(!is_wechat_browser()) {
            return false;
        }
        //当在微信环境中
        if(!isset($_GET[\'getid\']) && !$_SESSION[\'openid\']) { if(isset($_SESSION[\'user_id\'])) {
                $openid = users::load()->get_openid($_SESSION[\'user_id\']);
                $redirect_url = urlencode(\'http://\' . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'PHP_SELF\'] .
                        \'?\'. $_SERVER[\'QUERY_STRING\']);//记住当前所浏览的页面,返回时用到
                if(empty($openid)) {
                    $target_url = \'http://mpweixin.xx.com/wxget.php?url=\' . $redirect_url;
                    ecs_header(\'Location:\' . $target_url);
                }
            }
        }
        //接受到的数据。
        elseif(isset($_GET[\'getid\']) && isset ($_GET[\'nonce\']) && isset ($_GET[\'sign\'])) {
            $key = \'密钥\';$data = array(
                \'getid\' => trim($_GET[\'getid\']),
                \'nonce\' => trim($_GET[\'nonce\']),
                \'sign\' => trim($_GET[\'sign\']),                
            );
            $bool = encryController::load()->checkSignByUrl($data, $key);//验证单向散列签名
            if($bool) {
                $_SESSION[\'openid\'] = $data[\'getid\'];
            } else {
                unset($_SESSION[\'openid\']);
            }
        }        
    }

授权回调页面域名下的网站代码

$openid = openidController::load()->getOpenid();//获取sdk里的openid
if(isset($_GET[\'url\'])) {//判断是否带url
    $url = trim($_GET[\'url\']);
    if(strpos($url, \'?\') !== 0) {
        $url .= \'&getid=\' . $openid;
    } else {
        $url .= \'?getid=\' . $openid;
    }
} else {
    $url = \'http://您的官网地址/index.php?getid=\' . $openid;    
}
//进行签名
$url = openidController::load()->addSignUrl($url);//进行单向散列算法,生成一个签名
//返回的格式url为:http://您的官网/wx.php?getid=oZi2Qw1buSdPX6nY2YxudKBGG66E&nonce=h4280t9laf13k051fm271u029xd5ruux&sign=cbb6aec43085031ec3c4ad167b1c20c6
header(\'Location:\'. $url);//带着openid跳回官网