一个微擎商城模块的设计思路

工作   208阅读

上个月开发了一个基于微擎的微信商城模块,中途因为要带小孩的缘故没有继续开发。今天根据这个半残品工程来说一下开发一个商城模块的思路。

首先,明确这个商城模块的功能,是一个基于微信支付的手机商城,支持两种购买方式,

一种是原价购买,这是常见的交易方式;

另一种是一种分享活动的方式,只需要支付四分之一的价格就购买获得该件商品,当然,前提是将这个成功支付的订单分享出去,只要有4位好友通过这个订单前往到商品的购买页,并且也支付了四分之一的架构购买这件商品。如果中途不想等到邀请到足够的好友,那么只需要补齐剩余的四分之三价格即可活动商品。

因此,本次开发的重点在于第二种通过分享的方式来实现商品购买的交易模式。

其次,设计这个商场模块的结构

用户中心共用微擎自身的就可以了。所以只需要实现一个商品中心和一个订单中心,由于同一个用户每一次订单提交的地址可能是不一样的,因此需要单独为发货地址做一些开发。

下一步,编码实现

开发语言使用PHP ,运用到微擎框架,其中支付的部分,只需要调用微擎的一个pay()方法就可以了。

class Anman_share_buyModuleSite extends WeModuleSite {
 public $t_goods = 'anman_share_goods';
 public $t_orders = 'anman_share_orders';
 public $t_users = 'anman_share_users';
 public $t_address = 'anman_share_address';
 //支付结果
 public function payResult($params) {
  global $_W,$_GPC;
  if ($params['result'] == 'success') {
   //$fee = intval($params['fee']);
   $fee = $params['fee'];
   $data = array('status' => $params['result'] == 'success' ? 1 : 0);
   $paytype = array('credit' => '1', 'wechat' => '2', 'alipay' => '2', 'delivery' => '3');
   $data['paytype'] = $paytype[$params['type']];
   if ($params['type'] == 'wechat') {
    $data['transid'] = $params['tag']['transaction_id'];
   }
   
   //这里需要写支付的代码,假设支付成功,把支付信息写入到数据库
   $openid = $_W['openid'];
   $uniacid = $_W['uniacid'];
   //取得用户的收获地址联系方式
   $address = pdo_get($this->t_address,array('openid'=>$openid,'uniacid'=>$uniacid));
   $tid = $params['tid'];
   $tid_array = explode('-',$tid);
   $id = $tid_array[0];//商品id
   $ordersn = $tid_array[1];//订单id
   $ordertype = $tid_array[2];
   $from_openid = $tid_array[3];
   $order = array(
     'uniacid' => $uniacid,
     'openid' => $openid,
     'from_openid'=>$from_openid,
     'goods_id'=>$id,
     'ordersn'=>$ordersn,     
     'ordertype' => $ordertype,
     'paytime'=>time(),
     'uniontid'=>$params['uniontid'],
     'transaction_id'=>$params['tag']['transaction_id'],
     'fee'=>$params['fee'],
     'orderzt'=>'1',//订单状态为已付款
     'contact'=>$address['contact'],
     'mobile'=>$address['mobile'],
     'province'=>$address['province'],
     'city'=>$address['city'],
     'district'=>$address['district'],
     'addess2'=>$address['addess2']
   );
   //var_dump($params);
   $result = pdo_insert($this->t_orders,$order);
   if (!empty($result)) {
    message('支付成功',$redirect=$this->createMobileUrl('goods',array('id'=>$id,'openid'=>$openid,'uniacid'=>$uniacid)),$type='success');
   }else {
    message('支付失败..',$redirect=$this->createMobileUrl('goods',array('id'=>$id,'openid'=>$openid,'uniacid'=>$uniacid)),$type='warning');
   }
   
  }else{
   message('支付失败.',$redirect=$this->createMobileUrl('index'),$type='warning');
  }
 }
}

一部分代码像上面一样,整个工程如下图:

捕获.PNG

喜欢请常来,打赏请随意。