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;
}
}