在线支付
HDCMS / 更新于4个月前

支付宝

使用支付服务为每一个模块服务,每个模块需要创建定单表与模型。

配置

首先需要在站点完成支付宝的配置。

模块定单表

Schema::create('orders', function (Blueprint $table) {
    $table->increments('id');
    table_site_relation($table);
    table_user_relation($table);
    $table->decimal('price')->comment('售价');
    $table->string('subject')->comment('商品名称');
    $table->string('sn')->unique()->comment('定单号');
    $table->tinyInteger('status')->default(0)->comment('支付状态');
    $table->timestamps();
});

定单模型

系统完成支付后会调用定单模型的 success ,可以在方法内完成模块定单状态的更改或用户通知的发送。
下面模型定义的方法必须要存在,否则支付会发送失败。

class Order extends Model
{
    protected $fillable = ['sn', 'subject', 'price'];

    //支付成功调用在这里改变定单状态
    //系统会发送异步与同步两次通知
    //所以方法会执行两次
    public function success()
    {
        if($this['status']==false){
            $this['status'] = true;
            $this->save();
        }
    }

    /**
     * 系统支付关联用于获取商品的支付信息
     * @return \Illuminate\Database\Eloquent\Relations\MorphMany
     */
    public function pay()
    {
        return $this->morphMany(Pay::class, 'pay');
    }

    //商品定单号
    public function sn()
    {
        return $this['sn'];
    }

    //商品价格
    public function price()
    {
        return $this['price'];
    }

    //商品名称
    public function subject()
    {
        return $this['subject'];
    }

    //商品链接
    public function link()
    {
        return route('system.site.index');
    }
}

发起支付

比如会员购买一个课程商品,使用支付服务可以非常简单的发起支付。
支付成功后会调用模型的 success 方法。

public function show(PayServer $payServer)
{
    $lesson = Lesson::find(1);
     $payServer->aliPay($lesson);
}

服务方法

系统提供的 PayServer 服务提供了一些实用方法

生成定单号

$payServer->generateOrderSn()
我们的使命:传播互联网前沿技术,帮助更多的人实现梦想
Copyright © 2010-2018 houdunren.com All Rights Reserved 京ICP备12048441号-3
: 010-86467608 : 2300071698@qq.com
编码: 海豚日记