【问题标题】:Get balance of Paypal account获取Paypal账户余额
【发布时间】:2011-12-09 15:02:19
【问题描述】:

有没有一种方法可以安全地查询我的贝宝帐户并检索我帐户中的总余额?我想这样做是为了创建一个“我们的每月配额有 y 中的 x”类型的东西。

【问题讨论】:

    标签: php api paypal


    【解决方案1】:

    这是一个您可以使用的示例帮助类:

    <?php
    
    class Paypal
    {
        /**
         * API Version
         */
        const VERSION = 51.0;
    
        /**
         * List of valid API environments
         * @var array
         */
        private $allowedEnvs = array(
            'beta-sandbox',
            'live',
            'sandbox'
        );
    
        /**
         * Config storage from constructor
         * @var array
         */
        private $config = array();
    
        /**
         * URL storage based on environment
         * @var string
         */
        private $url;
    
        /**
         * Build PayPal API request
         * 
         * @param string $username
         * @param string $password
         * @param string $signature
         * @param string $environment
         */
        public function __construct($username, $password, $signature, $environment = 'live')
        {
            if (!in_array($environment, $this->allowedEnvs)) {
                throw new Exception('Specified environment is not allowed.');
            }
            $this->config = array(
                'username'    => $username,
                'password'    => $password,
                'signature'   => $signature,
                'environment' => $environment
            );
        }
    
        /**
         * Make a request to the PayPal API
         * 
         * @param  string $method API method (e.g. GetBalance)
         * @param  array  $params Additional fields to send in the request (e.g. array('RETURNALLCURRENCIES' => 1))
         * @return array
         */
        public function call($method, array $params = array())
        {
            $fields = $this->encodeFields(array_merge(
                array(
                    'METHOD'    => $method
                    'VERSION'   => self::VERSION,
                    'USER'      => $this->config['username'],
                    'PWD'       => $this->config['password'],
                    'SIGNATURE' => $this->config['signature']
                ),
                $params
            ));
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $this->getUrl());
            curl_setopt($ch, CURLOPT_POST, count($fields));
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $response = curl_exec($ch);
            if (!$response) {
                throw new Exception('Failed to contact PayPal API: ' . curl_error($ch) . ' (Error No. ' . curl_errno($ch) . ')');
            }
            curl_close($ch);
            parse_str($response, $result);
            return $this->decodeFields($result);
        }
    
        /**
         * Prepare fields for API
         * 
         * @param  array  $fields
         * @return array
         */
        private function encodeFields(array $fields)
        {
            return array_map('urlencode', $fields);
        }
    
        /**
         * Make response readable
         * 
         * @param  array  $fields
         * @return array
         */
        private function decodeFields(array $fields)
        {
            return array_map('urldecode', $fields);
        }
    
        /**
         * Get API url based on environment
         * 
         * @return string
         */
        private function getUrl()
        {
            if (is_null($this->url)) {
                switch ($this->config['environment']) {
                    case 'sandbox':
                    case 'beta-sandbox':
                        $this->url = "https://api-3t.$environment.paypal.com/nvp";
                        break;
                    default:
                        $this->url = 'https://api-3t.paypal.com/nvp';
                }
            }
            return $this->url;
        }
    }
    

    并且可以像这样使用:

    <?php
    
    include 'Paypal.php';
    $paypal = new Paypal('username', 'password', 'signature');
    
    $response = $paypal->call('GetBalance');
    
    print_r($response);
    

    更多

    【讨论】:

    • 这仅返回主要货币。必须添加 RETURNALLCURRENCIES=1 以请求字符串以获取所有余额。
    • 我想通过paypal登录付款,我该怎么办?
    猜你喜欢
    • 2014-01-01
    • 1970-01-01
    • 2015-09-29
    • 2015-11-01
    • 2018-01-20
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多