Call.php 3.39 KB
<?php

namespace Plugin\Partner\Alipay;

use Plugin\Partner\Factory;

define('TB_CLASS_PATH', dirname(__FILE__).'/class');
require TB_CLASS_PATH . '/lib/alipay.function.php';
require TB_CLASS_PATH . '/AlipaySubmit.class.php';
require TB_CLASS_PATH . '/AlipayNotify.class.php';

/**
 * 支付宝快捷的调用接口
 * 
 * @name Call
 * @package Plugin/Partner/alipay
 * @copyright yoho.inc
 * @version 1.0 (2015-10-10 17:56:42)
 * @author fei.hong <fei.hong@yoho.cn>
 */
class Call extends Factory
{
    protected $alipaySubmit;
    protected $alipayNotify;
    
    /**
     * 初始化
     */
    protected function init()
    {
        $this->alipaySubmit = new \AlipaySubmit($this->apiConfig);
        $this->alipayNotify = new \AlipayNotify($this->apiConfig);
    }
    
    /**
     * 获取授权URL
     *
     * @return string
     */
    public function getAuthorizeUrl()
    {
        $parameter = array(
            'service' => 'alipay.auth.authorize',
            'partner' => $this->apiConfig['partner'],
            'target_service' => 'user.auth.quick.login',
            'return_url' => $this->apiConfig['return_url'],
            'anti_phishing_key'	=> $this->alipaySubmit->query_timestamp(),
            'exter_invoke_ip' => '',
            '_input_charset' => $this->apiConfig['input_charset']
        );
        
        echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>支付宝快捷登录</title></head><body>',
                 $this->alipaySubmit->buildRequestForm($parameter, 'get'), 
             '</body></html>'; 
        exit();
    }
    
    /**
     * 获取授权的TOKEN
     *
     * @return array
     */
    public function getAccessToken()
    {
        $token = array();
        
        $verify = $this->alipayNotify->verifyReturn();
        if ($verify)
        {
            $token['access_token'] = isset($_GET['token']) ? $_GET['token'] : null;
            $token['user_id'] = isset($_GET['user_id']) ? $_GET['user_id'] : null;
        }
        
        return $token;
    }
    
    /**
     * 获取当前用户的基本资料
     *
     * @param array $token  授权成功的TOKEN, 默认为NULL
     * @return array
     */
    public function getUserInfo($token)
    {
        $parameter = array(
            '_input_charset' => $this->apiConfig['input_charset'],
            'service' => 'mobile.common.login.userInfo.query',
            'partner' => $this->apiConfig['partner'],
            'token' => $token,
            'timestamp' => date('Y-m-d H:i:s'),
        );
        $result = $this->alipaySubmit->getUserInfoByToken($parameter, $token);

        return $result;
    }
    
    /**
     * 获取当前用户的偶像(关注)列表
     *
     * 备注:此接口暂未开放
     * 
     * @param array $token  访问令牌
     * @param array $params  参数列表
     * @return array
     */
    public function getFriends($token, $params)
    {
        return array();
    }
    
    /**
     * 同步分享
     *
     * 备注:此接口暂未开放
     *
     * @param object $token  访问令牌
     * @param String $image  新鲜事图片地址
     * @param String $content  新鲜事主体内容 注意:最多200个字符。
     * @param String $link  新鲜事标题和图片指向的链接
     * @return Long 发布新鲜事的ID
     */
    public function syncShare($token, $content, $image, $link)
    {
        return true;
    }
    
}