昨天已经有说明为什麽要有重新付款的功能,
以及大致作法,今天要介绍的是另外一种作法的,
两种谁好谁坏,全看个人喜好,
这次我们会动到原先的结构,简单看一下改动
Schema::create('order', function (Blueprint $table) {
$table->string('id', 30)->comment('订单id');
$table->string('name', 30)->comment('购买人姓名');
$table->integer('amount')->default(0)->comment('总金额');
$table->string('payment_id, 30')->nullable()->comment('金流单id');
$table->string('status', 20)->default(‘pending’)->comment('订单状态');
$table->primary(['id']);
});
Schema::create('payment', function (Blueprint $table) {
$table->string('id', 30)->comment('金流单id');
$table->string('type', 20)->comment('付款类型'); //credit, atm
$table->string('status', 30)->default('unpaid')->comment('付款状态');
$table->dateTime('expired_at')->nullable()->comment('付款截止时间');
$table->dateTime('paid_at')->nullable()->comment('付款时间');
$table->text('info')->nullable(); // 付款资讯物件(ATM帐号/超商代码/超商条码)
$table->float('amount')->default(0); // 金额
$table->float('fee')->default(0); // 手续费
$table->primary(['id']);
});
对照 --Day21 订单金流 -- 独立资料,
可以看到我们在order table保留的payment_id,以及将payment.id定义为金流单id,
而不是原本的同订单id,流程也稍微变动,
不一样的是我们这次将一次金流单纪录成一笔payment table的资料,
而不是透过更新payment,payment_id来区别,
并且透过order.payment_id来判断目前是对应哪笔金流资料,
跟之前的区别在於这次我们纪录整个金流资讯,包含付款方式付款期限等等,
之前的作法如果重新付款後就看不到以前的付款资料、付款方式、重新付款几次之类的资料,
简单来说就是一个订单只可以对应一个payment table的资料,
但可以用更新的或者新建立一笔的差别,
至於这些资料要干麻呢?
就自由发挥拉,客制化推荐或者黑名单等等的应用都可以,
反正这时代有数据就是王道!
第一天,想笔记下我对资讯安全的理解。 资讯安全怎麽来的? 我印象里的历史战争剧中,国家或两个阵营打仗...
今天来从"Unity Hub"开起第一个专案,并熟悉Unity的操作介面 首先打...
如果有错误,欢迎留言指教~ Q_Q 上篇提到,如何取得更新後的 state useReducer ...
今天会为上一篇所写的两个 use case 加上 unit test。 GetLinesAndSta...
前置作业 build.gradle dependencies记得加入使用retrofit2 impl...