123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <?php
- namespace api\sdk\controller;
- use api\common\controller\V2ApiBaseController;
- use huo\controller\common\HuoCookie;
- use huo\controller\common\HuoSession;
- use huo\controller\conf\PaywayConf;
- use huo\controller\member\MemCache;
- use huo\controller\pay\PtbPay;
- use huo\controller\pay\SdkOrderCache;
- use huolib\constant\DeviceTypeConst;
- use huolib\constant\PaywayConst;
- use huolib\pay\Pay;
- use huolib\status\OrderStatus;
- use huolib\utils\OrderUtils;
- class WappayController extends V2ApiBaseController {
- function _initialize() {
- parent::_initialize();
- }
-
- public function pay() {
- $this->checkLogin();
- $_mc_class = MemCache::ins();
- $_mem_data = $_mc_class->getInfoById($this->mem_id);
- $_order_id = get_val($this->rq_data, 'order_id', '');
- if (!empty($_order_id)) {
- $this->rq_data['order']['order_id'] = $_order_id;
- }
- $_order_rq = $this->setOrderData();
- $_game_rq = $this->setGameData();
- $_pay_token = get_val($this->rq_data, 'pay_token', '');
- $_rs = $_order_rq->checkPayToken($_pay_token);
- if (false == $_rs) {
- $_code = OrderStatus::TOKEN_ARGS_ERROR;
- }
- $_payway = get_val($this->rq_data, 'payway', '');
- $_pw_check_rs = OrderUtils::checkPayway($_payway);
- if (OrderStatus::NO_ERROR != $_pw_check_rs) {
- $this->error(OrderStatus::getMsg($_pw_check_rs), [], $_pw_check_rs);
- }
-
- if (PaywayConst::PAYWAY_PTBPAY == strtolower($_payway)) {
- $_rs = (new PtbPay())->ptbSdkPay($_order_rq->getOrderId());
- $this->returnData($_rs);
- }
- $_order_data = SdkOrderCache::ins()->getInfoByOrderId($_order_rq->getOrderId());
- if (empty($_order_data)) {
- $_code = OrderStatus::ORDER_NOT_EXISTS;
- $this->error(OrderStatus::getMsg($_code), [], $_code);
- }
- $_order_rq->setDataFromOrder($_order_data);
- $_pay_class = Pay::ins()->get($_payway);
- $_func = $this->getFunc($this->device_type);
- $_show_url = url('sdk/'.$_payway.'/showUrl', ['order_id' => $_order_rq->getOrderId()], false, APISITE);
- $_return_url = url(
- 'sdk/'.$_payway.'/returnUrl', ['order_id' => $_order_rq->getOrderId()], false, APISITE
- );
- $_notify_url = url('sdk/'.$_payway.'/notifyUrl', '', false, APISITE);
- $_pay_class->setNotifyUrl($_notify_url);
- $_pay_class->setReturnUrl($_return_url);
- $_pay_class->setShowUrl($_show_url);
- $_pay_class->setOrderId($_order_rq->getOrderId());
- $_pay_class->setProductName($_order_rq->getProductName());
- $_pay_class->setProductDesc($_order_rq->getProductDesc());
- $_pay_class->setRealAmount($_order_rq->getProductRealPrice());
- $_pay_class->setProductPrice($_order_rq->getProductPrice());
- $_pay_class->setProductId($_order_rq->getProductId());
- $_pay_class->setIp($this->request->ip());
-
- $_pay_class->setUseProtocol(true);
- $_huo_session = new HuoSession($this->mem_id);
- $_huo_session->setType($this->getDeviceType());
- $_open_id = $_huo_session->getOpenId();
- if (empty($_open_id)) {
- $_cookie_open_id = HuoCookie::getOpenId();
- if (!empty($_cookie_open_id)) {
- $_open_id = $_cookie_open_id;
- }
- }
- $_pay_class->setOpenId($_open_id);
- $_pay_class->setMemId($this->mem_id);
- $_pay_class->setMemRealName($_mem_data['real_name']);
- $_pay_class->setMemRegTime($_mem_data['create_time']);
- $_pay_class->setMemMobile($_mem_data['mobile']);
- $_config = (new PaywayConf())->getConfByAppPayway($_order_rq->getAppId(), $_payway);
- $_pay_alias = empty($_config['payname']) ? $_payway : $_config['payname'];
- $_pay_rs = $_pay_class->$_func($_config);
- if (empty($_pay_rs)) {
- $_code = OrderStatus::PAYWAY_PREORDER_ERROR;
- $this->error(OrderStatus::getMsg($_code), [], $_code);
- }
-
- $_order_data['payway'] = $_pay_alias;
- SdkOrderCache::ins()->updateOrder($_order_rq->getOrderId(), $_order_data);
- $_code = OrderStatus::NO_ERROR;
- $this->success(OrderStatus::getMsg($_code), $_pay_rs, $_code);
- }
-
- public function getFunc($device_type) {
- switch ($device_type) {
- case DeviceTypeConst::DEVICE_TYPE_IOSAPPLESDK:
- $_type = 'clientPay';
- break;
- case DeviceTypeConst::DEVICE_TYPE_IOSSDK:
- $_type = 'clientPay';
- break;
- case DeviceTypeConst::DEVICE_TYPE_IOSAPP:
- $_type = 'clientPay';
- break;
- case DeviceTypeConst::DEVICE_TYPE_IOSH5APP:
- $_type = 'clientPay';
- break;
- case DeviceTypeConst::DEVICE_TYPE_SAFARI:
- $_type = 'mobilePay';
- break;
- case DeviceTypeConst::DEVICE_TYPE_ANDSDK:
- $_type = 'clientPay';
- break;
- case DeviceTypeConst::DEVICE_TYPE_ANDAPP:
- $_type = 'clientPay';
- break;
- case DeviceTypeConst::DEVICE_TYPE_ANDH5APP:
- $_type = 'clientPay';
- break;
- case DeviceTypeConst::DEVICE_TYPE_ANDBROWSER:
- $_type = 'mobilePay';
- break;
- case DeviceTypeConst::DEVICE_TYPE_WEIXIN:
- $_type = 'jsPay';
- break;
- case DeviceTypeConst::DEVICE_TYPE_PC:
- $_type = 'pcPay';
- break;
- case DeviceTypeConst::DEVICE_TYPE_WAP:
- $_type = 'mobilePay';
- break;
- default:
- $_type = 'mobilePay';
- }
- return $_type;
- }
- }
|