leven/wechat-bundle

symfony wechat bundle

dev-master 2016-04-08 12:53 UTC

This package is not auto-updated.

Last update: 2024-09-20 17:35:15 UTC


README

A: 下载Bundle

打开命令行,进入你的项目目录,并执行以下命令以下载此Bundle的最新稳定版本

$ composer require lilocon/wechat-bundle

此命令要求你全局安装了Composer,具体请参阅Composer文档的安装章节

Easywechat

关于安装和部署Easywechat的说明,请参考这里

B: 启用Bundle

然后,通过在项目的app/AppKernel.php文件中添加以下行来启用Bundle

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Lilocon\WechatBundle\LiloconWechatBundle(),
        );

        // ...
    }
}

C: 创建你的用户类

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Lilocon\WechatBundle\Model\WechatUserInterface;

/**
 * WechatUser
 *
 * @ORM\Table(name="wechat_user")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\WechatUserRepository")
 */
class WechatUser implements WechatUserInterface
{

    static $sex_choices = array(
        0 => '未知',
        1 => '',
        2 => '',
    );

    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="openid", type="string", length=255, unique=true)
     */
    private $openid;

    /**
     * @var string
     *
     * @ORM\Column(name="nickname", type="string", length=255)
     */
    private $nickname;

    /**
     * @var string
     *
     * @ORM\Column(name="sex", type="string", length=255)
     */
    private $sex;

    /**
     * @var string
     *
     * @ORM\Column(name="province", type="string", length=255)
     */
    private $province;

    /**
     * @var string
     *
     * @ORM\Column(name="city", type="string", length=255)
     */
    private $city;

    /**
     * @var string
     *
     * @ORM\Column(name="country", type="string", length=255)
     */
    private $country;

    /**
     * @var string
     *
     * @ORM\Column(name="avatar", type="string", length=255)
     */
    private $avatar;


    /**
     * Get id
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set openid
     *
     * @param string $openid
     *
     * @return WechatUser
     */
    public function setOpenid($openid)
    {
        $this->openid = $openid;

        return $this;
    }

    /**
     * Get openid
     *
     * @return string
     */
    public function getOpenid()
    {
        return $this->openid;
    }

    /**
     * Set nickname
     *
     * @param string $nickname
     *
     * @return WechatUser
     */
    public function setNickname($nickname)
    {
        $this->nickname = $nickname;

        return $this;
    }

    /**
     * Get nickname
     *
     * @return string
     */
    public function getNickname()
    {
        return $this->nickname;
    }

    /**
     * Set sex
     *
     * @param string $sex
     *
     * @return WechatUser
     */
    public function setSex($sex)
    {
        $this->sex = $sex;

        return $this;
    }

    /**
     * Get sex
     *
     * @return string
     */
    public function getSex()
    {
        return $this->sex;
    }

    /**
     * Set province
     *
     * @param string $province
     *
     * @return WechatUser
     */
    public function setProvince($province)
    {
        $this->province = $province;

        return $this;
    }

    /**
     * Get province
     *
     * @return string
     */
    public function getProvince()
    {
        return $this->province;
    }

    /**
     * Set city
     *
     * @param string $city
     *
     * @return WechatUser
     */
    public function setCity($city)
    {
        $this->city = $city;

        return $this;
    }

    /**
     * Get city
     *
     * @return string
     */
    public function getCity()
    {
        return $this->city;
    }

    /**
     * Set country
     *
     * @param string $country
     *
     * @return WechatUser
     */
    public function setCountry($country)
    {
        $this->country = $country;

        return $this;
    }

    /**
     * Get country
     *
     * @return string
     */
    public function getCountry()
    {
        return $this->country;
    }

    /**
     * Set avatar
     *
     * @param string $avatar
     *
     * @return WechatUser
     */
    public function setAvatar($avatar)
    {
        $this->avatar = $avatar;

        return $this;
    }

    /**
     * Get avatar
     *
     * @return string
     */
    public function getAvatar()
    {
        return $this->avatar;
    }

    public function load(array $data)
    {
        $this->setOpenid($data['openid']);
        $this->setNickname($data['nickname']);
        $this->setSex($data['sex']);
        $this->setProvince($data['province']);
        $this->setCity($data['city']);
        $this->setCountry($data['country']);
        $this->setAvatar($data['headimgurl']);
    }

    public function __toString()
    {
        return $this->getNickname();
    }
}

D: Bundle基本配置

#app/config/config.yml
lilocon_wechat:
    app_id: "%app_id%"
    app_secret: "%app_secret%"
    token: "%token%"
    cache_provider_id: wechat_cache
    user_class: AppBundle\Entity\WechatUser
    alias: wechat_sdk
    payment:
        merchant_id: %merchant_id%
        key: %key%
        cert_path: "%kernel.root_dir%/../data/%kernel.environment%/cert/apiclient_cert.pem"
        key_path: "%kernel.root_dir%/../data/%kernel.environment%/cert/apiclient_key.pem"
#app/config/security.yml
security:
    firewalls:
        # ...
        wechat:
            anonymous: ~
            pattern: ^/wechat
            wechat_login:
                authorize_path: /wechat/authorize

    access_control:
        # ...
        - { path: ^/wechat/authorize, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/wechat, roles: ROLE_WECHAT_USER }
    
#app/config/routing.yml
wechat_authorize:
    path: /wechat/authorize

LiloconWechatBundle 使用方法

$sdk = $container->get('wechat_sdk');
$payment = $sdk->payment;