alipayUrl(); $shopId = StoreAliShop::findOne(['mini_id'=>$this->mini_id])->shop_id; return [ 'code' => 0, 'data' => [ 'alipay_url' => $url, 'shop_id' => $shopId, ], ]; } public function alipayUrl($page = '/page/home/home', $params = '') { $mini = StoreAliMini::findOne($this->mini_id); $appid = $mini->auth_app_id; $url = 'alipays://platformapi/startapp?appId='.$appid.'&page='.$page.'&query='.$params.''; return $url; } private function handAttr($source) { // var_dump($source); $shopId = $this->alipayShopId; $res = []; if(isset($source['attribute'][0])){ foreach($source['attribute'] as $k => $attri){ if(isset($attri['attributes'])){ $r = []; $r[0] = $attri['@attributes']; $r[1] = $this->handAttr($attri['attributes']); $res[] = $r; }else{ if($attri['@attributes']['id'] == 'shopId'){ $attri['value'] = $shopId; } if($attri['value']){ if(isset($attri['values'])){ $attri['@attributes']['values'] = $attri['value']; }else if(isset($attri['value'])){ $attri['@attributes']['value'] = $attri['value']; } if(isset($attri['value'])){ $res[][0] = $attri['@attributes']; } } } } }else{ $attri = $source['attribute']; if($attri['@attributes']['id'] == 'shopId'){ $attri['value'] = $shopId; } if($attri['value']){ if(isset($attri['values'])){ $attri['@attributes']['values'] = $attri['value']; }else if(isset($attri['value'])){ $attri['@attributes']['value'] = $attri['value']; } if(isset($attri['value'])){ $res[][0] = $attri['@attributes']; } } } return $res; } private function toXml($arr) { $xml = ''; $res = []; foreach($arr as $k => $attri){ if(isset($attri[1])){ $r = $this->toXml($attri[1]); $x = $r; $attr = []; foreach ($attri[0] as $i => $v){ $attr[] = $i . '="' . $v . '"'; } $attr = implode(' ', $attr); $xml .= ''.$x.''; }else{ $val = ''; if(isset($attri[0]['values'])){ $val .= ''; foreach ($attri[0]['values'] as $vv){ $val .= ''.$vv.''; } $val .= ''; }else if(isset($attri[0]['value'])){ $val .= ''.$attri[0]['value'].''; } $attr = []; foreach ($attri[0] as $i => $v){ if(in_array($i, ['value', 'values'])){ continue; } $attr[] = $i . '="' . $v . '"'; } $attr = implode(' ', $attr); $xml .= ' '.$val.' '; } } return $xml; } public function serviceSchema($source, $charset='utf8') { $r = $this->handAttr($source); // var_dump($r);die; $xml = ''; $xml .= $this->toXml($r); $xml .= ''; // var_dump($xml);die; return $xml; } }