Alipayapp.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\admin\models\alipay;
  8. use app\modules\admin\models\AlipayThirdForm;
  9. use app\models\ActivityOrdervoucher;
  10. use app\models\AlipayVoucherCodeTask;
  11. use app\models\AlipayVoucherCode;
  12. use app\models\Coupon;
  13. use app\models\CouponAutoSend;
  14. use app\models\User;
  15. use app\models\Store;
  16. use app\models\SaasUser;
  17. use app\models\UserCoupon;
  18. use yii\base\Model;
  19. use yii\data\Pagination;
  20. use app\models\StoreAliMini;
  21. use app\models\StoreAliShop;
  22. class Alipayapp extends Model
  23. {
  24. public $activity_ordervoucher_id;
  25. public $mini_id;
  26. public $alipay_activity_id;
  27. public $store_id;
  28. public $pageSize = 5;
  29. public $page = 1;
  30. public $publish_start_time;
  31. public $publish_end_time;
  32. public $alipayShopId;
  33. /**
  34. * {@inheritdoc}
  35. */
  36. public function rules()
  37. {
  38. return [
  39. [['store_id', 'mini_id', 'page', 'pageSize'], 'integer'],
  40. [['publish_start_time', 'publish_end_time'], 'safe'],
  41. ];
  42. }
  43. public function baseData() {
  44. $url = $this->alipayUrl();
  45. $shopId = StoreAliShop::findOne(['mini_id'=>$this->mini_id])->shop_id;
  46. return [
  47. 'code' => 0,
  48. 'data' => [
  49. 'alipay_url' => $url,
  50. 'shop_id' => $shopId,
  51. ],
  52. ];
  53. }
  54. public function alipayUrl($page = '/page/home/home', $params = '') {
  55. $mini = StoreAliMini::findOne($this->mini_id);
  56. $appid = $mini->auth_app_id;
  57. $url = 'alipays://platformapi/startapp?appId='.$appid.'&amp;page='.$page.'&amp;query='.$params.'';
  58. return $url;
  59. }
  60. private function handAttr($source) {
  61. // var_dump($source);
  62. $shopId = $this->alipayShopId;
  63. $res = [];
  64. if(isset($source['attribute'][0])){
  65. foreach($source['attribute'] as $k => $attri){
  66. if(isset($attri['attributes'])){
  67. $r = [];
  68. $r[0] = $attri['@attributes'];
  69. $r[1] = $this->handAttr($attri['attributes']);
  70. $res[] = $r;
  71. }else{
  72. if($attri['@attributes']['id'] == 'shopId'){
  73. $attri['value'] = $shopId;
  74. }
  75. if($attri['value']){
  76. if(isset($attri['values'])){
  77. $attri['@attributes']['values'] = $attri['value'];
  78. }else if(isset($attri['value'])){
  79. $attri['@attributes']['value'] = $attri['value'];
  80. }
  81. if(isset($attri['value'])){
  82. $res[][0] = $attri['@attributes'];
  83. }
  84. }
  85. }
  86. }
  87. }else{
  88. $attri = $source['attribute'];
  89. if($attri['@attributes']['id'] == 'shopId'){
  90. $attri['value'] = $shopId;
  91. }
  92. if($attri['value']){
  93. if(isset($attri['values'])){
  94. $attri['@attributes']['values'] = $attri['value'];
  95. }else if(isset($attri['value'])){
  96. $attri['@attributes']['value'] = $attri['value'];
  97. }
  98. if(isset($attri['value'])){
  99. $res[][0] = $attri['@attributes'];
  100. }
  101. }
  102. }
  103. return $res;
  104. }
  105. private function toXml($arr) {
  106. $xml = '';
  107. $res = [];
  108. foreach($arr as $k => $attri){
  109. if(isset($attri[1])){
  110. $r = $this->toXml($attri[1]);
  111. $x = $r;
  112. $attr = [];
  113. foreach ($attri[0] as $i => $v){
  114. $attr[] = $i . '="' . $v . '"';
  115. }
  116. $attr = implode(' ', $attr);
  117. $xml .= '<attribute '.$attr.'><attributes>'.$x.'</attributes></attribute>';
  118. }else{
  119. $val = '';
  120. if(isset($attri[0]['values'])){
  121. $val .= '<values>';
  122. foreach ($attri[0]['values'] as $vv){
  123. $val .= '<value>'.$vv.'</value>';
  124. }
  125. $val .= '</values>';
  126. }else if(isset($attri[0]['value'])){
  127. $val .= '<value>'.$attri[0]['value'].'</value>';
  128. }
  129. $attr = [];
  130. foreach ($attri[0] as $i => $v){
  131. if(in_array($i, ['value', 'values'])){
  132. continue;
  133. }
  134. $attr[] = $i . '="' . $v . '"';
  135. }
  136. $attr = implode(' ', $attr);
  137. $xml .= '<attribute '.$attr.'>
  138. '.$val.'
  139. </attribute>';
  140. }
  141. }
  142. return $xml;
  143. }
  144. public function serviceSchema($source, $charset='utf8') {
  145. $r = $this->handAttr($source);
  146. // var_dump($r);die;
  147. $xml = '<?xml version="1.0" encoding="utf-8"?><serviceSchema>';
  148. $xml .= $this->toXml($r);
  149. $xml .= '</serviceSchema>';
  150. // var_dump($xml);die;
  151. return $xml;
  152. }
  153. }