致力于提供有竞争力的软件解决方案和服务,德尚网络欢迎您!
DSKMS演示
DSKMS(内容付费系统)演示地址及账号
DSKMS交流群:DSCMS开源官方群2
演示角色 演示地址 账号 密码
后台PC端 http://dskms.csdeshang.com/admin/ admin admin888
用户PC端 http://dskms.csdeshang.com/ buyer 123456
机构PC端 http://dskms.csdeshang.com/home/sellerlogin/login.html seller 123456
用户手机端 http://m.dskms.csdeshang.com/home/memberlogin buyer 123456
机构手机端 http://m.dskms.csdeshang.com/home/sellerlogin seller 123456
DSKMS(内容付费系统)移动端二维码演示地址
  • 用户手机端

  • 机构手机端

  • 微信小程序

DSShop演示
DSShop(单店铺系统)相关演示地址及账号
DSShop交流群:DSShop单店铺商城官方群
演示角色 演示地址 账号 密码
后台PC端 http://dsshop.csdeshang.com/admin/ admin admin888
用户PC端 http://dsshop.csdeshang.com/ buyer 123456
手机端 http://m.dsshop.csdeshang.com/ buyer 123456
DSShop(单店铺系统)移动端二维码演示地址
  • 用户手机端

  • 微信小程序

DSO2O演示
DSO2O(外卖/上门服务/跑腿系统)演示地址及账号
DSO2O交流群:DSShop单店铺商城官方群
演示角色 演示地址 账号 密码
后台PC端 https://dso2o.csdeshang.com/admin/ admin admin888
用户PC端 https://dso2o.csdeshang.com/ buyer 123456
卖家PC端 https://dso2o.csdeshang.com/home/sellerlogin/login.html seller 123456
服务机构管理 https://dso2o.csdeshang.com/home/fuwu_manage_login/login.html 后台添加
用户手机端 https://m.dso2o.csdeshang.com/home/memberlogin buyer 123456
商家手机端 https://m.dso2o.csdeshang.com/home/sellerlogin seller 123456
配送员 https://m.dso2o.csdeshang.com/distributor/login 测试配送员 123456
服务机构管理 https://m.dso2o.csdeshang.com/fuwu_manage/login test1 123456
DSO2O(外卖/上门服务/跑腿系统)移动端二维码演示地址
  • 用户手机端

  • 商家手机端

  • 配送员管理

  • 上门服务机构

  • 微信小程序

DSMall演示
DSMall(多店铺商城系统)演示地址及账号
DSMall交流群: DSMall开源商城官方群
演示角色 演示地址 账号 密码
后台PC端 https://dsmall.csdeshang.com/admin/ admin admin888
用户PC端 https://dsmall.csdeshang.com/ buyer 123456
商家PC端 https://dsmall.csdeshang.com/home/sellerlogin/login.html seller 123456
用户手机端 https://m.dsmall.csdeshang.com/ buyer 123456
商家手机端 https://m.dsmall.csdeshang.com/home/sellerlogin seller 123456
微信小程序 微信内搜索小程序 DSSHOP
DSMall(多店铺商城系统)移动端二维码演示地址
  • 用户手机端

  • 商家手机端

  • 混合版苹果APP

  • 混合版安卓APP
    (使用浏览器打开)

  • 微信小程序

DSMall 支付回调模块

线上支付成功后,异步回调最终统一都要经过/home/payment/notify来处理支付成功的后续操作。通过支付插件中的verify_notify验证成功,调用paymentlogic模型中的updateOrder方法进行处理。

        $logic_payment = model('payment', 'logic');
        $result = $logic_payment->getPaymentInfo($payment_code);
        $payment_info = $result['data'];
 
        //创建支付接口对象
        $payment_api = new $payment_info['payment_code']($payment_info);
 
        //对进入的参数进行远程数据判断
        $verify = $payment_api->verify_notify();
        if ($verify['trade_status'] != 1) {
            exit;
        }
        $out_trade_no = $verify['out_trade_no']; #内部订单号
        $trade_no = $verify['trade_no']; #交易订单号
        $order_type = $verify['order_type']; #交易类型
 
        $update_result = $logic_payment->updateOrder($out_trade_no, $trade_no, $order_type, $show_code?$show_code:$payment_code);
        exit($update_result ? 'success' : 'fail');

updateOrder方法中,分别处理了三种支付情况:实物订单、虚拟订单、预存款充值,是通过out_trade_no参数进行判断的。

        $out_trade_no = current(explode('_', $out_trade_no));
        if ($order_type == 'real_order') {
            $order = $this->getRealOrderInfo($out_trade_no);
            if (intval($order['data']['api_paystate'])) {
                //订单已支付
                return true;
            }
            $order_list = $order['data']['order_list'];
            $result = $this->updateRealOrder($out_trade_no, $payment_code, $order_list, $trade_no);
        }elseif($order_type == 'vr_order') {
            $order = $this->getVrOrderInfo($out_trade_no);
            if ($order['data']['order_state'] != ORDER_STATE_NEW) {
                //订单已支付
                return true;
            }
            $result = $this->updateVrOrder($out_trade_no, $payment_code, $order['data'], $trade_no);
        }elseif($order_type == 'pd_order') {
            $order = $this->getPdOrderInfo($out_trade_no);
            if ($order['data']['pdr_payment_state'] == 1) {
                //订单已支付
                return true;
            }
            $result = $this->updatePdOrder($out_trade_no, $payment_code, $order['data'], $trade_no);
        }
        return $result['code'] ? TRUE : FALSE;

 

如果是实物订单,支付成功后,则更新订单状态为已付款,并给卖家发送通知,然后生成订单日志。

如果是虚拟订单,支付成功后,则更新订单状态为已付款,并且发放虚拟兑换码,同时通知买家和卖家。

如果是预存款充值,支付成功后,则更新用户在平台中的预存款余额。