123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- <?php namespace Place\Lib;
- use Dever;
- class Account
- {
- # 下单操作
- public function pay($order)
- {
- $account = Dever::input('platform', 'is_string', '账户', 'weixin');
- $env = Dever::input('env', 'is_numeric', '运行环境', 3);
- $result = $this->openid(['key' => $account], $env, $order['uid']);
- if (isset($result['link'])) {
- return $result;
- }
- $account = $this->getInfo(['key' => 'pay_' . $account]);
- if (!$account) {
- Dever::error('支付账户配置错误');
- }
- $cert = Dever::db('place/account_cert')->find(['account_id' => $account['id'], 'platform_cert_id' => 2]);
- if (!$cert || ($cert && $cert['edate'] <= time())) {
- Dever::load(\Api\Lib\Account::class)->run($account, 'task', [], 1, 'run', 'place');
- }
- $param = [];
- $param['order_num'] = $order['order_num'];
- $param['openid'] = $result['openid'];
- $param['name'] = $order['name'];
- $param['notify'] = $order['notify'];
- $param['cash'] = $order['pay_money_cash']*100;
- $param['time_expire'] = time() + 4000;
- return Dever::load(\Api\Lib\Account::class)->run($account, 'order', $param, $env, 'run', 'place');
- }
- # 退款操作
- public function refund($order, $pay_cash, $refund_order_num, $sector_id, $place_id, $type)
- {
- $account = $order['env_platform'];
- $env = $order['env_type'];
- $account = $this->getInfo(['key' => 'pay_' . $account]);
- if (!$account) {
- Dever::error('支付账户配置错误');
- }
- $param['order_num'] = $order['order_num'];
- $param['refund_order_num'] = $refund_order_num;
- $param['total'] = $order['pay_money_cash']*100;
- $param['cash'] = $pay_cash*100;
- $param['notify'] = 'Porder/Lib/Notify.refund|' . $sector_id . '|' . $place_id . '|' . $type . '|' . $refund_order_num;
- return Dever::load(\Api\Lib\Account::class)->run($account, 'refund', $param, 1, 'run', 'place');
- }
- # 微信小程序发货操作
- public function delivery($order, $detail, $data, $mode = 1, $delivered = true)
- {
- if ($order['env_platform'] == 'weixin' && $order['env_type'] == 5) {
- $token = Dever::load(\Api\Lib\Util::class)->token($order['env_platform'], $order['env_type'], 'place');
- if (!$token) {
- Dever::error('无法发货');
- }
- # 虚拟商品
- $method = 3;
- if ($data && isset($order['method'])) {
- if ($order['method'] == 3) {
- # 自提
- $method = 4;
- } elseif ($detail['source_type'] == 1) {
- # 快递
- $method = 1;
- }
- }
- $goods = $detail['name'];
- $delivery = [];
- if ($method == 1) {
- $address = Dever::db('puser/address')->find($order['address_id']);
- $contact = '';
- if ($address) {
- $contact = ['receiver_contact' => \Dever\Helper\Str::hide($address['phone'])];
- }
- foreach ($data as $v) {
- $content = explode(',', $v['content']);
- $code = $v['code'];
- foreach ($content as $v1) {
- $delivery[] = [
- 'tracking_no' => $v1,
- 'express_company' => $code,
- 'item_desc' => $goods,
- 'contact' => $contact,
- ];
- }
- }
- } else {
- $delivery[] = [
- 'item_desc' => $goods,
- ];
- }
- $result = $this->openid(['key' => $order['env_platform']], $order['env_type'], $order['uid']);
- if (!$result['openid']) {
- return;
- }
- $account = $this->getInfo(['key' => $order['env_platform']]);
- if (!$account) {
- Dever::error('账户配置错误');
- }
- $param = [];
- $param['access_token'] = $token;
- $param['order_num'] = $order['order_num'];
- $param['logistics_type'] = $method;
- $param['delivery'] = $delivery;
- $param['mode'] = $mode;
- $param['delivered'] = $delivered;
- $param['time'] = time();
- $param['openid'] = $result['openid'];
- return Dever::load(\Api\Lib\Account::class)->run($account, 'delivery', $param, 1, 'run', 'place');
- }
- }
- # 获取openid
- public function openid($account, $env, $uid, $result = [])
- {
- $account = $this->getInfo($account);
- return Dever::load(\Api\Lib\Util::class)->openid($account, $env, $uid, $result, 'place');
- }
- # 获取小程序码
- # version = develop/release/trial
- public function getAppletCode($account, $env, $scene, $page, $version = 'develop')
- {
- $token = Dever::load(\Api\Lib\Util::class)->token($account, $env, 'place');
- if ($token) {
- $param['access_token'] = $token;
- $param['scene'] = $scene;
- $param['page'] = $page;
- $param['env_version'] = $version;
- $data = Dever::load(\Api\Lib\Account::class)->run($account, 'applet_code', $param, 1, 'run', 'place');
- return $data;
- }
- }
- # 获取账户信息
- public function getInfo($where)
- {
- $info = Dever::db('place/account')->find($where);
- if ($info) {
- $account = Dever::db('api/account')->find(['key' => $info['key']]);
- $info['app_id'] = $account['app_id'];
- $info['platform_id'] = $account['platform_id'];
- $info['desc'] = $account['desc'];
- return $info;
- }
- }
- }
|