214 lines
5.5 KiB
Markdown
214 lines
5.5 KiB
Markdown
# yii2-easy-wechat
|
||
|
||
> 基于最新的 overtrue/wechat 4.x
|
||
|
||
由于 [max-wen/yii2-easy-wechat](https://github.com/max-wen/yii2-easy-wechat) 不支持 EasyWechat 4.x 所以建立该项目
|
||
|
||
WeChat SDK for Yii2 , 基于 [overtrue/wechat](https://github.com/overtrue/wechat).
|
||
这个扩展可以简单的用yii2的方式去调用EasyWechat: `Yii::$app->wechat`.
|
||
|
||
[![Latest Stable Version](https://poser.pugx.org/jianyan74/yii2-easy-wechat/v/stable)](https://packagist.org/packages/jianyan74/yii2-easy-wechat)
|
||
[![Total Downloads](https://poser.pugx.org/jianyan74/yii2-easy-wechat/downloads)](https://packagist.org/packages/jianyan74/yii2-easy-wechat)
|
||
[![License](https://poser.pugx.org/jianyan74/yii2-easy-wechat/license)](https://packagist.org/packages/jianyan74/yii2-easy-wechat)
|
||
|
||
## 安装
|
||
```
|
||
composer require jianyan74/yii2-easy-wechat
|
||
```
|
||
|
||
## 配置
|
||
|
||
添加 SDK 到Yii2的 `config/main.php` 的 `component`:
|
||
|
||
```php
|
||
|
||
'components' => [
|
||
// ...
|
||
'wechat' => [
|
||
'class' => 'jianyan\easywechat\Wechat',
|
||
'userOptions' => [], // 用户身份类参数
|
||
'sessionParam' => 'wechatUser', // 微信用户信息将存储在会话在这个密钥
|
||
'returnUrlParam' => '_wechatReturnUrl', // returnUrl 存储在会话中
|
||
'rebinds' => [ // 自定义服务模块
|
||
// 'cache' => 'common\components\Cache',
|
||
]
|
||
],
|
||
// ...
|
||
]
|
||
```
|
||
|
||
设置基础配置信息和微信支付信息到 `config/params.php`:
|
||
```php
|
||
// 微信配置 具体可参考EasyWechat
|
||
'wechatConfig' => [],
|
||
|
||
// 微信支付配置 具体可参考EasyWechat
|
||
'wechatPaymentConfig' => [],
|
||
|
||
// 微信小程序配置 具体可参考EasyWechat
|
||
'wechatMiniProgramConfig' => [],
|
||
|
||
// 微信开放平台第三方平台配置 具体可参考EasyWechat
|
||
'wechatOpenPlatformConfig' => [],
|
||
|
||
// 微信企业微信配置 具体可参考EasyWechat
|
||
'wechatWorkConfig' => [],
|
||
|
||
// 微信企业微信开放平台 具体可参考EasyWechat
|
||
'wechatOpenWorkConfig' => [],
|
||
|
||
// 微信小微商户 具体可参考EasyWechat
|
||
'wechatMicroMerchantConfig' => [],
|
||
```
|
||
|
||
配置文档
|
||
|
||
[微信配置说明文档.](https://www.easywechat.com/docs/master/official-account/configuration)
|
||
[微信支付配置说明文档.](https://www.easywechat.com/docs/master/payment/jssdk)
|
||
[微信小程序配置说明文档.](https://www.easywechat.com/docs/master/mini-program/index)
|
||
[微信开放平台第三方平台](https://www.easywechat.com/docs/master/open-platform/index)
|
||
[企业微信](https://www.easywechat.com/docs/master/wework/index)
|
||
[企业微信开放平台](https://www.easywechat.com/docs/master/open-work/index)
|
||
[小微商户](https://www.easywechat.com/docs/master/micro-merchant/index)
|
||
|
||
## 使用例子
|
||
|
||
|
||
微信网页授权+获取当前用户信息
|
||
|
||
```php
|
||
if (Yii::$app->wechat->isWechat && !Yii::$app->wechat->isAuthorized()) {
|
||
return Yii::$app->wechat->authorizeRequired()->send();
|
||
}
|
||
|
||
// 获取微信当前用户信息方法一
|
||
Yii::$app->session->get('wechatUser')
|
||
|
||
// 获取微信当前用户信息方法二
|
||
Yii::$app->wechat->user
|
||
```
|
||
获取微信SDK实例
|
||
|
||
```php
|
||
$app = Yii::$app->wechat->app;
|
||
```
|
||
获取微信支付SDK实例
|
||
|
||
```php
|
||
$payment = Yii::$app->wechat->payment;
|
||
```
|
||
获取微信小程序实例
|
||
|
||
```php
|
||
$miniProgram = Yii::$app->wechat->miniProgram;
|
||
```
|
||
|
||
获取微信开放平台第三方平台实例
|
||
|
||
```php
|
||
$openPlatform = Yii::$app->wechat->openPlatform;
|
||
```
|
||
|
||
获取企业微信实例
|
||
|
||
```php
|
||
$work = Yii::$app->wechat->work;
|
||
```
|
||
|
||
获取微信企业微信开放平台
|
||
|
||
```php
|
||
$work = Yii::$app->wechat->openWork;
|
||
```
|
||
|
||
获取微信小微商户
|
||
|
||
```php
|
||
$microMerchant = Yii::$app->wechat->microMerchant;
|
||
```
|
||
|
||
|
||
微信支付(JsApi):
|
||
|
||
```php
|
||
// 支付参数
|
||
$orderData = [
|
||
'openid' => '.. '
|
||
// ... etc.
|
||
];
|
||
|
||
// 生成支付配置
|
||
$payment = Yii::$app->wechat->payment;
|
||
$result = $payment->order->unify($orderData);
|
||
if ($result['return_code'] == 'SUCCESS') {
|
||
$prepayId = $result['prepay_id'];
|
||
$config = $payment->jssdk->sdkConfig($prepayId);
|
||
} else {
|
||
throw new yii\base\ErrorException('微信支付异常, 请稍后再试');
|
||
}
|
||
|
||
return $this->render('wxpay', [
|
||
'jssdk' => $payment->jssdk, // $app通过上面的获取实例来获取
|
||
'config' => $config
|
||
]);
|
||
|
||
```
|
||
|
||
JSSDK发起支付
|
||
```
|
||
<script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js" type="text/javascript" charset="utf-8"></script>
|
||
<script type="text/javascript" charset="utf-8">
|
||
//数组内为jssdk授权可用的方法,按需添加,详细查看微信jssdk的方法
|
||
wx.config(<?php echo $jssdk->buildConfig(array('chooseWXPay'), true) ?>);
|
||
// 发起支付
|
||
wx.chooseWXPay({
|
||
timestamp: <?= $config['timestamp'] ?>,
|
||
nonceStr: '<?= $config['nonceStr'] ?>',
|
||
package: '<?= $config['package'] ?>',
|
||
signType: '<?= $config['signType'] ?>',
|
||
paySign: '<?= $config['paySign'] ?>', // 支付签名
|
||
success: function (res) {
|
||
// 支付成功后的回调函数
|
||
}
|
||
});
|
||
</script>
|
||
```
|
||
|
||
### 智能提示
|
||
|
||
如果你需要编辑器(PhpStorm等)的智能提示来使用`Yii::$app->wechat`,可以在`yii\base\Application`中加入:
|
||
```
|
||
<?php
|
||
|
||
namespace yii\base;
|
||
|
||
use Yii;
|
||
|
||
/**
|
||
*
|
||
* @property \jianyan\easywechat\Wechat $wechat 加入这一行即可实现编辑器智能提示.
|
||
*
|
||
* @author Qiang Xue <qiang.xue@gmail.com>
|
||
* @since 2.0
|
||
*/
|
||
abstract class Application extends Module
|
||
{
|
||
|
||
}
|
||
```
|
||
|
||
### 更多的文档
|
||
|
||
[EasyWeChat Docs](https://www.easywechat.com/docs/master).
|
||
|
||
### 实例
|
||
|
||
[RageFrame](https://github.com/jianyan74/rageframe2)
|
||
|
||
### 问题反馈
|
||
|
||
在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流
|
||
|
||
QQ群:[655084090](https://jq.qq.com/?_wv=1027&k=4BeVA2r)
|
||
|