• 文章只是实现了消费功能。主要的代码清单如下:<?php /** * @link  http://www.360us.net/ * @author dyllen_zhong@qq.com */ class UnionPay { /**  * 支付配置  * @var array  */ public $config = []; /**  * 支付参数,提交到银联对应接口的所有参数  * @var array  */ public $params = []; /**  * 自动提交表单模板  * @var string  */ private $formTemplate = <<<'HTML' <!DOCTYPE HTML&g...
     发布日期: 2015-03-26  分类: PHP  热度: 3805 ℃ 1条评论
  • 闲来无事,把git的基本用法来一遍。配置git,有提供一个git config的命令来做。git的配置文件存放在三个地方:  1、/etc/gitconfig:对所有用户都适用的配置。用git config配置时加上--system参数就是读写的这个文件。  2、~/.gitconfig:只适用于这个用户的配置。git config加上参数--global参数配置它。  3、项目中的.git/config:只对当前项目有效。Windows系统,在用户主目录里面有个.gitconfig文件。置配用户信息就是配置用户名和电子邮件,每次git提交时都会引用这两条信息,说明是谁提交了更新。配置命令如下:git config --global user.name "test" git config -...
     发布日期: 2015-03-18  分类: 其他  热度: 642 ℃ 0条评论
  • 这里讲的是微信开放平台移动应用里面的微信支付功能。开放平台的微信支付和公众号的微信支付是不一样的。然后是我下面的代码仅仅是做了基本的消费功能。基本流程如下:1、获取access token。2、提交预支付订单信息,拿到prepayid。3、组成包括prepayid在内的相关信息数据返回给客户端发起支付请求。在提交预支付订单之前需要先获取到access token才行。这个token是公用的有效期是7200秒。具体获取方法可以看下面的WechatAppPay类。去拿这个access token不是凭公众号的appid和secret去拿而是用微信开放平台移动应用的appid和secret去拿的。这里我写了一些个专门做微信支付的操作的类,有需要的可以拿去参考。下面的代码我都实际测试通过了。开放平台...
     发布日期: 2015-03-03  分类: PHP  热度: 5310 ℃ 10条评论
  • 最近把支付宝、银联和微信支付全都做了一遍,目前做的都还只涉及到消费的功能。做下来感觉就是各个平台的支付流程都是大同小异,签名方式也是一样的。这里主要总结一下微信支付公众号支付的一些东西。微信公众号支付的主要流程如下:1、生成我们自己系统的订单。2、调用微信支付的统一下单接口把订单信息推给微信。3、在第二部会返回一个预支付会话标识,然后凭这个标识用JS去调用支付操作。关于支付页面的url问题,微信要求是最后必须要有“/”,我看到很多文章说不适合MVC结构的程序,我的情况是否定的,MVC结构一样可以。比如url是这个:http://www.example.com/payment/wechatpay/ ,url里面payment是controller,wechatpay是action,这有问题吗?...
     发布日期: 2015-02-28  分类: PHP  热度: 3330 ℃ 3条评论
  • REST和认证 我们在设计REST(Representational State Transfer)风格的Web service API,有一个问题经常要考虑,就是如何设计用户认证的体系(Authentication). 比较传统的做法是首先有一个登陆的API,然后服务器返回一个session ID,后续的操作客户端都必须带上这个session ID,但是这样的,服务就变成了有状态了,不符合REST风格的原则。另外,由于负载均衡的存在,必须有公共存储来保存用户的Session,这也增加了系统的复杂度。 所以比较好的做法是每次都传递认证信息,这样系统就是无状态的,当然由于每次都需要认证,必然降低了一些效率,必要的时候要考虑缓存用户信息在服务器端。 有几点要注意: 1、密码不能传播 一个比较低级...
     发布日期: 2015-02-27  分类: 其他  热度: 816 ℃ 0条评论
  • MySQL常用存储引擎对比特点MyISAMInnoDBMEMORYMERGENDB存储限制有64TB有没有有事务安全支持锁机制表锁行锁表锁表锁行锁B树索引支持支持支持支持支持哈希索引支持支持全文索引支持集群索引支持数据缓存支持支持支持索引缓存支持支持支持支持支持数据可压缩支持空间使用低高N/A低低内存使用低高中等低高批量插入的速度高低高高高支持外键支持1、MyISAMMyISAM引擎不支持事务,也不支持外键,优势是访问速度快。对事务完整性没有要求或者以SELECT、INSERT为主的应用基本上都可以用这个引擎。还有个问题就是MyISAM类型的表比较容易损坏。可以用CHECK TABLE语句来检查表的健康状态,用REPAIR TABLE来修复。它还支持三种不同的存储格式:静态(固定长度)表(默...
     发布日期: 2015-02-07  分类: MySQL  热度: 597 ℃ 1条评论
  • 依赖注入英文全称是dependency injection,简称DI。它还有个名字叫控制反转(Inversion of Control),英文简称IOC。这些都是来自于Java的东西。yii的依赖注入器就是一个知道如何去实例化和配置对象及其依赖对象的一个对象。依赖注入yii是通过类yii\di\Container来提供依赖注入特性的。它支持如下种类的依赖注入方式:构造方法注入。Setter和属性注入。回调函数注入。构造方法注入通过构造函数参数类型提示注入。当创建一个新对象的时候,类型提示可以告诉注入器那些类或者接口是它所依赖的,注入器会尝试去得到被依赖类或者接口的实例,然后通过构造函数注入到新的对象里面去。例如:class Foo {     public function __constr...
     发布日期: 2015-01-27  分类: PHP  热度: 1233 ℃ 0条评论
  • 1、字符串函数函数功能concat(s1,s2,...sn)连接s1,s2,...sn为一个字符串insert(str,x,y,insert)将字符串str从第x位置开始,y个字符长的子串替换为字符串insertlower(str)将字符串str中所有的字符变为小写upper(str)将字符串str中所有的字符变为大写left(str,x)返回字符串str最左边的x个字符right(str,x)返回字符串str最右边的x个字符lpad(str,n,pad)用字符串pad对str最左边进行填充,直到长度为n个字符长度rpad(str,n,pad)用字符串pad对str最右边进行填充,直到长度为n个字符长度rtrim(str)去掉字符串str右侧的空格repeat(str,x)返回str重复x次...
     发布日期: 2015-01-18  分类: MySQL  热度: 667 ℃ 0条评论
  • Yii2.0的自带的验证依赖于GD2或者ImageMagick扩展。使用步骤如下:重写yii\web\Controller::actions()方法,用ID"captcha"注册一个CaptchaAction类的action。在表单模型里面添加一个属性,用来保存用户输入的验证码字符串;这个属性的验证器是"captcha"。在视图里面,把yii\captcha\Captcha Widget插入到表单里面。第一步,控制器:在任意controller里面重写方法/**  * @inheritdoc */ public function actions() {     return [          'captcha' => [               'class' => 'y...
     发布日期: 2015-01-13  分类: PHP  热度: 6036 ℃ 4条评论
  • 其实就是Yii2.0的高级应用模板:Advanced Application Template。我们知道默认的高级应用模板包括三个应用:backend - 应用的后台frontend - 应用的前台console - 应用的控制台应用那么如果我们要在增加应用呢?比如在加一个微信的应用,或者我的后台和前台应用的名字我想改一下。那么现在就来再增加一个名字为weixin的子应用。在frontend同目录新建一个名为weixin文件夹然后呢把frontend目录下面的东西全拷贝到weixin目录里面这一步就是修改路径了,修改web目录index.php的包含路径,还有config/main.php的包含路径修改config/main.php配置项controllerNamespace为weixin\...
     发布日期: 2014-12-03  分类: PHP  热度: 2202 ℃ 1条评论