pingxx伪基于Yii2的封装
最近主要又换Yii2开发了,其实不封装这个也是可以直接用官方那个的,只不过每次都要额外设置key什么的,搜了下,有别的大神写了一个很完善的版本,但是用起来感觉没在Laravel里那么爽,所以就把代码复制过来改了个名。这个版本的优点就是,官方SDK更新了。这边不用更新。 本人比较菜,没写单元测试,有比较在行的朋友帮补一个?
- 在
composer.json
里添加如下内容,并运行composer update
:
{
"require": {
"lyt8384/pingpp-yii2-plus": "dev-master"
}
}
- 在
config/web.php
文件里的components变量下添加配置
'pingpp' => [
'class' => '\lyt8384\pingpp\Pingpp',
'test_secret_key' => 'YOUR-TEST-KEY',
'live_secret_key' => 'YOUR-LIVE-KEY',
'live' => true, //测试时请设置为false
'pub_key_path' => '/path/to/pingpp_rsa_public_key.pem', //该处不填不进行回调验证
'private_key_path' => '/path/to/your_rsa_private_key.pem' //该处不填不进行商家验证
],
use Yii;
class SomeClass extends Controller {
public function someFunction()
{
$pingpp = Yii::$app->pingpp;
$pingpp->Charge->create([
'order_no' => '123456789',
'amount' => '100',
'app' => array('id' => 'app_xxxxxxxxxxxxxx'),
'channel' => 'upacp',
'currency' => 'cny',
'client_ip' => '127.0.0.1',
'subject' => 'Your Subject',
'body' => 'Your Body'
]);
}
}
use Yii;
class SomeClass extends Controller {
public function someFunction()
{
$pingpp = Yii::$app->pingpp;
$pingpp->RedEnvelope->create([
'order_no' => '123456789',
'app' => array('id' => 'APP_ID'),
'channel' => 'wx_pub',
'amount' => 100,
'currency' => 'cny',
'subject' => 'Your Subject',
'body' => 'Your Body',
'extra' => array(
'nick_name' => 'Nick Name',
'send_name' => 'Send Name'
),
'recipient' => 'Openid',
'description' => 'Your Description'
]);
}
}
当Pingpp调用发生错误的时候会return false
,此时调用Yii::$app->pingpp->getError();
返回具体错误内容。
直接调用Yii::$app->pingpp->notice()
,若验证成功,会返回通知的array
结构数据,若失败直接弹出错Http误回Pingpp。并产生一条Warning级别的错误日志。
可以按照 IDE autocompletion for custom components 设置,在Yii.php
扩展的映射下面增加@property \lyt8384\pingpp\Pingpp $pingpp Simple Pingpp wrapper for Yii2
其他使用方法见官方文档PingPlusPlus