瀏覽代碼

Merge branch 'master' of http://git.huxiukeji.com/zhangxiaobin/ggyuyin

lizhen_gitee 1 年之前
父節點
當前提交
598951a004
共有 100 個文件被更改,包括 9953 次插入98 次删除
  1. 14 14
      addons/epay/certs/alipayCertPublicKey.crt
  2. 18 18
      addons/epay/certs/appCertPublicKey.crt
  3. 48 48
      addons/epay/config.php
  4. 3 0
      addons/epay/library/Service.php
  5. 75 0
      application/admin/controller/Topicdongtai.php
  6. 75 0
      application/admin/controller/Topicdongtaianswer.php
  7. 74 0
      application/admin/controller/Topicdongtaigood.php
  8. 74 0
      application/admin/controller/Topicdongtaiscreen.php
  9. 11 0
      application/admin/controller/dispatch/Skillauth.php
  10. 49 0
      application/admin/controller/guild/Guild.php
  11. 1 1
      application/admin/controller/user/Anchor.php
  12. 8 3
      application/admin/controller/user/Report.php
  13. 18 0
      application/admin/lang/zh-cn/topicdongtai.php
  14. 18 0
      application/admin/lang/zh-cn/topicdongtaianswer.php
  15. 9 0
      application/admin/lang/zh-cn/topicdongtaigood.php
  16. 8 0
      application/admin/lang/zh-cn/topicdongtaiscreen.php
  17. 4 1
      application/admin/lang/zh-cn/user/report.php
  18. 59 0
      application/admin/model/Topicdongtai.php
  19. 57 0
      application/admin/model/Topicdongtaianswer.php
  20. 44 0
      application/admin/model/Topicdongtaigood.php
  21. 44 0
      application/admin/model/Topicdongtaiscreen.php
  22. 16 1
      application/admin/model/user/Report.php
  23. 27 0
      application/admin/validate/Topicdongtai.php
  24. 27 0
      application/admin/validate/Topicdongtaianswer.php
  25. 27 0
      application/admin/validate/Topicdongtaigood.php
  26. 27 0
      application/admin/validate/Topicdongtaiscreen.php
  27. 66 0
      application/admin/view/topicdongtai/add.html
  28. 66 0
      application/admin/view/topicdongtai/edit.html
  29. 35 0
      application/admin/view/topicdongtai/index.html
  30. 58 0
      application/admin/view/topicdongtaianswer/add.html
  31. 58 0
      application/admin/view/topicdongtaianswer/edit.html
  32. 35 0
      application/admin/view/topicdongtaianswer/index.html
  33. 22 0
      application/admin/view/topicdongtaigood/add.html
  34. 22 0
      application/admin/view/topicdongtaigood/edit.html
  35. 35 0
      application/admin/view/topicdongtaigood/index.html
  36. 22 0
      application/admin/view/topicdongtaiscreen/add.html
  37. 22 0
      application/admin/view/topicdongtaiscreen/edit.html
  38. 35 0
      application/admin/view/topicdongtaiscreen/index.html
  39. 15 5
      application/admin/view/user/report/edit.html
  40. 84 4
      application/api/controller/Money.php
  41. 1 0
      application/api/controller/Topicdongtai.php
  42. 12 1
      application/api/controller/Usercenter.php
  43. 8 0
      application/config.php
  44. 4 2
      application/extra/site.php
  45. 351 0
      extend/AliPay/AliPay.php
  46. 110 0
      extend/AliPay/Demo.php
  47. 231 0
      extend/AliPay/alipay-sdk/aop/AlipayMobilePublicMultiMediaClient.php
  48. 108 0
      extend/AliPay/alipay-sdk/aop/AlipayMobilePublicMultiMediaExecute.php
  49. 1214 0
      extend/AliPay/alipay-sdk/aop/AopClient.php
  50. 71 0
      extend/AliPay/alipay-sdk/aop/AopEncrypt.php
  51. 19 0
      extend/AliPay/alipay-sdk/aop/EncryptParseItem.php
  52. 18 0
      extend/AliPay/alipay-sdk/aop/EncryptResponseData.php
  53. 16 0
      extend/AliPay/alipay-sdk/aop/SignData.php
  54. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAccountExrateAdviceAcceptRequest.php
  55. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAccountExrateAllclientrateQueryRequest.php
  56. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAccountExrateRatequeryRequest.php
  57. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAccountExrateTraderequestCreateRequest.php
  58. 171 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAcquireCancelRequest.php
  59. 152 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAcquireCloseRequest.php
  60. 550 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAcquireCreateandpayRequest.php
  61. 402 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAcquirePrecreateRequest.php
  62. 136 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAcquireQueryRequest.php
  63. 236 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAcquireRefundRequest.php
  64. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAppTokenGetRequest.php
  65. 103 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAssetPointBalanceQueryRequest.php
  66. 103 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAssetPointBudgetQueryRequest.php
  67. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAssetPointOrderCreateRequest.php
  68. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayAssetPointOrderQueryRequest.php
  69. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayBossCsChannelQueryRequest.php
  70. 103 0
      extend/AliPay/alipay-sdk/aop/request/AlipayBossFncXwbtestRetModifyRequest.php
  71. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayBossProdArrangementOfflineQueryRequest.php
  72. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceAirXfgDsgModifyRequest.php
  73. 103 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorCityQueryRequest.php
  74. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorDepositCancelRequest.php
  75. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorDepositConfirmRequest.php
  76. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorDepositQueryRequest.php
  77. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorFunctionQueryRequest.php
  78. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorScriptQueryRequest.php
  79. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorStationQueryRequest.php
  80. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherBatchqueryRequest.php
  81. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherCancelRequest.php
  82. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherConfirmRequest.php
  83. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherGenerateRequest.php
  84. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherQueryRequest.php
  85. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherRefundRequest.php
  86. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherUploadRequest.php
  87. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceDataMonitordataSyncRequest.php
  88. 103 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceEducateStudentinfoShareRequest.php
  89. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceIotDeviceserviceCancelRequest.php
  90. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceLotteryPresentSendRequest.php
  91. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceLotteryPresentlistQueryRequest.php
  92. 103 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceLotteryTypelistQueryRequest.php
  93. 103 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceTransportOfflinepayKeyQueryRequest.php
  94. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceTransportOfflinepayRecordVerifyRequest.php
  95. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayCommerceTransportOfflinepayUserblacklistQueryRequest.php
  96. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayDaoweiOrderCancelRequest.php
  97. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayDaoweiOrderConfirmRequest.php
  98. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayDaoweiOrderModifyRequest.php
  99. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayDaoweiOrderQueryRequest.php
  100. 118 0
      extend/AliPay/alipay-sdk/aop/request/AlipayDaoweiOrderRefundRequest.php

+ 14 - 14
addons/epay/certs/alipayCertPublicKey.crt

@@ -1,21 +1,21 @@
 -----BEGIN CERTIFICATE-----
-MIIDsjCCApqgAwIBAgIQICMGEKD4FBsQEE2n8ja8XDANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
+MIIDsjCCApqgAwIBAgIQICMHEIqQjfSHIVu68AcI5DANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
 BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0
 aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs
-YXNzIDIgUjEwHhcNMjMwNjEwMDk1NzA1WhcNMjgwNjA4MDk1NzA1WjCBkjELMAkGA1UEBhMCQ04x
-LTArBgNVBAoMJOa1t+WNl+mFt+WoseS/oeaBr+aKgOacr+aciemZkOWFrOWPuDEPMA0GA1UECwwG
+YXNzIDIgUjEwHhcNMjMwNzEwMDkyNTI1WhcNMjgwNzA4MDkyNTI1WjCBkjELMAkGA1UEBhMCQ04x
+LTArBgNVBAoMJOa1t+WNl+mBk+S5kOaWh+WMluS8oOWqkuaciemZkOWFrOWPuDEPMA0GA1UECwwG
 QWxpcGF5MUMwQQYDVQQDDDrmlK/ku5jlrp0o5Lit5Zu9Kee9kee7nOaKgOacr+aciemZkOWFrOWP
-uC0yMDg4NjQxMzg2NTYwODUyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsdEvXvHz
-gev5uaRaY4RJZaqMux5aAJtlesOdt+Fg7B7EeBkSpS8DmDTPQWPTXAhOowCxKPrwp162KbXDCmuL
-iPxxCb+tvudrj+OVOP3tpHwGinQlfu9+rlWMYca0DOncLvkxHlH9KdEFhAOtrhqU1OQqmkqvdQtx
-JQ7RO4iyv6yok7dq84NHFW9nOg9WGnOE7RgG5cExeIGcHdTYB8lTF9P+hpC3F05L3h8sMa8moSjT
-LBBqjhpxRQkzxgEQbBcQAYwLq7Mqzg1H0LdDP1x9/E1AFebF9iftbCrkx5R5ptWQsV5CtpOU5yPp
-k3i8jgrlzxrZUqL6BpLyrYG2I5R8iQIDAQABoxIwEDAOBgNVHQ8BAf8EBAMCA/gwDQYJKoZIhvcN
-AQELBQADggEBAGBjtZRiHfKJEpXL/RI/Dm6ZPrHiH5YfarYq6FwuPZFb0seib+2tFkbux6NuPbvV
-qTZXayaR2bfk3/i4z/hPhmBFCeDIboFm1Tzve4ZnITvvkGmp9JJ3IZrH4E4y87PobLNByH0fO35n
-xzyiXl3eLeY/oQrgSK14L9z2wCnBxO194jVM/JBNr0uUT0qivplkwB1xc3Kl7jIA/S38AlyP5gYX
-09V9n7exgxx3CN5hgYh2lGuMi/0ZbrJXHUf7/1sk0i7TxV2c0WgijsSakglPKGB8VVUmXunJvHv7
-ZBHbI6ZZs12CstNL2AjPxcQLrB508InQ0eUvo0ej92tTa82Dz1k=
+uC0yMDg4NjQxNDY3MjIwNzEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmj73LbLt
+9K9on25vS28keYLhxrOR5bNDEw0+VukgEqYCcbj0Cf+UyOFpOtBNFmqTKBq3xmnmE6sCTeTzubop
+KmTYIpkKBitDfSbQVYMXUDM5qG8ac4ut1D2Dem/FjSOBCR7976SKonZ10u545ma4W/JFBH9YD41S
+qPeLE5/mqKsJ5TIgI+hdVaxCTkiOL1VDloMUMGvjXRny0nMmWyvSQoYf/jiUgwjC7NxAHeV2LwkJ
+Yk267xv9MwSyivaK9tB+3ABUQJXGj06SX6MHgosN2jarbVcwFha+jo7TNFC2SKWtZwhAUZTRTiZr
+cshw8JKPxDYvUDq18O5A4I2B9lk6hQIDAQABoxIwEDAOBgNVHQ8BAf8EBAMCA/gwDQYJKoZIhvcN
+AQELBQADggEBAI5j3oYlhCV7VOb0b+BK9IK5pphdI2H07UqRb8GBDpcU62GI2l13DGr1dzaoEdlN
+6YF0PGBgQNW7dGlLRCgWCY2T7/mMs8Zj5B41Uz34YV3CfLDMvH/+LJH5+zQrF73gnNjL3j4iQVpC
+/C53ShHkVcg69gFIVHysmFXTmgdWeRCQmWBjpbVgOVxjCjZz7+bVQOCbX35HkmKU1IfhwbVgDWgW
+i9YIXCZlOv9/9YCLgcXj5Gy8nHmyYeMMZIKHmZakcTRYy4LFV9ZyP8kphWagf/X5IlNcEtRNOFMi
+Hyy8Xc3fBW6CA8x1AqFMPhBFq64O7WMV7g85/UbnTTHjT5BOgY8=
 -----END CERTIFICATE-----
 -----BEGIN CERTIFICATE-----
 MIIE4jCCAsqgAwIBAgIIYsSr5bKAMl8wDQYJKoZIhvcNAQELBQAwejELMAkGA1UEBhMCQ04xFjAU

+ 18 - 18
addons/epay/certs/appCertPublicKey.crt

@@ -1,24 +1,24 @@
 -----BEGIN CERTIFICATE-----
-MIIEsTCCA5mgAwIBAgIQICMGEH6HqUA9jcuhhPQ77DANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
+MIIEsTCCA5mgAwIBAgIQICMHEKulMgGOqtuYIBSagjANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
 BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0
 aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs
-YXNzIDEgUjEwHhcNMjMwNjEwMDk1NzA0WhcNMjgwNjA4MDk1NzA0WjB5MQswCQYDVQQGEwJDTjEt
-MCsGA1UECgwk5rW35Y2X6YW35aix5L+h5oGv5oqA5pyv5pyJ6ZmQ5YWs5Y+4MQ8wDQYDVQQLDAZB
-bGlwYXkxKjAoBgNVBAMMITIwODg2NDEzODY1NjA4NTItMjAyMTAwNDEwMDY2NTg5MTCCASIwDQYJ
-KoZIhvcNAQEBBQADggEPADCCAQoCggEBAIEd3NrgvQfNJv3EKMWgQMWeBAhAYLd4KUrAmrns+NfE
-Q3EAqIurwQyozpvvU2eypj1xyEgy3nKCdvqxTNnC48GYzf9wddroLkmDnLmNCGC5alvdwEaSDJUu
-tHncdOKA5LawoL4BBjVBPs+O9s1L2X4ExyrIv+c0ZrYV6sZ8USBZVnCWVR0Id4F8Rc4Z2BibOAG2
-OJVRGPhjbGnC+WK7UBcn+zq3gC5B9Li4CgMuh320fq2ANZphILHRQEz5lgamPfIIPHws4TTcx3/r
-UQexiZi9F1pTZG1NdzbCv6PyFArbwIZEIjoUTD4u1DLL7Xc8K2Doo6V+yAizCQVNTHfNj6kCAwEA
-AaOCASkwggElMB8GA1UdIwQYMBaAFHEH4gRhFuTl8mXrMQ/J4PQ8mtWRMB0GA1UdDgQWBBTtNjHT
-uu4UgJvbDKNjwR6on4GUgjBABgNVHSAEOTA3MDUGB2CBHAFuAQEwKjAoBggrBgEFBQcCARYcaHR0
+YXNzIDEgUjEwHhcNMjMwNzEwMDkyNTI0WhcNMjgwNzA4MDkyNTI0WjB5MQswCQYDVQQGEwJDTjEt
+MCsGA1UECgwk5rW35Y2X6YGT5LmQ5paH5YyW5Lyg5aqS5pyJ6ZmQ5YWs5Y+4MQ8wDQYDVQQLDAZB
+bGlwYXkxKjAoBgNVBAMMITIwODg2NDE0NjcyMjA3MTItMjAyMTAwNDEwMzYyMDc3NjCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJdMMaKwdGq2wjqD8wHxgcBfsWbPyftSAsrrH4wUrjz+
+/r3SgPTIOsQkCNbhhEB6IQb9SJXTkCxSmcIriEmNFPbGCc2C3P3FgYoUsU0CwMqGOYwOGQqiRn7o
+0KpOKqp6DEdDAIC/AvW9Ojbn7q6AXHwCPnq93qVdvtUGQv4eRIBjvwxSWnqbZcJ94vQxHhKZcioD
+3OL35JLuVeOZjyvh7lafa1RMv+RQR2d/2O1DHfmscYVxGS5C7mCFzxPex1uq3n+Ky7UqucaH1DHd
+qooYMyViTAdBuLdBYUrQmadzphVILz66jI+XFM+GSJo4BFNBSp/uI0TQ3LwjfPY9NDcrpeUCAwEA
+AaOCASkwggElMB8GA1UdIwQYMBaAFHEH4gRhFuTl8mXrMQ/J4PQ8mtWRMB0GA1UdDgQWBBRIKmtH
+DUs4oXxQtuCPdm9gCVO8kjBABgNVHSAEOTA3MDUGB2CBHAFuAQEwKjAoBggrBgEFBQcCARYcaHR0
 cDovL2NhLmFsaXBheS5jb20vY3BzLnBkZjAOBgNVHQ8BAf8EBAMCBsAwLwYDVR0fBCgwJjAkoCKg
-IIYeaHR0cDovL2NhLmFsaXBheS5jb20vY3JsNzguY3JsMGAGCCsGAQUFBwEBBFQwUjAoBggrBgEF
+IIYeaHR0cDovL2NhLmFsaXBheS5jb20vY3JsNzkuY3JsMGAGCCsGAQUFBwEBBFQwUjAoBggrBgEF
 BQcwAoYcaHR0cDovL2NhLmFsaXBheS5jb20vY2E2LmNlcjAmBggrBgEFBQcwAYYaaHR0cDovL2Nh
-LmFsaXBheS5jb206ODM0MC8wDQYJKoZIhvcNAQELBQADggEBAF1thW1UJBmNuqsn7MPPqvRmq6XU
-OuYvyredYeVeuTaMicfZic77Me5d6x4CmXIhOaHJKpI+PolSFi8L6rE70tQniTq7GuunhHCFwkfi
-SaqH/QUzdM4t5DwYuV6TlNaj40y41lpASDtjHVWjZ9VyTq2iTbBQxK4R9agNjlcPXInsanJmwXKT
-GGsD6hFsiFqsiXqUubWaArtPirpuon0p6gkcNvnsDDP751iSkzRfXEBd0199m2i3aU+g7vN8qfHm
-6EfvOQkv/cwoAj7ggKbMRLAmIrs7D3q9lt5/U3PSmCst5ZhE2mcNSAzF0RjfDXTBZnY1pjOql/Zj
-VXhF7mwAZuI=
+LmFsaXBheS5jb206ODM0MC8wDQYJKoZIhvcNAQELBQADggEBAMS3f8oWjfqvI7BfLHCXVppBhyvt
+OIZyPKfxXbe2bY6/9iJqwm8HAwuCd+5AzXIUEJlWw7yHX+K7qf6FBEBRbjrTGQeIYQ75jqAtGN0c
+ad7h2GOOWpqqbJPFK9fMpSjgwy14l6Rguj9LjCRlcHoUPG9oRM5ZHrpXAF4Hw+yLeAUdwKHocbPG
+EiywzRwfCWg61R6HWtnHFzyt/v4+2jblGAmA0vZwh0thWcPVmRVweSP+0ikhnXpb5EPwatuc0P9B
+0kJTjvZVLxlTJMAfO6q3uACWtE2tgVBPSgHVB/3RjJM/cvmX9yb/hu9hilteSaBZpg4buuAnMFkS
+6/d0ZgK99rk=
 -----END CERTIFICATE-----

+ 48 - 48
addons/epay/config.php

@@ -2,66 +2,66 @@
 
 return [
     [
-        'name'    => 'wechat',
-        'title'   => '微信',
-        'type'    => 'array',
+        'name' => 'wechat',
+        'title' => '微信',
+        'type' => 'array',
         'content' => [],
-        'value'   => [
-            'appid'          => '',
-            'app_id'         => 'wx1bc47f317884cb40',
-            'app_secret'     => '9d382a035255f7901b8a0f76ce129f29',
-            'miniapp_id'     => 'wx1bc47f317884cb40',
-            'mch_id'         => '1625774482',
-            'key'            => 'DRs2yi80exLRn6tI4cBhISMfj7SPYMQG',
-            'mode'           => 'normal',
-            'sub_appid'      => '',
-            'sub_app_id'     => '',
+        'value' => [
+            'appid' => '',
+            'app_id' => 'wx1bc47f317884cb40',
+            'app_secret' => '9d382a035255f7901b8a0f76ce129f29',
+            'miniapp_id' => 'wx1bc47f317884cb40',
+            'mch_id' => '1625774482',
+            'key' => 'DRs2yi80exLRn6tI4cBhISMfj7SPYMQG',
+            'mode' => 'normal',
+            'sub_mch_id' => '',
+            'sub_appid' => '',
+            'sub_app_id' => '',
             'sub_miniapp_id' => '',
-            'sub_mch_id'     => '',
-            'notify_url'     => '/addons/epay/api/notifyx/type/wechat',
-            'cert_client'    => '/addons/epay/certs/apiclient_cert.pem',
-            'cert_key'       => '/addons/epay/certs/apiclient_key.pem',
-            'log'            => '1',
+            'notify_url' => '/addons/epay/api/notifyx/type/wechat',
+            'cert_client' => '/addons/epay/certs/apiclient_cert.pem',
+            'cert_key' => '/addons/epay/certs/apiclient_key.pem',
+            'log' => '1',
         ],
-        'rule'    => '',
-        'msg'     => '',
-        'tip'     => '微信参数配置',
-        'ok'      => '',
-        'extend'  => '',
+        'rule' => '',
+        'msg' => '',
+        'tip' => '微信参数配置',
+        'ok' => '',
+        'extend' => '',
     ],
     [
-        'name'    => 'alipay',
-        'title'   => '支付宝',
-        'type'    => 'array',
+        'name' => 'alipay',
+        'title' => '支付宝',
+        'type' => 'array',
         'content' => [],
-        'value'   => [
-            'app_id'         => '2021004100665891',
-            'mode'           => 'normal',
-            'notify_url'     => '/addons/epay/api/notifyx/type/alipay',
-            'return_url'     => '/addons/epay/api/returnx/type/alipay',
+        'value' => [
+            'app_id' => '2021004103620776',
+            'mode' => 'normal',
+            'notify_url' => '/addons/epay/api/notifyx/type/alipay',
+            'return_url' => '/addons/epay/api/returnx/type/alipay',
+            'private_key' => 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXTDGisHRqtsI6g/MB8YHAX7Fmz8n7UgLK6x+MFK48/v690oD0yDrEJAjW4YRAeiEG/UiV05AsUpnCK4hJjRT2xgnNgtz9xYGKFLFNAsDKhjmMDhkKokZ+6NCqTiqqegxHQwCAvwL1vTo25+6ugFx8Aj56vd6lXb7VBkL+HkSAY78MUlp6m2XCfeL0MR4SmXIqA9zi9+SS7lXjmY8r4e5Wn2tUTL/kUEdnf9jtQx35rHGFcRkuQu5ghc8T3sdbqt5/isu1KrnGh9Qx3aqKGDMlYkwHQbi3QWFK0Jmnc6YVSC8+uoyPlxTPhkiaOARTQUqf7iNE0Ny8I3z2PTQ3K6XlAgMBAAECggEBAJF/BHyflFTLTB1ZpufHiC+n1sI4MNUvGOBrG/tqJ+Ugk3mYZcsAgwL8ZEPAu54F1J0UFil/OrZk+NhxZK7WrcJi0CqCHmMs/FX9cEPO0ffw/IZjSFGhnImO+pvMb9thY01kcadeCUqonsMOZ8oIRug6gDspPGNqs4nIa8RU9ys/RXie09GDcDwPjDpzE0M1pofNu+3TeGuu/nnII5PwCXkGx3rtachFcKxyherHKqF9Y81Xp9VQBXizq9vaBx83b6k1w+rDic/O8t/JW0NskrgUhKAlbOVPLN0AuT4RnXtGoUg+2MoZsNH3b12bzgPYVp5ygIUedwYIZ/bBFPjO4kECgYEA0/6E6CtKz6PAnkcXXTBuC56HS3ox48h82whyN2CojrPbBoWX1hKDnlvlJf0eMymr+BoR4Fe75ujWixO5pbRGGt6MTdCessG5GmT8nu2sz3hMHpJPLyaOuPWQ707jf9nU85P0gEv7Q1UKZKdXxZmsYfyo/X8CyGn6TbwRMiJvvm8CgYEAtrQ6MO1ooEK+y1y1nIclURuvPvQd6SMw5wfXODlejxuFBn+XtpVcYmRvJTQSX2+3qaoKtmnD8nCg4lIj0c6ncxouNPh4Dnqqcyj8nydnVb/GUR41XDkKc6QHGQfdcR1XsNnC/Tb9hULysFNHA4T6YeI1nm4i1+0Jehm0YHkQiusCgYBFgSo0MJV7lHW/rxFC9XDvEE/NeEfJJd+BtLg13dQFzYQfFEfe4P0UO47asK1pGt2OH4YC5uDtaSOGP7ZbVMqzXonjrWWKuCcnNzr4JHbHIuraDyA1FlAu5hxZyaSfM101ayn7sm2z+rrIm3EUkTjKe5swWacg7FYrjGCa7l1yswKBgH12Te+DWDGVJAfqZhxTAeEsra8BW/jY3aAI1lYZr0F+mF7aB4iuEH7QkTJvC57VzL2Js0mIX7KAfTptRYOx8XMtK0XcyjTHL31dS/zOxjswMjNKF0J5OSAoJ2ec6wfeKnWbVDcmJ/n2+0jyJvXXv0iwWjmtT+gPMk7Sj/cfq6h5AoGAM65IF5cC2LpmTyYhdBnxb8CFV4dwEk12LZrCQTJrzCdGsPDGDdb8+8wVvkUjBS90Iy3Loll48ogvxBUuVku50O60URo+sEQMy72fXHFyE/773cRf+8h69zLXakMUbi7h7hgY6G24mbyWQRdUBcrasIZMk4e+WvtYUndOruEWRIs=',
             'ali_public_key' => '/addons/epay/certs/alipayCertPublicKey.crt',
-            'private_key'    => 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCBHdza4L0HzSb9xCjFoEDFngQIQGC3eClKwJq57PjXxENxAKiLq8EMqM6b71NnsqY9cchIMt5ygnb6sUzZwuPBmM3/cHXa6C5Jg5y5jQhguWpb3cBGkgyVLrR53HTigOS2sKC+AQY1QT7PjvbNS9l+BMcqyL/nNGa2FerGfFEgWVZwllUdCHeBfEXOGdgYmzgBtjiVURj4Y2xpwvliu1AXJ/s6t4AuQfS4uAoDLod9tH6tgDWaYSCx0UBM+ZYGpj3yCDx8LOE03Md/61EHsYmYvRdaU2RtTXc2wr+j8hQK28CGRCI6FEw+LtQyy+13PCtg6KOlfsgIswkFTUx3zY+pAgMBAAECggEAb+5hfeYCOXch7DBXYCuyux5nRHf64FJtCX67I59JglOEW7xEYQC+VKkqo4fv+B+pee7fv6dJrF9poZ5+jvEi3LwJKP5nTSSmq9hKz5hxwNg8WfN9MjB+c/2PO21gbtNqcu3gC5d7uEMdnnXDgunUXCjsOCzcICUPPZ72bqdq9Oz/8+7YUMjXBFSQSlaws1zoYh6M0KlYQqm5aHVJpu4/53HOdcV26nswWoMJ18EddOfestTpzggoPVdLH9YQttlZRhpysZ47xWdkGxjNMKuLntn8EGAwr/Kn18ov4VuiP0pa4FmBq5x1on2Lr6Cdj1qEER06292IvO+T8wnFnqu14QKBgQDOlwXk3HWD/oyLeMm2BtVDvFB2HxHjS9ilJqE1oMQUnfEnVPKNcQ1fUK4yWtj1H63rTSPe5Av7x0m9Sf7HoEFkOhwvuLyW2HONSqH1rcM3VQjrkkNVBOcPBzyPGS5rHe6BMe4mz2VrdEb466V781kj1JFtlBtSJoHoyALu1Ns17QKBgQCf/1jsnhypkqevKdp4MhCE/Ot90CYGv8qgiZVgm7FcDYF0lLnZ+9Zerb95lEKyCO4Aiv9g5DGzBsZN6J1ZypZqR7wRLc98TB8SKo7vpyQqea14mNSWC1+fOmRxEayQcfK50MUbd4ZBiSi9vaMEn/6XIsmysnJfVXF1J8oY0ebJLQKBgDHFZrEdf95d/CQ55HbLLKQWAViD4b5d7oLTTLFr2vGQn6G3MHxtCSi2elE9W9mqWS9ANW0kidKNz7Ef25bif/6SlWnV2vGIkkYu/df/lfGFthFy+m/IL5aKSse67Fj4LBbKHbMR8kAyEks0EnlLRmWAd8zriq1/A3s+fJ5nf6x9AoGBAIQkUd5DC+sle6aYy53/w1MCzMABXJawanrChwPeMtKTOPr/JqwZaciSeZTBVYBTDbaXFiqA7WctzjRkTSjuv+IRUwthKX9AI11OlvTpt135VsNGfjVaOWR5xqD39uzpn43GFjUEN3cDAAoNiIj2Vz+d9LXI2dtQ5z7aWPi8y34VAoGADu+aLDH8T9RhyAi4l6HwmY7aDsln8eO+ojSBbz/NVoaEx7RAlmnpUwwUiOumSxwqQKAxvOryELYJlDrjJ1geFIKtl47rzUQEhuTQ+n7Ew27l9lR1sVAeTHgChwmRt+OUwYLvaWgGVjdjhNvWTw81nw7GooQquvK7e5JZ9l35E6U=',
             'app_cert_public_key' => '/addons/epay/certs/appCertPublicKey.crt',
             'alipay_root_cert' => '/addons/epay/certs/alipayRootCert.crt',
-            'log'            => '1',
-            'scanpay'        => '0',
+            'log' => '1',
+            'scanpay' => '0',
         ],
-        'rule'    => 'required',
-        'msg'     => '',
-        'tip'     => '支付宝参数配置',
-        'ok'      => '',
-        'extend'  => '',
+        'rule' => 'required',
+        'msg' => '',
+        'tip' => '支付宝参数配置',
+        'ok' => '',
+        'extend' => '',
     ],
     [
-        'name'    => '__tips__',
-        'title'   => '温馨提示',
-        'type'    => 'array',
+        'name' => '__tips__',
+        'title' => '温馨提示',
+        'type' => 'array',
         'content' => [],
-        'value'   => '请注意微信支付证书路径位于/addons/epay/certs目录下,请替换成你自己的证书<br>appid:APP的appid<br>app_id:公众号的appid<br>app_secret:公众号的secret<br>miniapp_id:小程序ID<br>mch_id:微信商户ID<br>key:微信商户支付的密钥',
-        'rule'    => '',
-        'msg'     => '',
-        'tip'     => '微信参数配置',
-        'ok'      => '',
-        'extend'  => '',
+        'value' => '请注意微信支付证书路径位于/addons/epay/certs目录下,请替换成你自己的证书<br>appid:APP的appid<br>app_id:公众号的appid<br>app_secret:公众号的secret<br>miniapp_id:小程序ID<br>mch_id:微信商户ID<br>key:微信商户支付的密钥',
+        'rule' => '',
+        'msg' => '',
+        'tip' => '微信参数配置',
+        'ok' => '',
+        'extend' => '',
     ],
 ];

+ 3 - 0
addons/epay/library/Service.php

@@ -105,6 +105,9 @@ class Service
                     $params['auth_code'] = $auth_code;
                     $result = $pay->pos($params);
                     break;
+                case 'transfer':
+                    $result = $pay->transfer($params);
+                    break;
                 default:
             }
         } else {

+ 75 - 0
application/admin/controller/Topicdongtai.php

@@ -0,0 +1,75 @@
+<?php
+
+namespace app\admin\controller;
+
+use app\common\controller\Backend;
+
+/**
+ * 话题动态
+ *
+ * @icon fa fa-circle-o
+ */
+class Topicdongtai extends Backend
+{
+    
+    /**
+     * Topicdongtai模型对象
+     * @var \app\admin\model\Topicdongtai
+     */
+    protected $model = null;
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->model = new \app\admin\model\Topicdongtai;
+        $this->view->assign("typeList", $this->model->getTypeList());
+    }
+
+    public function import()
+    {
+        parent::import();
+    }
+
+    /**
+     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
+     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
+     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
+     */
+    
+
+    /**
+     * 查看
+     */
+    public function index()
+    {
+        //当前是否为关联查询
+        $this->relationSearch = true;
+        //设置过滤方法
+        $this->request->filter(['strip_tags', 'trim']);
+        if ($this->request->isAjax()) {
+            //如果发送的来源是Selectpage,则转发到Selectpage
+            if ($this->request->request('keyField')) {
+                return $this->selectpage();
+            }
+            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
+
+            $list = $this->model
+                    ->with(['topichub','user'])
+                    ->where($where)
+                    ->order($sort, $order)
+                    ->paginate($limit);
+
+            foreach ($list as $row) {
+                
+                $row->getRelation('topichub')->visible(['name']);
+				$row->getRelation('user')->visible(['nickname']);
+            }
+
+            $result = array("total" => $list->total(), "rows" => $list->items());
+
+            return json($result);
+        }
+        return $this->view->fetch();
+    }
+
+}

+ 75 - 0
application/admin/controller/Topicdongtaianswer.php

@@ -0,0 +1,75 @@
+<?php
+
+namespace app\admin\controller;
+
+use app\common\controller\Backend;
+
+/**
+ * 动态评论管理
+ *
+ * @icon fa fa-circle-o
+ */
+class Topicdongtaianswer extends Backend
+{
+    
+    /**
+     * Topicdongtaianswer模型对象
+     * @var \app\admin\model\Topicdongtaianswer
+     */
+    protected $model = null;
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->model = new \app\admin\model\Topicdongtaianswer;
+        $this->view->assign("levelList", $this->model->getLevelList());
+    }
+
+    public function import()
+    {
+        parent::import();
+    }
+
+    /**
+     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
+     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
+     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
+     */
+    
+
+    /**
+     * 查看
+     */
+    public function index()
+    {
+        //当前是否为关联查询
+        $this->relationSearch = true;
+        //设置过滤方法
+        $this->request->filter(['strip_tags', 'trim']);
+        if ($this->request->isAjax()) {
+            //如果发送的来源是Selectpage,则转发到Selectpage
+            if ($this->request->request('keyField')) {
+                return $this->selectpage();
+            }
+            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
+
+            $list = $this->model
+                    ->with(['user','touser'])
+                    ->where($where)
+                    ->order($sort, $order)
+                    ->paginate($limit);
+
+            foreach ($list as $row) {
+                
+                $row->getRelation('user')->visible(['nickname']);
+                $row->getRelation('touser')->visible(['nickname']);
+            }
+
+            $result = array("total" => $list->total(), "rows" => $list->items());
+
+            return json($result);
+        }
+        return $this->view->fetch();
+    }
+
+}

+ 74 - 0
application/admin/controller/Topicdongtaigood.php

@@ -0,0 +1,74 @@
+<?php
+
+namespace app\admin\controller;
+
+use app\common\controller\Backend;
+
+/**
+ * 用户动态点赞
+ *
+ * @icon fa fa-circle-o
+ */
+class Topicdongtaigood extends Backend
+{
+    
+    /**
+     * Topicdongtaigood模型对象
+     * @var \app\admin\model\Topicdongtaigood
+     */
+    protected $model = null;
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->model = new \app\admin\model\Topicdongtaigood;
+
+    }
+
+    public function import()
+    {
+        parent::import();
+    }
+
+    /**
+     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
+     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
+     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
+     */
+    
+
+    /**
+     * 查看
+     */
+    public function index()
+    {
+        //当前是否为关联查询
+        $this->relationSearch = true;
+        //设置过滤方法
+        $this->request->filter(['strip_tags', 'trim']);
+        if ($this->request->isAjax()) {
+            //如果发送的来源是Selectpage,则转发到Selectpage
+            if ($this->request->request('keyField')) {
+                return $this->selectpage();
+            }
+            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
+
+            $list = $this->model
+                    ->with(['user'])
+                    ->where($where)
+                    ->order($sort, $order)
+                    ->paginate($limit);
+
+            foreach ($list as $row) {
+                
+                $row->getRelation('user')->visible(['nickname']);
+            }
+
+            $result = array("total" => $list->total(), "rows" => $list->items());
+
+            return json($result);
+        }
+        return $this->view->fetch();
+    }
+
+}

+ 74 - 0
application/admin/controller/Topicdongtaiscreen.php

@@ -0,0 +1,74 @@
+<?php
+
+namespace app\admin\controller;
+
+use app\common\controller\Backend;
+
+/**
+ * 用户动态屏蔽
+ *
+ * @icon fa fa-circle-o
+ */
+class Topicdongtaiscreen extends Backend
+{
+    
+    /**
+     * Topicdongtaiscreen模型对象
+     * @var \app\admin\model\Topicdongtaiscreen
+     */
+    protected $model = null;
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->model = new \app\admin\model\Topicdongtaiscreen;
+
+    }
+
+    public function import()
+    {
+        parent::import();
+    }
+
+    /**
+     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
+     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
+     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
+     */
+    
+
+    /**
+     * 查看
+     */
+    public function index()
+    {
+        //当前是否为关联查询
+        $this->relationSearch = true;
+        //设置过滤方法
+        $this->request->filter(['strip_tags', 'trim']);
+        if ($this->request->isAjax()) {
+            //如果发送的来源是Selectpage,则转发到Selectpage
+            if ($this->request->request('keyField')) {
+                return $this->selectpage();
+            }
+            list($where, $sort, $order, $offset, $limit) = $this->buildparams();
+
+            $list = $this->model
+                    ->with(['user'])
+                    ->where($where)
+                    ->order($sort, $order)
+                    ->paginate($limit);
+
+            foreach ($list as $row) {
+                
+                $row->getRelation('user')->visible(['nickname']);
+            }
+
+            $result = array("total" => $list->total(), "rows" => $list->items());
+
+            return json($result);
+        }
+        return $this->view->fetch();
+    }
+
+}

+ 11 - 0
application/admin/controller/dispatch/Skillauth.php

@@ -2,6 +2,7 @@
 
 namespace app\admin\controller\dispatch;
 
+use app\admin\model\Message;
 use app\common\controller\Backend;
 use think\Db;
 /**
@@ -121,6 +122,16 @@ class Skillauth extends Backend
                     if($result === false || (isset($params["status"]) && $params["status"] == 1 && !$res)) {
                         $this->error(__('审核失败!'));
                     }
+                    if (isset($params['status'])) {
+                        $skill = new \app\admin\model\dispatch\Skill();
+                        $skillData = $skill->where(['id'=>$row['skill_id']])->find();
+                        $skillName = isset($skillData['name']) ? $skillData['name'] : '';
+                        if ($params['status'] == 1) {//审核通过
+                            Message::addMessage($row["user_id"],'技能认证申请通知','您申请的技能'.$skillName.'认证申请,审核通过。');
+                        } elseif ($params['status'] == -1) {//未通过
+                            Message::addMessage($row["user_id"],'技能认证申请通知','您申请的技能'.$skillName.'认证申请,审核未通过。');
+                        }
+                    }
                     Db::commit();
                 } catch (ValidateException $e) {
                     Db::rollback();

+ 49 - 0
application/admin/controller/guild/Guild.php

@@ -2,6 +2,7 @@
 
 namespace app\admin\controller\guild;
 
+use app\admin\model\Message;
 use app\common\controller\Backend;
 
 /**
@@ -74,4 +75,52 @@ class Guild extends Backend
         return $this->view->fetch();
     }
 
+    /**
+     * 编辑
+     */
+    public function edit($ids = null)
+    {
+        $row = $this->model->get($ids);
+        if (!$row) {
+            $this->error(__('No Results were found'));
+        }
+        $adminIds = $this->getDataLimitAdminIds();
+        if (is_array($adminIds)) {
+            if (!in_array($row[$this->dataLimitField], $adminIds)) {
+                $this->error(__('You have no permission'));
+            }
+        }
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+            if (!$params) {
+                $this->error(__('Parameter %s can not be empty', ''));
+            }
+            $params = $this->preExcludeFields($params);
+            $result = false;
+            try {
+                //是否采用模型验证
+                if ($this->modelValidate) {
+                    $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
+                    $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
+                    $row->validateFailException(true)->validate($validate);
+                }
+                if (isset($params['status'])) {
+                    if ($params['status'] == 1) {
+                        Message::addMessage($row['user_id'],'家族申请通知','您申请的家族'.$row['name'].'已审核通过');
+                    } elseif ($params['status'] == -1) {
+                        Message::addMessage($row['user_id'],'家族申请通知','您申请的家族'.$row['name'].'已被拒绝');
+                    }
+                }
+                $result = $row->allowField(true)->save($params);
+            } catch (ValidateException|PDOException|Exception $e) {
+                $this->error($e->getMessage());
+            }
+            if ($result == false) {
+                $this->error(__('No rows were updated'));
+            }
+            $this->success();
+        }
+        $this->view->assign("row", $row);
+        return $this->view->fetch();
+    }
 }

+ 1 - 1
application/admin/controller/user/Anchor.php

@@ -117,7 +117,7 @@ class Anchor extends Backend
                     \app\common\model\User::update($data, ["id" => $row["user_id"]]);
                     // +message
                     $params["status"] == 1 && \app\common\model\Message::addMessage($row["user_id"], "主播申请通知", "恭喜,您的主播申请审核已通过,快去开通直播间吧!");
-
+                    $params["status"] == 2 && \app\common\model\Message::addMessage($row["user_id"], "主播申请通知", "您的主播申请已被审核拒绝。");
 
                     //是否采用模型验证
                     if ($this->modelValidate) {

+ 8 - 3
application/admin/controller/user/Report.php

@@ -22,7 +22,11 @@ class Report extends Backend
     {
         parent::_initialize();
         $this->model = new \app\admin\model\user\Report;
-
+        $typeList = [
+            'statusList' => $this->model->getStatusList(),
+        ];
+        $this->view->assign($typeList);
+        $this->assignconfig($typeList);
     }
 
     public function import()
@@ -54,14 +58,15 @@ class Report extends Backend
             list($where, $sort, $order, $offset, $limit) = $this->buildparams();
 
             $list = $this->model
-                    ->with(['user'])
+                    ->with(['user','ruser'])
                     ->where($where)
                     ->order($sort, $order)
                     ->paginate($limit);
 
             foreach ($list as &$row) {
                 $row->getRelation('user')->visible(['u_id','nickname']);
-                $row->model = $row->reportable;
+                $row->getRelation('ruser')->visible(['u_id','nickname']);
+                //$row->model = $row->reportable;
             }
 
             $result = array("total" => $list->total(), "rows" => $list->items());

+ 18 - 0
application/admin/lang/zh-cn/topicdongtai.php

@@ -0,0 +1,18 @@
+<?php
+
+return [
+    'Id'            => 'ID',
+    'Topic_id'      => '话题id',
+    'User_id'       => '用户ID',
+    'Content'       => '描述',
+    'Images'        => '图片',
+    'Type'          => '媒体类型',
+    'Type 1'        => '图片',
+    'Type 2'        => '视频',
+    'Goodnum'       => '点赞数量',
+    'Answernum'     => '回复数量',
+    'Createtime'    => '创建时间',
+    'Updatetime'    => '更新时间',
+    'Topichub.name' => '话题名称',
+    'User.nickname' => '昵称'
+];

+ 18 - 0
application/admin/lang/zh-cn/topicdongtaianswer.php

@@ -0,0 +1,18 @@
+<?php
+
+return [
+    'Id'            => 'ID',
+    'Dt_id'         => '动态ID',
+    'Floor'         => '楼层',
+    'User_id'       => '用户ID',
+    'Content'       => '内容',
+    'To_user_id'    => '对谁说',
+    'Goodnum'       => '点赞数量',
+    'Level'         => '回复类型',
+    'Level 1'       => '层主回复',
+    'Level 2'       => '层中回复',
+    'Createtime'    => '创建时间',
+    'Updatetime'    => '更新时间',
+    'User.nickname' => '昵称',
+    'User.to_nickname' => '对方昵称',
+];

+ 9 - 0
application/admin/lang/zh-cn/topicdongtaigood.php

@@ -0,0 +1,9 @@
+<?php
+
+return [
+    'Id'            => 'ID',
+    'Dt_id'         => '动态ID',
+    'User_id'       => '点赞用户ID',
+    'Createtime'    => '时间',
+    'User.nickname' => '昵称'
+];

+ 8 - 0
application/admin/lang/zh-cn/topicdongtaiscreen.php

@@ -0,0 +1,8 @@
+<?php
+
+return [
+    'Id'            => 'ID',
+    'Dt_id'         => '动态ID',
+    'User_id'       => '用户ID',
+    'User.nickname' => '昵称'
+];

+ 4 - 1
application/admin/lang/zh-cn/user/report.php

@@ -9,5 +9,8 @@ return [
     'Image'         => '图片说明',
     'Createtime'    => '创建时间',
     'User.u_id'     => '前端用户ID',
-    'User.nickname' => '昵称'
+    'User.nickname' => '昵称',
+    'Status'        => '状态',
+    'Status 0'      => '待处理',
+    'Status 1'      => '已处理',
 ];

+ 59 - 0
application/admin/model/Topicdongtai.php

@@ -0,0 +1,59 @@
+<?php
+
+namespace app\admin\model;
+
+use think\Model;
+
+
+class Topicdongtai extends Model
+{
+
+    
+
+    
+
+    // 表名
+    protected $name = 'topic_dongtai';
+    
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    protected $deleteTime = false;
+
+    // 追加属性
+    protected $append = [
+        'type_text'
+    ];
+    
+
+    
+    public function getTypeList()
+    {
+        return ['1' => __('Type 1'), '2' => __('Type 2')];
+    }
+
+
+    public function getTypeTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['type']) ? $data['type'] : '');
+        $list = $this->getTypeList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+
+
+
+    public function topichub()
+    {
+        return $this->belongsTo('Topichub', 'topic_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+
+
+    public function user()
+    {
+        return $this->belongsTo('User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+}

+ 57 - 0
application/admin/model/Topicdongtaianswer.php

@@ -0,0 +1,57 @@
+<?php
+
+namespace app\admin\model;
+
+use think\Model;
+
+
+class Topicdongtaianswer extends Model
+{
+
+    
+
+    
+
+    // 表名
+    protected $name = 'topic_dongtai_answer';
+    
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+    protected $deleteTime = false;
+
+    // 追加属性
+    protected $append = [
+        'level_text'
+    ];
+    
+
+    
+    public function getLevelList()
+    {
+        return ['1' => __('Level 1'), '2' => __('Level 2')];
+    }
+
+
+    public function getLevelTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['level']) ? $data['level'] : '');
+        $list = $this->getLevelList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+
+
+
+    public function user()
+    {
+        return $this->belongsTo('User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+    public function touser()
+    {
+        return $this->belongsTo('User', 'to_user_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+}

+ 44 - 0
application/admin/model/Topicdongtaigood.php

@@ -0,0 +1,44 @@
+<?php
+
+namespace app\admin\model;
+
+use think\Model;
+
+
+class Topicdongtaigood extends Model
+{
+
+    
+
+    
+
+    // 表名
+    protected $name = 'topic_dongtai_good';
+    
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = false;
+    protected $deleteTime = false;
+
+    // 追加属性
+    protected $append = [
+
+    ];
+    
+
+    
+
+
+
+
+
+
+
+    public function user()
+    {
+        return $this->belongsTo('User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+}

+ 44 - 0
application/admin/model/Topicdongtaiscreen.php

@@ -0,0 +1,44 @@
+<?php
+
+namespace app\admin\model;
+
+use think\Model;
+
+
+class Topicdongtaiscreen extends Model
+{
+
+    
+
+    
+
+    // 表名
+    protected $name = 'topic_dongtai_screen';
+    
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = false;
+
+    // 定义时间戳字段名
+    protected $createTime = false;
+    protected $updateTime = false;
+    protected $deleteTime = false;
+
+    // 追加属性
+    protected $append = [
+
+    ];
+    
+
+    
+
+
+
+
+
+
+
+    public function user()
+    {
+        return $this->belongsTo('User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+}

+ 16 - 1
application/admin/model/user/Report.php

@@ -20,14 +20,29 @@ class Report extends Model
 
     // 追加属性
     protected $append = [
-
+        'status_text'
     ];
 
     public function user()
     {
         return $this->belongsTo('app\admin\model\User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
     }
+    public function ruser()
+    {
+        return $this->belongsTo('app\admin\model\User', 'ruser_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+
+    public function getStatusList()
+    {
+        return ['0' =>__('Status 0'), '1' =>__('Status 1')];
+    }
 
+    public function getStatusTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
+        $list = $this->getStatusList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
     /**
      * 获取举报对应的多态模型。
      */

+ 27 - 0
application/admin/validate/Topicdongtai.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace app\admin\validate;
+
+use think\Validate;
+
+class Topicdongtai extends Validate
+{
+    /**
+     * 验证规则
+     */
+    protected $rule = [
+    ];
+    /**
+     * 提示消息
+     */
+    protected $message = [
+    ];
+    /**
+     * 验证场景
+     */
+    protected $scene = [
+        'add'  => [],
+        'edit' => [],
+    ];
+    
+}

+ 27 - 0
application/admin/validate/Topicdongtaianswer.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace app\admin\validate;
+
+use think\Validate;
+
+class Topicdongtaianswer extends Validate
+{
+    /**
+     * 验证规则
+     */
+    protected $rule = [
+    ];
+    /**
+     * 提示消息
+     */
+    protected $message = [
+    ];
+    /**
+     * 验证场景
+     */
+    protected $scene = [
+        'add'  => [],
+        'edit' => [],
+    ];
+    
+}

+ 27 - 0
application/admin/validate/Topicdongtaigood.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace app\admin\validate;
+
+use think\Validate;
+
+class Topicdongtaigood extends Validate
+{
+    /**
+     * 验证规则
+     */
+    protected $rule = [
+    ];
+    /**
+     * 提示消息
+     */
+    protected $message = [
+    ];
+    /**
+     * 验证场景
+     */
+    protected $scene = [
+        'add'  => [],
+        'edit' => [],
+    ];
+    
+}

+ 27 - 0
application/admin/validate/Topicdongtaiscreen.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace app\admin\validate;
+
+use think\Validate;
+
+class Topicdongtaiscreen extends Validate
+{
+    /**
+     * 验证规则
+     */
+    protected $rule = [
+    ];
+    /**
+     * 提示消息
+     */
+    protected $message = [
+    ];
+    /**
+     * 验证场景
+     */
+    protected $scene = [
+        'add'  => [],
+        'edit' => [],
+    ];
+    
+}

+ 66 - 0
application/admin/view/topicdongtai/add.html

@@ -0,0 +1,66 @@
+<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Topic_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-topic_id" data-rule="required" data-source="topichub/index" class="form-control selectpage" name="row[topic_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-content" class="form-control" name="row[content]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-images" class="form-control" size="50" name="row[images]" type="textarea">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="faupload-images" class="btn btn-danger faupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-images"></span>
+            </div>
+            <ul class="row list-inline faupload-preview" id="p-images"></ul>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-type" class="form-control selectpicker" name="row[type]">
+                {foreach name="typeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="1"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goodnum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goodnum" class="form-control" name="row[goodnum]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Answernum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-answernum" class="form-control" name="row[answernum]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 66 - 0
application/admin/view/topicdongtai/edit.html

@@ -0,0 +1,66 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Topic_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-topic_id" data-rule="required" data-source="topichub/index" class="form-control selectpage" name="row[topic_id]" type="text" value="{$row.topic_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="{$row.user_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-content" class="form-control" name="row[content]" type="text" value="{$row.content|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-images" class="form-control" size="50" name="row[images]" type="textarea" value="{$row.images|htmlentities}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="faupload-images" class="btn btn-danger faupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-images"></span>
+            </div>
+            <ul class="row list-inline faupload-preview" id="p-images"></ul>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-type" class="form-control selectpicker" name="row[type]">
+                {foreach name="typeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.type"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goodnum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goodnum" class="form-control" name="row[goodnum]" type="number" value="{$row.goodnum|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Answernum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-answernum" class="form-control" name="row[answernum]" type="number" value="{$row.answernum|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 35 - 0
application/admin/view/topicdongtai/index.html

@@ -0,0 +1,35 @@
+<div class="panel panel-default panel-intro">
+    {:build_heading()}
+
+    <div class="panel-body">
+        <div id="myTabContent" class="tab-content">
+            <div class="tab-pane fade active in" id="one">
+                <div class="widget-body no-padding">
+                    <div id="toolbar" class="toolbar">
+                        <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
+                        <!--<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('topicdongtai/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
+                        <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('topicdongtai/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
+                        <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('topicdongtai/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
+                        <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('topicdongtai/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a>
+
+                        <div class="dropdown btn-group {:$auth->check('topicdongtai/multi')?'':'hide'}">
+                            <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
+                            <ul class="dropdown-menu text-left" role="menu">
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
+                            </ul>
+                        </div>-->
+
+                        
+                    </div>
+                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
+                           data-operate-edit="{:$auth->check('topicdongtai/edit')}" 
+                           data-operate-del="{:$auth->check('topicdongtai/del')}" 
+                           width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>

+ 58 - 0
application/admin/view/topicdongtaianswer/add.html

@@ -0,0 +1,58 @@
+<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Dt_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-dt_id" data-rule="required" data-source="topicdongtai/index" class="form-control selectpage" name="row[dt_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Floor')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-floor" class="form-control" name="row[floor]" type="number" value="2">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-content" class="form-control" name="row[content]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('To_user_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-to_user_id" data-rule="required" data-source="to/user/index" class="form-control selectpage" name="row[to_user_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goodnum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goodnum" class="form-control" name="row[goodnum]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Level')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-level" class="form-control selectpicker" name="row[level]">
+                {foreach name="levelList" item="vo"}
+                    <option value="{$key}" {in name="key" value="1"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 58 - 0
application/admin/view/topicdongtaianswer/edit.html

@@ -0,0 +1,58 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Dt_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-dt_id" data-rule="required" data-source="topicdongtai/index" data-field="id" class="form-control selectpage" name="row[dt_id]" type="text" value="{$row.dt_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Floor')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-floor" class="form-control" name="row[floor]" type="number" value="{$row.floor|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="{$row.user_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-content" class="form-control" name="row[content]" type="text" value="{$row.content|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('To_user_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-to_user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[to_user_id]" type="text" value="{$row.to_user_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goodnum')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goodnum" class="form-control" name="row[goodnum]" type="number" value="{$row.goodnum|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Level')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-level" class="form-control selectpicker" name="row[level]">
+                {foreach name="levelList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.level"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 35 - 0
application/admin/view/topicdongtaianswer/index.html

@@ -0,0 +1,35 @@
+<div class="panel panel-default panel-intro">
+    {:build_heading()}
+
+    <div class="panel-body">
+        <div id="myTabContent" class="tab-content">
+            <div class="tab-pane fade active in" id="one">
+                <div class="widget-body no-padding">
+                    <div id="toolbar" class="toolbar">
+                        <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
+                        <!--<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('topicdongtaianswer/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
+                        <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('topicdongtaianswer/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
+                        <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('topicdongtaianswer/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
+                        <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('topicdongtaianswer/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a>
+
+                        <div class="dropdown btn-group {:$auth->check('topicdongtaianswer/multi')?'':'hide'}">
+                            <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
+                            <ul class="dropdown-menu text-left" role="menu">
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
+                            </ul>
+                        </div>-->
+
+                        
+                    </div>
+                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
+                           data-operate-edit="{:$auth->check('topicdongtaianswer/edit')}" 
+                           data-operate-del="{:$auth->check('topicdongtaianswer/del')}" 
+                           width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>

+ 22 - 0
application/admin/view/topicdongtaigood/add.html

@@ -0,0 +1,22 @@
+<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Dt_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-dt_id" data-rule="required" data-source="topicdongtai/index" data-field="id" class="form-control selectpage" name="row[dt_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 22 - 0
application/admin/view/topicdongtaigood/edit.html

@@ -0,0 +1,22 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Dt_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-dt_id" data-rule="required" data-source="topicdongtai/index" data-field="id" class="form-control selectpage" name="row[dt_id]" type="text" value="{$row.dt_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="{$row.user_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 35 - 0
application/admin/view/topicdongtaigood/index.html

@@ -0,0 +1,35 @@
+<div class="panel panel-default panel-intro">
+    {:build_heading()}
+
+    <div class="panel-body">
+        <div id="myTabContent" class="tab-content">
+            <div class="tab-pane fade active in" id="one">
+                <div class="widget-body no-padding">
+                    <div id="toolbar" class="toolbar">
+                        <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
+                        <!--<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('topicdongtaigood/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
+                        <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('topicdongtaigood/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
+                        <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('topicdongtaigood/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
+                        <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('topicdongtaigood/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a>
+
+                        <div class="dropdown btn-group {:$auth->check('topicdongtaigood/multi')?'':'hide'}">
+                            <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
+                            <ul class="dropdown-menu text-left" role="menu">
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
+                            </ul>
+                        </div>-->
+
+                        
+                    </div>
+                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
+                           data-operate-edit="{:$auth->check('topicdongtaigood/edit')}" 
+                           data-operate-del="{:$auth->check('topicdongtaigood/del')}" 
+                           width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>

+ 22 - 0
application/admin/view/topicdongtaiscreen/add.html

@@ -0,0 +1,22 @@
+<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Dt_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-dt_id" data-rule="required" data-source="dt/index" class="form-control selectpage" name="row[dt_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 22 - 0
application/admin/view/topicdongtaiscreen/edit.html

@@ -0,0 +1,22 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Dt_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-dt_id" data-rule="required" data-source="dt/index" class="form-control selectpage" name="row[dt_id]" type="text" value="{$row.dt_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-user_id" data-rule="required" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="{$row.user_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 35 - 0
application/admin/view/topicdongtaiscreen/index.html

@@ -0,0 +1,35 @@
+<div class="panel panel-default panel-intro">
+    {:build_heading()}
+
+    <div class="panel-body">
+        <div id="myTabContent" class="tab-content">
+            <div class="tab-pane fade active in" id="one">
+                <div class="widget-body no-padding">
+                    <div id="toolbar" class="toolbar">
+                        <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
+                        <!--<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('topicdongtaiscreen/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
+                        <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('topicdongtaiscreen/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
+                        <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('topicdongtaiscreen/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
+                        <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('topicdongtaiscreen/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a>
+
+                        <div class="dropdown btn-group {:$auth->check('topicdongtaiscreen/multi')?'':'hide'}">
+                            <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
+                            <ul class="dropdown-menu text-left" role="menu">
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
+                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
+                            </ul>
+                        </div>-->
+
+                        
+                    </div>
+                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
+                           data-operate-edit="{:$auth->check('topicdongtaiscreen/edit')}" 
+                           data-operate-del="{:$auth->check('topicdongtaiscreen/del')}" 
+                           width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>

+ 15 - 5
application/admin/view/user/report/edit.html

@@ -28,14 +28,24 @@
         <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
         <div class="col-xs-12 col-sm-8">
             <div class="input-group">
-                <input id="c-image" class="form-control" size="50" name="row[image]" type="text" value="{$row.image|htmlentities}">
+                <input id="c-images" class="form-control" size="50" name="row[images]" type="text" value="{$row.images|htmlentities}">
                 <div class="input-group-addon no-border no-padding">
-                    <span><button type="button" id="faupload-image" class="btn btn-danger faupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                    <span><button type="button" id="faupload-images" class="btn btn-danger faupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                 </div>
-                <span class="msg-box n-right" for="c-image"></span>
+                <span class="msg-box n-right" for="c-images"></span>
             </div>
-            <ul class="row list-inline faupload-preview" id="p-image"></ul>
+            <ul class="row list-inline faupload-preview" id="p-images"></ul>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <select id="c-status" data-rule="required" class="form-control selectpicker" name="row[status]">
+                {foreach name="statusList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.status"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
         </div>
     </div>
     <div class="form-group layer-footer">

+ 84 - 4
application/api/controller/Money.php

@@ -110,7 +110,10 @@ class Money extends Common
 //        $data["createtime"] = time();
         $orderid = $recharOrderMode->execute("INSERT INTO `hx_rechar_order` (`user_id` , `order_no` , `money` , `jewel` , `createtime`) VALUES ($user_id , $out_trade_no , $money , " . $jewel . " , $time)");
         if (!$orderid) $this->error("订单创建失败!");
-
+        $payTest = config('pay_test');//支付测试:0=正常,1=支付0.01
+        if ($payTest == 1) {
+            $money = 0.01;
+        }
         $params = [
             'type'      => $type,
             'orderid'   => $out_trade_no,
@@ -140,7 +143,7 @@ class Money extends Common
             }
         }
 
-        $this->rebate($user_id, $amount);
+        //$this->rebate($user_id, $amount);
 
         // +EXP
         \app\common\model\TaskLog::tofinish($user_id, "5EMwg7la", 1);
@@ -1125,6 +1128,7 @@ class Money extends Common
         }
         $list = \app\common\model\RecharConfig::where($where)->order("weight", "asc")->select();
         if (!$list) $this->error("配置信息为空!");
+
         foreach ($list as $k => $v) {
             $money = $v["money"] / 100;
             $list[$k]["money"] = $money;
@@ -1159,6 +1163,16 @@ class Money extends Common
             $list[$k]["jewel"] = (int)$v["jewel"];
             $list[$k]["money"] = $v["money"] / 100;
         }
+        //设置是否使用自定义
+        $rechargeDefine = config('site.exchange_define');
+        if ($rechargeDefine == 1) {
+            $fieldArr = [[
+                'id' => -1,
+                'jewel' => 0,
+                'money' => 0.00,
+            ],];
+            $list = array_merge($list,$fieldArr);
+        }
         $this->success("获取成功!", $list);
     }
 
@@ -1530,7 +1544,7 @@ class Money extends Common
             }
         }
 
-        $this->rebate($user_id, $amount);
+        //$this->rebate($user_id, $amount);
 
         // +EXP
         \app\common\model\TaskLog::tofinish($user_id, "5EMwg7la", 1);
@@ -1544,7 +1558,7 @@ class Money extends Common
         }
 
         // 查询新人礼包
-        $this->addBagGift($user_id, $amount);
+        //$this->addBagGift($user_id, $amount);
 
         $this->success("购买成功!");
     }
@@ -1762,4 +1776,70 @@ class Money extends Common
         return md5(md5($password) . $salt);
     }
 
+    /**
+     * 提现测试
+     * @return void
+     */
+    public function transfer()
+    {
+        try {
+            $type = 'alipay';
+            $out_trade_no = 'withdraw_order_001';
+            $title = 'test_withdraw';
+            $money = 0.01;
+            $method = 'transfer';
+            $notifyurl = request()->root(true) . '/api/notify/' . $type . 'notify';
+            $returnurl = request()->root(true) . '/addons/epay/index/' . $type . 'return/out_trade_no/' . $out_trade_no;
+
+            $params = [
+                'type'      => $type,
+                'orderid'   => $out_trade_no,
+                'title'     => $title,
+                'amount'    => $money,
+                'method'    => $method,
+                'notifyurl' => $notifyurl,
+                'returnurl' => $returnurl,
+            ];
+
+            $result = Service::submitOrder($params);
+            echo '<pre>';var_dump($result);exit;
+            $this->success('操作成功',$result);
+        } catch (Exception $e) {
+            $this->error($e->getMessage());
+        }
+    }
+
+    //提现转账(新版2020-01-01)
+    public function withdrawTransfer() {
+        $info = [
+            'money' => 0.10,
+            'alipay_account' => '13651955934'
+        ];
+        $data['out_biz_no'] = getMillisecond() . mt_rand(1, 1000); //商户订单号
+        $data['trans_amount'] = $info['money']; //订单总金额,单位为元,精确到小数点后两位
+        $data['product_code'] = 'TRANS_ACCOUNT_NO_PWD';//业务产品码,收发现金红包固定为:STD_RED_PACKET;单笔无密转账到支付宝账户固定为:TRANS_ACCOUNT_NO_PWD;单笔无密转账到银行卡固定为:TRANS_BANKCARD_NO_PWD
+        $data['biz_scene'] = 'DIRECT_TRANSFER'; //描述特定的业务场景,可传的参数如下:PERSONAL_COLLECTION:C2C现金红包-领红包;DIRECT_TRANSFER:B2C现金红包、单笔无密转账到支付宝/银行卡
+        $data['order_title'] = 'GG语音提现'; //转账业务的标题,用于在支付宝用户的账单里显示
+
+        $data['payee_info']['identity'] = $info['alipay_account'];//收款方支付宝id或支付宝账户
+
+        /*if ($info['alipay_type'] == 1) { //支付宝账户
+            $data['payee_info']['identity_type'] = 'ALIPAY_LOGON_ID';
+            //收款支付宝账号真实姓名, 不为空时支付宝会验证
+            $data['payee_info']['name'] = $info['name'];
+        } else { //支付宝id
+            $data['payee_info']['identity_type'] = 'ALIPAY_USER_ID';
+            $data['payee_info']['name'] = '';
+        }*/
+        //支付宝id
+        $data['payee_info']['identity_type'] = 'ALIPAY_USER_ID';
+        $data['payee_info']['name'] = '';
+
+        //转账备注(支持200个英文/100个汉字)。当付款方为企业账户,且转账金额达到(大于等于)50000元,remark不能为空。收款方可见,会展示在收款用户的收支详情中。
+        $data['remark'] = 'GG语音提现';
+        require_once("../extend/AliPay/AliPay.php");
+        $alipay =new \AliPay();
+        $result =$alipay->AliPayWithdraw($data);
+        return $result;
+    }
 }

+ 1 - 0
application/api/controller/Topicdongtai.php

@@ -186,6 +186,7 @@ class Topicdongtai extends Api
         $up = Db::name('topic_dongtai')->where('id',$id)->setInc('goodnum');
 
         if($rs && $up !== false){
+            \app\common\model\TaskLog::tofinish($this->auth->id,"VpXtablCsZ",1);
             Db::commit();
             $this->success('点赞成功');
         }

+ 12 - 1
application/api/controller/Usercenter.php

@@ -1190,7 +1190,18 @@ class UserCenter extends Common
         try {
             $field = 'id,money,real_money';
             $result = model('WithdrawalConfig')->field($field)->autopage()->order('weigh asc')->select();
-
+            if (!empty($result)) {
+                //设置是否使用自定义
+                $withdrawDefine = config('site.withdraw_define');
+                if ($withdrawDefine == 1) {
+                    $fieldArr = [[
+                        'id' => -1,
+                        'money' => 0,
+                        'real_money' => 0.00,
+                    ],];
+                    $result = array_merge($result,$fieldArr);
+                }
+            }
             $this->success('获取成功',$result);
         } catch (Exception $e) {
             $this->error($e->getMessage());

+ 8 - 0
application/config.php

@@ -420,4 +420,12 @@ return [
         'app_secret' => '4yku6nam6YK0TGdlEemkmMbBR4catDVU',
         'app_code' => '3f4fc2408a0143509e5be5c20eb97c5b',
     ],
+    //支付宝 rsa公钥 私钥  支付宝公钥
+    'ali_app_id' => '2021004103620776', //appid
+    'ali_sign_type' => 'RSA2', //签名
+    'notify_url' => 'https://ggyuyin.huxiukeji.cn/api/notify/alipaynotify',
+    'public_key' => 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl0wxorB0arbCOoPzAfGBwF+xZs/J+1ICyusfjBSuPP7+vdKA9Mg6xCQI1uGEQHohBv1IldOQLFKZwiuISY0U9sYJzYLc/cWBihSxTQLAyoY5jA4ZCqJGfujQqk4qqnoMR0MAgL8C9b06NufuroBcfAI+er3epV2+1QZC/h5EgGO/DFJaeptlwn3i9DEeEplyKgPc4vfkku5V45mPK+HuVp9rVEy/5FBHZ3/Y7UMd+axxhXEZLkLuYIXPE97HW6ref4rLtSq5xofUMd2qihgzJWJMB0G4t0FhStCZp3OmFUgvPrqMj5cUz4ZImjgEU0FKn+4jRNDcvCN89j00Nyul5QIDAQAB',
+    'private_key' => 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXTDGisHRqtsI6g/MB8YHAX7Fmz8n7UgLK6x+MFK48/v690oD0yDrEJAjW4YRAeiEG/UiV05AsUpnCK4hJjRT2xgnNgtz9xYGKFLFNAsDKhjmMDhkKokZ+6NCqTiqqegxHQwCAvwL1vTo25+6ugFx8Aj56vd6lXb7VBkL+HkSAY78MUlp6m2XCfeL0MR4SmXIqA9zi9+SS7lXjmY8r4e5Wn2tUTL/kUEdnf9jtQx35rHGFcRkuQu5ghc8T3sdbqt5/isu1KrnGh9Qx3aqKGDMlYkwHQbi3QWFK0Jmnc6YVSC8+uoyPlxTPhkiaOARTQUqf7iNE0Ny8I3z2PTQ3K6XlAgMBAAECggEBAJF/BHyflFTLTB1ZpufHiC+n1sI4MNUvGOBrG/tqJ+Ugk3mYZcsAgwL8ZEPAu54F1J0UFil/OrZk+NhxZK7WrcJi0CqCHmMs/FX9cEPO0ffw/IZjSFGhnImO+pvMb9thY01kcadeCUqonsMOZ8oIRug6gDspPGNqs4nIa8RU9ys/RXie09GDcDwPjDpzE0M1pofNu+3TeGuu/nnII5PwCXkGx3rtachFcKxyherHKqF9Y81Xp9VQBXizq9vaBx83b6k1w+rDic/O8t/JW0NskrgUhKAlbOVPLN0AuT4RnXtGoUg+2MoZsNH3b12bzgPYVp5ygIUedwYIZ/bBFPjO4kECgYEA0/6E6CtKz6PAnkcXXTBuC56HS3ox48h82whyN2CojrPbBoWX1hKDnlvlJf0eMymr+BoR4Fe75ujWixO5pbRGGt6MTdCessG5GmT8nu2sz3hMHpJPLyaOuPWQ707jf9nU85P0gEv7Q1UKZKdXxZmsYfyo/X8CyGn6TbwRMiJvvm8CgYEAtrQ6MO1ooEK+y1y1nIclURuvPvQd6SMw5wfXODlejxuFBn+XtpVcYmRvJTQSX2+3qaoKtmnD8nCg4lIj0c6ncxouNPh4Dnqqcyj8nydnVb/GUR41XDkKc6QHGQfdcR1XsNnC/Tb9hULysFNHA4T6YeI1nm4i1+0Jehm0YHkQiusCgYBFgSo0MJV7lHW/rxFC9XDvEE/NeEfJJd+BtLg13dQFzYQfFEfe4P0UO47asK1pGt2OH4YC5uDtaSOGP7ZbVMqzXonjrWWKuCcnNzr4JHbHIuraDyA1FlAu5hxZyaSfM101ayn7sm2z+rrIm3EUkTjKe5swWacg7FYrjGCa7l1yswKBgH12Te+DWDGVJAfqZhxTAeEsra8BW/jY3aAI1lYZr0F+mF7aB4iuEH7QkTJvC57VzL2Js0mIX7KAfTptRYOx8XMtK0XcyjTHL31dS/zOxjswMjNKF0J5OSAoJ2ec6wfeKnWbVDcmJ/n2+0jyJvXXv0iwWjmtT+gPMk7Sj/cfq6h5AoGAM65IF5cC2LpmTyYhdBnxb8CFV4dwEk12LZrCQTJrzCdGsPDGDdb8+8wVvkUjBS90Iy3Loll48ogvxBUuVku50O60URo+sEQMy72fXHFyE/773cRf+8h69zLXakMUbi7h7hgY6G24mbyWQRdUBcrasIZMk4e+WvtYUndOruEWRIs=',
+    'ali_public_key' => '/addons/epay/certs/alipayCertPublicKey.crt',
+    'pay_test' => 1,//支付测试:0=正常,1=支付0.01
 ];

+ 4 - 2
application/extra/site.php

@@ -43,8 +43,8 @@ return [
     'miniqrcode' => '/uploads/20210307/55d9bb2934adc62470fb315ec8365034.png',
     'is_force' => '0',
     'apkUrl' => 'https://ceshi-1302263099.cos.ap-shanghai.myqcloud.com/%E5%BF%83%E5%A3%B0v201.apk',
-    'apkName' => '发现新版本201',
-    'desc' => '更新时间:2023年08月20日 19:25:40',
+    'apkName' => '发现新版本',
+    'desc' => '新版本',
     'versionCode' => '1',
     'boxexp' => '<p><span style="font-size: 18px;">1、使用钻石可以购买礼盒,开启礼盒可以随机获得一款礼物,如果赠送给主播或者他人,则对方可以受到此礼物实际价值的热度值和收益;</span></p><p><span style="font-size: 18px;">2、购买后可获得等同于礼盒开出礼物价值的等级经验值,排行榜贡献值等同于主播获得的实际礼物价值;</span></p><p><span style="font-size: 18px;">3、礼盒中获得礼物概率如下表</span></p><p><img src="https://bansheng-1304213176.file.myqcloud.com/uploads/20210419/829ca9ecc423a8649b3d2873b49beaad.png" style="width: 320px;"/></p><p><span style="font-size: 18px;">4、礼盒仅供娱乐交流使用,不得用于任何形式的盈利活动;</span></p><p><span style="font-size: 18px;">5、请通过官方渠道参与本活动,禁止一切线下交易,官方将对各类以盈利为目的的交易行为进行严厉打击;</span></p><p><span style="font-size: 18px;">6、任何影响“礼盒”公平性的操作,官方有权取消用户参与本活动的资格,并对账号内收益进行回收,情节严重的,平台有权向违规用户索赔,并追究其法律责任;</span></p><p><span style="font-size: 18px;">7、本活动在法律允许的范围内,最终解释权归GG语音所有。</span></p>',
     'boxGiftLogo' => '/uploads/20210427/0618608e4bada96a20ca60905a8259ef.png',
@@ -110,4 +110,6 @@ return [
     'money_to_jewel' => '10',
     'eggplay_paymoney_min' => '1000',
     'invite_money' => '1',
+    'exchange_define' => '0',
+    'withdraw_define' => '0',
 ];

+ 351 - 0
extend/AliPay/AliPay.php

@@ -0,0 +1,351 @@
+<?php
+
+/**
+ * 支付宝插件 使用方法请查看同文件夹下的demo
+ * 目前已经支持电脑网站支付,手机APP支付,支付回调校验,用户提现等功能,如需拓展请联系作者
+ * @author Jack_YanTC <627495692@qq.com>
+ */
+class AliPay {
+
+    private $appId;
+    private $rsaPrivateKey;
+    private $signType;
+    private $alipayrsaPublicKey;
+    private $notifyUrl;
+    private $returnUrl;
+
+    /**
+     * 初始化参数
+     *
+     * C('ALI_PAY') Api Config中的配置
+     * @param array $options
+     * @param $options ['appId']  应用ID,在支付宝上获取
+     * @param $options ['rsaPrivateKey'] 应用密钥,与应用公钥一组,公钥填写到支付宝
+     * @param $options ['signType'] 签名方式
+     * @param $options ['alipayrsaPublicKey'] 支付宝公钥,在支付宝上获取
+     * @param $options ['notifyUrl'] 支付宝回调地址
+     * @param $options ['returnUrl'] 用于web支付返回地址
+     */
+    public function __construct($options = null) {
+        $this->appId = isset ($options['appId']) ? $options['appId'] : config('ali_app_id');
+        $this->rsaPrivateKey = isset ($options['private_key_path']) ? $options['private_key_path'] : config('private_key');
+        $this->signType = isset ($options['sign_type']) ? $options['sign_type'] : config('ali_sign_type');
+        $this->notifyUrl = isset ($options['notify_url']) ? $options['notify_url'] : config('notify_url');
+        $this->alipayrsaPublicKey = isset ($options['ali_public_key_path']) ? $options['ali_public_key_path'] : config('ali_public_key');
+//        $this->returnUrl = isset ($options ['returnUrl']) ? $options ['returnUrl'] : C('ALI_PAY')['returnUrl'];
+    }
+
+    /**
+     * 支付宝app支付 需要签约 APP支付
+     * @param string $data 业务参数 body subject out_trade_no total_amount
+     * @param string $data['out_trade_no'] 订单号  必填
+     * @param string $data['total_amount'] 订单金额  必填
+     * @param string $data['subject'] 订单标题  必填
+     * @param string $data['body'] 订单详情  可选
+     * @return $response 返回app所需字符串
+     */
+    public function AliPayApp($data) {
+        if (empty($this->appId))
+            return false;
+        $aliPayPath = './Plugins/AliPay/alipay-sdk/';
+        require_once($aliPayPath . "aop/AopClient.php");
+        require_once($aliPayPath . 'aop/request/AlipayTradeAppPayRequest.php');
+        $aop = new \AopClient;
+        $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
+        $aop->appId = $this->appId;
+        $aop->rsaPrivateKey = $this->rsaPrivateKey;
+        $aop->format = "json";
+        $aop->charset = "UTF-8";
+        $aop->signType = $this->signType;
+        $aop->alipayrsaPublicKey = $this->alipayrsaPublicKey;
+        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
+        $request = new \AlipayTradeAppPayRequest();
+        //SDK已经封装掉了公共参数,这里只需要传入业务参数
+        $bizcontent = json_encode([
+            'body' => $data['body'],
+            'subject' => $data['subject'],
+            'out_trade_no' => $data['out_trade_no'],//此订单号为商户唯一订单号
+            'total_amount' => $data['total_amount'],//保留两位小数
+            'timeout_express' => '30m',
+            'passback_params' => urlencode($data['pass_back_params']), //区分安卓ios支付
+            'product_code' => 'QUICK_MSECURITY_PAY'
+        ]);
+        $request->setNotifyUrl($this->notifyUrl);
+        $request->setBizContent($bizcontent);
+        //这里和普通的接口调用不同,使用的是sdkExecute
+        $response = $aop->sdkExecute($request);
+        //htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
+        //return htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。
+        //返回app所需字符串
+        return $response;
+    }
+
+    /**
+     * 支付宝web支付 需要签约 电脑网站支付
+     * @param string $data 业务参数
+     * @param string $data['out_trade_no'] 订单号  必填
+     * @param string $data['total_amount'] 订单金额  必填
+     * @param string $data['subject'] 订单标题  必填
+     * @param string $data['body'] 订单详情  可选
+     * @return $result 返回form表单,插入到当前网页即跳转到支付宝付款界面
+     */
+    public function AliPayWeb($data) {
+        if (empty($this->appId))
+            return false;
+        $aliPayPath = './Plugins/AliPay/alipay-sdk/';
+        require_once($aliPayPath . "aop/AopClient.php");
+        require_once($aliPayPath . 'aop/request/AlipayTradePagePayRequest.php');
+        $aop = new \AopClient();
+        $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
+        $aop->appId = $this->appId;
+        $aop->rsaPrivateKey = $this->rsaPrivateKey;
+        $aop->signType = $this->signType;
+        $aop->alipayrsaPublicKey = $this->alipayrsaPublicKey;
+        $aop->apiVersion = '1.0';
+        $aop->postCharset = 'UTF-8';
+        $aop->format = 'json';
+        $request = new \AlipayTradePagePayRequest();
+        $bizcontent = json_encode([
+            'body' => $data['body'],
+            'subject' => $data['subject'],
+            'out_trade_no' => $data['out_trade_no'],//此订单号为商户唯一订单号
+            'total_amount' => $data['total_amount'],//保留两位小数
+            'product_code' => 'FAST_INSTANT_TRADE_PAY'
+        ]);
+        $request->setNotifyUrl($this->notifyUrl);
+        $request->setReturnUrl($this->returnUrl);
+        $request->setBizContent($bizcontent);
+        $result = $aop->pageExecute($request);
+        //返回form提交表单
+        return $result;
+    }
+
+    /**
+     * 支付宝MobileWeb支付 需要签约 手机网站支付
+     * @param string $data 业务参数
+     * @param string $data['out_trade_no'] 订单号  必填
+     * @param string $data['total_amount'] 订单金额  必填
+     * @param string $data['subject'] 订单标题  必填
+     * @param string $data['body'] 订单详情  可选
+     * @return $result 返回form表单,插入到当前网页即跳转到支付宝付款界面
+     */
+    public function AliPayMobileWeb($data) {
+        if (empty($this->appId))
+            return false;
+        $aliPayPath = './Plugins/AliPay/alipay-sdk/';
+        require_once($aliPayPath . "aop/AopClient.php");
+        require_once($aliPayPath . 'aop/request/AlipayTradeWapPayRequest.php');
+        $aop = new \AopClient();
+        $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
+        $aop->appId = $this->appId;
+        $aop->rsaPrivateKey = $this->rsaPrivateKey;
+        $aop->signType = $this->signType;
+        $aop->alipayrsaPublicKey = $this->alipayrsaPublicKey;
+        $aop->apiVersion = '1.0';
+        $aop->postCharset = 'UTF-8';
+        $aop->format = 'json';
+        $request = new \AlipayTradeWapPayRequest ();
+        $bizcontent = json_encode([
+            'body' => $data['body'],
+            'subject' => $data['subject'],
+            'out_trade_no' => $data['out_trade_no'],//此订单号为商户唯一订单号
+            'total_amount' => $data['total_amount'],//保留两位小数
+            'timeout_express' => '90m',
+            'product_code' => 'QUICK_WAP_WAY'
+        ]);
+        $request->setNotifyUrl($this->notifyUrl);
+        $request->setReturnUrl($this->returnUrl);
+        $request->setBizContent($bizcontent);
+        $result = $aop->pageExecute($request);
+        //返回form提交表单
+        return $result;
+    }
+
+    /**
+     * 支付宝支付回调签名验证
+     * @param string $data 业务参数
+     * @return bool
+     */
+    public function AliPayNotifyCheck() {
+        $aliPayPath = './Plugins/AliPay/alipay-sdk/';
+        require_once($aliPayPath . "aop/AopClient.php");
+        $aop = new \AopClient;
+        $aop->alipayrsaPublicKey = $this->alipayrsaPublicKey;
+        //此处验签方式必须与下单时的签名方式一致
+        $flag = $aop->rsaCheckV1($_POST, NULL, $this->signType);
+        return $flag;
+    }
+
+    /**
+     * 支付宝提现转账 需要签约 单笔转账到支付宝账户接口
+     * @param string $data 业务参数
+     * @param $data['out_biz_no'] 订单号  必填
+     * @param $data['amount'] 提现金额 必填 金额不小于0.1元,单日转出累计额度为100万元,转账给个人支付宝账户,单笔最高5万元;转账给企业支付宝账户,单笔最高10万元。
+     * @param $data['payee_account'] 收款支付宝账号  必填
+     * @param $data['payee_real_name'] 收款支付宝账号真实姓名  最好填上 填上会验证账号是否正确
+     * @param $data['payer_show_name'] 付款方姓名  可选
+     * @param $data['remark'] 转账提现备注  可选
+     * @return bool
+     */
+    public function AliPayWithdrawOld($data) {
+        if (empty($this->appId))
+            return false;
+        if ($data['amount']<0.1)
+            return false;
+        $aliPayPath = './Plugins/AliPay/alipay-sdk/';
+        require_once($aliPayPath . "aop/AopClient.php");
+        require_once($aliPayPath . 'aop/request/AlipayFundTransToaccountTransferRequest.php');
+        $aop = new \AopClient;
+        $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
+        $aop->appId = $this->appId;
+        $aop->rsaPrivateKey = $this->rsaPrivateKey;
+        $aop->format = "json";
+        $aop->charset = "UTF-8";
+        $aop->signType = $this->signType;
+        $aop->alipayrsaPublicKey = $this->alipayrsaPublicKey;
+        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
+        $request = new \AlipayFundTransToaccountTransferRequest ();
+        //SDK已经封装掉了公共参数,这里只需要传入业务参数
+        $bizcontent = json_encode([
+            'out_biz_no' => $data['out_biz_no'],//此订单号为商户唯一订单号
+            'payee_type' => 'ALIPAY_LOGONID',//默认登录账号,后期可拓展
+            'payee_account' => $data['payee_account'],
+            'amount' => $data['amount'],
+            'payee_real_name' => $data['payee_real_name'],
+            'payer_show_name' => $data['payer_show_name'],
+            'remark' => $data['remark'],
+        ]);
+        $request->setBizContent($bizcontent);
+        $result = $aop->execute($request);
+        $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
+        $resultCode = $result->$responseNode->code;
+        if(!empty($resultCode)&&$resultCode == 10000){
+            //echo "成功"; 提现成功
+            return true;
+        } else {
+            //echo "失败";
+            return false;
+        }
+    }
+
+    /**
+     * 支付宝提现转账 需要签约 单笔转账到支付宝账户接口(新版2022-11-21)
+     * @return bool
+     */
+    public function AliPayWithdraw($data) {
+        if (empty($this->appId))
+            return false;
+        if ($data['trans_amount'] < 0.1)
+            return false;
+        $aliPayPath = '../extend/AliPay/aop/';
+        require_once $aliPayPath . 'AopClient.php';
+        require_once $aliPayPath . 'AopCertClient.php';
+        require_once $aliPayPath . 'AopCertification.php';
+        require_once $aliPayPath . 'AlipayConfig.php';
+        require_once $aliPayPath . 'request/AlipayFundTransUniTransferRequest.php';
+
+        $privateKey = $this->rsaPrivateKey;//"<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->";
+        $alipayConfig = new AlipayConfig();
+        $alipayConfig->setPrivateKey($privateKey);
+        $alipayConfig->setServerUrl("https://openapi.alipay.com/gateway.do");
+        $alipayConfig->setAppId($this->appId); //"<-- 请填写您的AppId,例如:2019091767145019 -->"
+        $alipayConfig->setCharset("UTF-8");
+        $alipayConfig->setSignType("RSA2");
+        $alipayConfig->setEncryptKey("");
+        $alipayConfig->setFormat("json");
+        $alipayConfig->setAppCertPath('../extend/AliPay/cert/appCertPublicKey.crt');//"<-- 请填写您的应用公钥证书文件路径,例如:/foo/appCertPublicKey_2019051064521003.crt -->"
+        $alipayConfig->setAlipayPublicCertPath('../extend/AliPay/cert/alipayCertPublicKey.crt');//"<-- 请填写您的支付宝公钥证书文件路径,例如:/foo/alipayCertPublicKey_RSA2.crt -->"
+        $alipayConfig->setRootCertPath('../extend/AliPay/cert/alipayRootCert.crt');//"<-- 请填写您的支付宝根证书文件路径,例如:/foo/alipayRootCert.crt -->"
+        $alipayClient = new AopCertClient($alipayConfig);
+        $alipayClient->isCheckAlipayPublicCert = true;
+        $request = new AlipayFundTransUniTransferRequest();
+        $data = json_encode($data);
+        $request->setBizContent($data);
+        $responseResult = $alipayClient->execute($request);
+        $responseApiName = str_replace(".","_",$request->getApiMethodName())."_response";
+        $responsecode = $responseResult->$responseApiName->code;echo '<pre>';var_dump($responseResult);exit;
+        if(!empty($responsecode)&&$responsecode==10000){
+//            echo("调用成功");
+            return true;
+        } else{
+//            echo("调用失败");
+            return false;
+        }
+    }
+
+    /**
+     * 支付宝身份认证初始化服务
+     */
+    public function userCertifyInitialize($data) {
+        $aliPayPath = './Plugins/AliPay/alipay-sdk/';
+        require_once($aliPayPath . "aop/AopClient.php");
+        require_once($aliPayPath . 'aop/request/AlipayUserCertifyOpenInitializeRequest.php');
+
+        $aop = new \AopClient;
+        $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
+        $aop->appId = $this->appId;
+        $aop->rsaPrivateKey = $this->rsaPrivateKey;
+        $aop->format = "json";
+        $aop->postCharset = "UTF-8";
+        $aop->signType = $this->signType;
+        $aop->alipayrsaPublicKey = $this->alipayrsaPublicKey;
+
+        $request = new \AlipayUserCertifyOpenInitializeRequest();
+        $request->setBizContent(json_encode($data));
+        $result = $aop->execute ($request);
+
+        $result = json_decode(json_encode($result), true);
+        return $result['alipay_user_certify_open_initialize_response'];
+    }
+
+    /**
+     * 支付宝身份认证开始认证
+     */
+    public function userCertify($data) {
+        $aliPayPath = './Plugins/AliPay/alipay-sdk/';
+        require_once($aliPayPath . "aop/AopClient.php");
+        require_once($aliPayPath . 'aop/request/AlipayUserCertifyOpenCertifyRequest.php');
+
+        $aop = new \AopClient;
+        $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
+        $aop->appId = $this->appId;
+        $aop->rsaPrivateKey = $this->rsaPrivateKey;
+        $aop->format = "json";
+        $aop->postCharset = "UTF-8";
+        $aop->signType = $this->signType;
+        $aop->alipayrsaPublicKey = $this->alipayrsaPublicKey;
+
+        $request = new \AlipayUserCertifyOpenCertifyRequest();
+        $request->setBizContent(json_encode($data));
+        $result = $aop->pageExecute ($request, 'GET');
+
+        return $result;
+//        $result = json_decode($result, true); p($result);die;
+//        return $result['alipay_user_certify_open_certify_response'];
+    }
+
+    /**
+     * 支付宝身份认证状态查询
+     */
+    public function userCertifyState($data) {
+        $aliPayPath = './Plugins/AliPay/alipay-sdk/';
+        require_once($aliPayPath . "aop/AopClient.php");
+        require_once($aliPayPath . 'aop/request/AlipayUserCertifyOpenQueryRequest.php');
+
+        $aop = new \AopClient;
+        $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
+        $aop->appId = $this->appId;
+        $aop->rsaPrivateKey = $this->rsaPrivateKey;
+        $aop->format = "json";
+        $aop->postCharset = "UTF-8";
+        $aop->signType = $this->signType;
+        $aop->alipayrsaPublicKey = $this->alipayrsaPublicKey;
+
+        $request = new \AlipayUserCertifyOpenQueryRequest();
+        $request->setBizContent(json_encode($data));
+        $result = $aop->execute ($request);
+
+        $result = json_decode(json_encode($result), true);
+        return $result['alipay_user_certify_open_query_response'];
+    }
+}

+ 110 - 0
extend/AliPay/Demo.php

@@ -0,0 +1,110 @@
+<?php
+
+/**
+ * 支付宝插件Demo
+ * @author Jack_YanTC <627495692@qq.com>
+ */
+class Demo {
+
+
+    function __construct(){
+        $config['appId']='135';
+        $config['rsaPrivateKey']='135';
+        $config['signType']='135';
+        $config['alipayrsaPublicKey']='135';
+        $this -> config = $config;
+    }
+
+    public function index() {
+        $data['body']='订单详情';
+        $data['subject']='订单';
+        $data['out_trade_no']='201705201314';
+        $data['total_amount']='0.01';
+        require_once("./Plugins/AliPay/AliPay.php");
+
+        //可传入$options自己的appid
+        //$alipay =new \AliPay($this -> config);
+
+        //配置到config的话,不许传递参数
+        $alipay =new \AliPay();
+
+        $result['app'] =$alipay->AliPayApp($data);
+        $result['web'] =$alipay->AliPayWeb($data);
+        $result['check']=$alipay->AliPayNotifyCheck();
+        p($result['web']);
+        //jsonReturn(0, 1, $result);
+    }
+
+    //app支付 示例
+    public function appPay() {
+        $data['body']='订单详情';
+        $data['subject']='订单';
+        $data['out_trade_no']='201705201314';
+        $data['total_amount']='0.01';
+        require_once("Plugins/AliPay/AliPay.php");
+        $alipay =new \AliPay();
+        $result =$alipay->AliPayApp($data);
+        return $result;
+    }
+
+    //web支付 示例
+    public function webPay() {
+        $data['body']='订单详情';
+        $data['subject']='订单';
+        $data['out_trade_no']='201705201314';
+        $data['total_amount']='0.01';
+        require_once("Plugins/AliPay/AliPay.php");
+        $alipay =new \AliPay();
+        $result =$alipay->AliPayWeb($data);
+        return $result;
+    }
+
+	//移动web支付 示例
+    public function mobileWebPay() {
+        $data['body']='订单详情';
+        $data['subject']='订单';
+        $data['out_trade_no']='201705201314';
+        $data['total_amount']='0.01';
+        require_once("Plugins/AliPay/AliPay.php");
+        $alipay =new \AliPay();
+        $result =$alipay->AliPayMobileWeb($data);
+        return $result;
+    }
+	
+    //支付回调地址 示例
+    public function alipayNotify() {
+        require_once("Plugins/AliPay/AliPay.php");
+        $alipay =new \AliPay();
+        //验证是否是支付宝发送
+        $flag=$alipay->AliPayNotifyCheck();
+        if ($flag) {
+            if ($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS') {
+                $out_trade_no = trim($_POST['out_trade_no']); //商户订单号
+
+                //成功后的业务逻辑处理
+                $result = D('Common/Order')->notify($out_trade_no);
+
+                if ($result) {
+                    echo "success"; //告诉支付宝支付成功
+                    die;
+                }
+            }
+        }
+        echo "fail"; //验证失败
+        die;
+    }
+
+    //提现转账 示例
+    public function withdraw() {
+        $data['out_biz_no']='201705201314';//订单号
+        $data['payee_account'] ='627495692@qq.com';//收款支付宝账号
+        $data['payee_real_name'] ='颜廷超';//收款支付宝账号真实姓名
+        $data['amount'] ='0.01';//金额
+        $data['payer_show_name']='科技转账';
+        $data['remark'] = '备注';
+        require_once("Plugins/AliPay/AliPay.php");
+        $alipay =new \AliPay();
+        $result =$alipay->AliPayWithdraw($data);
+        return $result;
+    }
+}

+ 231 - 0
extend/AliPay/alipay-sdk/aop/AlipayMobilePublicMultiMediaClient.php

@@ -0,0 +1,231 @@
+<?php
+
+/**
+ * 多媒体文件客户端
+ * @author yikai.hu
+ * @version $Id: AlipayMobilePublicMultiMediaClient.php, v 0.1 Aug 15, 2014 10:19:01 AM yikai.hu Exp $
+ */
+
+//namespace alipay\api ;
+
+include("AlipayMobilePublicMultiMediaExecute.php");
+
+
+class AlipayMobilePublicMultiMediaClient{
+
+    private				$DEFAULT_CHARSET = 'UTF-8';
+    private				$METHOD_POST     = "POST";
+    private				$METHOD_GET      = "GET";
+	private				$SIGN			= 'sign'; //get name
+
+	private				$timeout = 10 ;// 超时时间
+    private				$serverUrl;
+    private				$appId;
+    private				$privateKey;
+    private				$prodCode;
+    private				$format          = 'json'; //todo
+    private				$sign_type       = 'RSA'; //todo
+
+	private				$charset;
+	private				$apiVersion    = "1.0";
+	private				$apiMethodName = "alipay.mobile.public.multimedia.download";
+	private				$media_id = "L21pZnMvVDFQV3hYWGJKWFhYYUNucHJYP3Q9YW13ZiZ4c2lnPTU0MzRhYjg1ZTZjNWJmZTMxZGJiNjIzNDdjMzFkNzkw575";
+	//此处写死的,实际开发中,请传入
+
+    private				$connectTimeout  = 3000;
+    private				$readTimeout     = 15000;
+
+
+
+	function __construct($serverUrl = '', $appId = '', $partner_private_key = '', $format = '', $charset = 'GBK'){
+		$this -> serverUrl = $serverUrl;
+		$this -> appId = $appId;
+		$this -> privateKey = $partner_private_key;
+		$this -> format = $format;
+		$this -> charset = $charset;
+	}
+
+	/**
+	 * getContents 获取网址内容
+	 * @param $request
+	 * @return text | bin
+	 */
+	public function getContents(){
+		//自己的服务器如果没有 curl,可用:fsockopen() 等
+
+
+		//1:
+		//2: 私钥格式
+		$datas = array(
+			"app_id" 		=> $this -> appId,
+			"method" 		=> $this -> METHOD_POST,
+			"sign_type" 	=> $this -> sign_type,
+			"version" 		=> $this -> apiVersion,
+			"timestamp" 	=> date('Y-m-d H:i:s')  ,//yyyy-MM-dd HH:mm:ss
+			"biz_content" 	=> '{"mediaId":"'. $this -> media_id  .'"}',
+			"charset" 		=> $this -> charset
+		);
+
+
+
+		//要提交的数据
+		$data_sign = $this -> buildGetUrl( $datas );
+
+		$post_data = $data_sign;
+		//初始化 curl
+		$ch = curl_init();
+		//设置目标服务器
+		curl_setopt($ch, CURLOPT_URL, $this -> serverUrl );
+		curl_setopt($ch, CURLOPT_HEADER, TRUE);
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+		//超时时间
+		curl_setopt($ch, CURLOPT_TIMEOUT, $this-> timeout);
+
+		if( $this-> METHOD_POST == 'POST'){
+			// post数据
+			curl_setopt($ch, CURLOPT_POST, 1);
+			// post的变量
+			curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
+		}
+
+
+
+
+		$output = curl_exec($ch);
+		$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+		curl_close($ch);
+
+		echo $output;
+
+		//分离头部
+		//list($header, $body) = explode("\r\n\r\n", $output, 2);
+		$datas = explode("\r\n\r\n", $output, 2);
+		$header = $datas[0];
+
+		if( $httpCode == '200'){
+			$body = $datas[1];
+		}else{
+			$body = '';
+
+		}
+
+
+
+
+		return $this -> execute( $header, $body, $httpCode );
+	}
+
+	/**
+	 *
+	 * @param $request
+	 * @return text | bin
+	 */
+	public function execute( $header = '', $body = '', $httpCode = '' ){
+		$exe = new AlipayMobilePublicMultiMediaExecute( $header, $body, $httpCode );
+		return $exe;
+	}
+
+	public function buildGetUrl( $query = array() ){
+
+		if( ! is_array( $query ) ){
+			//exit;
+		}
+
+		//排序参数,
+		$data = $this -> buildQuery( $query );
+
+
+
+		// 私钥密码
+		$passphrase = '';
+		$key_width = 64;
+
+		//私钥
+		$privateKey = $this -> privateKey;
+		$p_key = array();
+		//如果私钥是 1行
+		if( ! stripos( $privateKey, "\n" )  ){
+			$i = 0;
+			while( $key_str = substr( $privateKey , $i * $key_width , $key_width) ){
+				$p_key[] = $key_str;
+				$i ++ ;
+			}
+		}else{
+			//echo '一行?';
+		}
+		$privateKey = "-----BEGIN RSA PRIVATE KEY-----\n" . implode("\n", $p_key) ;
+		$privateKey = $privateKey ."\n-----END RSA PRIVATE KEY-----";
+
+//		echo "\n\n私钥:\n";
+//		echo( $privateKey );
+//		echo "\n\n\n";
+
+		//私钥
+		$private_id = openssl_pkey_get_private( $privateKey , $passphrase);
+
+
+		// 签名
+		$signature = '';
+
+		if("RSA2"==$this->sign_type){
+
+			openssl_sign($data, $signature, $private_id, OPENSSL_ALGO_SHA256 );
+		}else{
+
+			openssl_sign($data, $signature, $private_id, OPENSSL_ALGO_SHA1 );
+		}
+
+		openssl_free_key( $private_id );
+
+		//加密后的内容通常含有特殊字符,需要编码转换下
+		$signature = base64_encode($signature);
+
+		$signature = urlencode( $signature );
+
+		//$signature = 'XjUN6YM1Mc9HXebKMv7GTLy7gmyhktyOgKk2/Jf+cz4DtP6udkzTdpkjW2j/Z4ZSD7xD6CNYI1Spz4yS93HPT0a5X9LgFWYY8SaADqe+ArXg+FBSiTwUz49SE//Xd9+LEiIRsSFkbpkuiGoO6mqJmB7vXjlD5lx6qCM3nb41wb8=';
+
+		$out = $data .'&'. $this -> SIGN .'='. $signature;
+
+//		echo "\n\n 加密后:\n";
+//		echo( $out );
+//		echo "\n\n\n";
+
+		return $out ;
+	}
+
+	/*
+	 * 查询参数排序 a-z
+	 * */
+	public function buildQuery( $query ){
+		if ( !$query ) {
+			return null;
+		}
+
+//将要 参数 排序
+		ksort( $query );
+
+		//重新组装参数
+		$params = array();
+		foreach($query as $key => $value){
+			$params[] = $key .'='. $value ;
+		}
+		$data = implode('&', $params);
+
+		return $data;
+
+	}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}

+ 108 - 0
extend/AliPay/alipay-sdk/aop/AlipayMobilePublicMultiMediaExecute.php

@@ -0,0 +1,108 @@
+<?php
+
+/**
+ * 多媒体文件客户端
+ * @author yuanwai.wang
+ * @version $Id: AlipayMobilePublicMultiMediaExecute.php, v 0.1 Aug 15, 2014 10:19:01 AM yuanwai.wang Exp $
+ */
+
+//namespace alipay\api ;
+
+
+
+class AlipayMobilePublicMultiMediaExecute{
+
+	private $code = 200 ;
+	private $msg = '';
+	private $body = '';
+	private $params = '';
+
+	private $fileSuffix = array(
+		"image/jpeg" 		=> 'jpg', //+
+		"text/plain"		=> 'text'
+	);
+
+	/*
+	 * @$header : 头部
+	 * */
+	function __construct( $header, $body, $httpCode ){
+		$this -> code = $httpCode;
+		$this -> msg = '';
+		$this -> params = $header ;
+		$this -> body = $body;
+	}
+
+	/**
+	 *
+	 * @return text | bin
+	 */
+	public function getCode(){
+		return $this -> code ;
+	}
+
+	/**
+	 *
+	 * @return text | bin
+	 */
+	public function getMsg(){
+		return $this -> msg ;
+	}
+
+	/**
+	 *
+	 * @return text | bin
+	 */
+	public function getType(){
+		$subject = $this -> params ;
+		$pattern = '/Content\-Type:([^;]+)/';
+		preg_match($pattern, $subject, $matches);
+		if( $matches ){
+			$type = $matches[1];
+		}else{
+			$type = 'application/download';
+		}
+
+		return str_replace( ' ', '', $type );
+	}
+
+	/**
+	 *
+	 * @return text | bin
+	 */
+	public function getContentLength(){
+		$subject = $this -> params ;
+		$pattern = '/Content-Length:\s*([^\n]+)/';
+		preg_match($pattern, $subject, $matches);
+		return (int)( isset($matches[1] ) ? $matches[1]  : '' );
+	}
+
+
+	public function getFileSuffix( $fileType ){
+		$type = isset( $this -> fileSuffix[ $fileType ] ) ? $this -> fileSuffix[ $fileType ] : 'text/plain' ;
+		if( !$type ){
+			$type = 'json';
+		}
+		return $type;
+	}
+
+
+
+	/**
+	 *
+	 * @return text | bin
+	 */
+	public function getBody(){
+		//header('Content-type: image/jpeg');
+		return $this -> body ;
+	}
+
+	/**
+	 * 获取参数
+	 * @return text | bin
+	 */
+	public function getParams(){
+		return $this -> params ;
+	}
+
+
+}

+ 1214 - 0
extend/AliPay/alipay-sdk/aop/AopClient.php

@@ -0,0 +1,1214 @@
+<?php
+
+require_once 'AopEncrypt.php';
+
+class AopClient {
+    //应用ID
+    public $appId;
+
+    //私钥文件路径
+    public $rsaPrivateKeyFilePath;
+
+    //私钥值
+    public $rsaPrivateKey;
+
+    //网关
+    public $gatewayUrl = "https://openapi.alipay.com/gateway.do";
+    //返回数据格式
+    public $format = "json";
+    //api版本
+    public $apiVersion = "1.0";
+
+    // 表单提交字符集编码
+    public $postCharset = "UTF-8";
+
+    //使用文件读取文件格式,请只传递该值
+    public $alipayPublicKey = null;
+
+    //使用读取字符串格式,请只传递该值
+    public $alipayrsaPublicKey;
+
+
+    public $debugInfo = false;
+
+    private $fileCharset = "UTF-8";
+
+    private $RESPONSE_SUFFIX = "_response";
+
+    private $ERROR_RESPONSE = "error_response";
+
+    private $SIGN_NODE_NAME = "sign";
+
+
+    //加密XML节点名称
+    private $ENCRYPT_XML_NODE_NAME = "response_encrypted";
+
+    private $needEncrypt = false;
+
+
+    //签名类型
+    public $signType = "RSA";
+
+
+    //加密密钥和类型
+
+    public $encryptKey;
+
+    public $encryptType = "AES";
+
+    protected $alipaySdkVersion = "alipay-sdk-php-20180705";
+
+    public function generateSign($params, $signType = "RSA") {
+        return $this->sign($this->getSignContent($params), $signType);
+    }
+
+    public function rsaSign($params, $signType = "RSA") {
+        return $this->sign($this->getSignContent($params), $signType);
+    }
+
+    public function getSignContent($params) {
+        ksort($params);
+
+        $stringToBeSigned = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->checkEmpty($v) && "@" != substr($v, 0, 1)) {
+
+                // 转换成目标字符集
+                $v = $this->characet($v, $this->postCharset);
+
+                if ($i == 0) {
+                    $stringToBeSigned .= "$k" . "=" . "$v";
+                } else {
+                    $stringToBeSigned .= "&" . "$k" . "=" . "$v";
+                }
+                $i++;
+            }
+        }
+
+        unset ($k, $v);
+        return $stringToBeSigned;
+    }
+
+
+    //此方法对value做urlencode
+    public function getSignContentUrlencode($params) {
+        ksort($params);
+
+        $stringToBeSigned = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->checkEmpty($v) && "@" != substr($v, 0, 1)) {
+
+                // 转换成目标字符集
+                $v = $this->characet($v, $this->postCharset);
+
+                if ($i == 0) {
+                    $stringToBeSigned .= "$k" . "=" . urlencode($v);
+                } else {
+                    $stringToBeSigned .= "&" . "$k" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        unset ($k, $v);
+        return $stringToBeSigned;
+    }
+
+    protected function sign($data, $signType = "RSA") {
+        if ($this->checkEmpty($this->rsaPrivateKeyFilePath)) {
+            $priKey = $this->rsaPrivateKey;
+            $res = "-----BEGIN RSA PRIVATE KEY-----\n" .
+                wordwrap($priKey, 64, "\n", true) .
+                "\n-----END RSA PRIVATE KEY-----";
+        } else {
+            $priKey = file_get_contents($this->rsaPrivateKeyFilePath);
+            $res = openssl_get_privatekey($priKey);
+        }
+
+        ($res) or die('您使用的私钥格式错误,请检查RSA私钥配置');
+
+        if ("RSA2" == $signType) {
+            openssl_sign($data, $sign, $res, OPENSSL_ALGO_SHA256);
+        } else {
+            openssl_sign($data, $sign, $res);
+        }
+
+        if (!$this->checkEmpty($this->rsaPrivateKeyFilePath)) {
+            openssl_free_key($res);
+        }
+        $sign = base64_encode($sign);
+        return $sign;
+    }
+
+    /**
+     * RSA单独签名方法,未做字符串处理,字符串处理见getSignContent()
+     * @param $data 待签名字符串
+     * @param $privatekey 商户私钥,根据keyfromfile来判断是读取字符串还是读取文件,false:填写私钥字符串去回车和空格 true:填写私钥文件路径
+     * @param $signType 签名方式,RSA:SHA1     RSA2:SHA256
+     * @param $keyfromfile 私钥获取方式,读取字符串还是读文件
+     * @return string
+     * @author mengyu.wh
+     */
+    public function alonersaSign($data, $privatekey, $signType = "RSA", $keyfromfile = false) {
+
+        if (!$keyfromfile) {
+            $priKey = $privatekey;
+            $res = "-----BEGIN RSA PRIVATE KEY-----\n" .
+                wordwrap($priKey, 64, "\n", true) .
+                "\n-----END RSA PRIVATE KEY-----";
+        } else {
+            $priKey = file_get_contents($privatekey);
+            $res = openssl_get_privatekey($priKey);
+        }
+
+        ($res) or die('您使用的私钥格式错误,请检查RSA私钥配置');
+
+        if ("RSA2" == $signType) {
+            openssl_sign($data, $sign, $res, OPENSSL_ALGO_SHA256);
+        } else {
+            openssl_sign($data, $sign, $res);
+        }
+
+        if ($keyfromfile) {
+            openssl_free_key($res);
+        }
+        $sign = base64_encode($sign);
+        return $sign;
+    }
+
+
+    protected function curl($url, $postFields = null) {
+        $ch = curl_init();
+        curl_setopt($ch, CURLOPT_URL, $url);
+        curl_setopt($ch, CURLOPT_FAILONERROR, false);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+
+        $postBodyString = "";
+        $encodeArray = Array();
+        $postMultipart = false;
+
+
+        if (is_array($postFields) && 0 < count($postFields)) {
+
+            foreach ($postFields as $k => $v) {
+                if ("@" != substr($v, 0, 1)) //判断是不是文件上传
+                {
+
+                    $postBodyString .= "$k=" . urlencode($this->characet($v, $this->postCharset)) . "&";
+                    $encodeArray[$k] = $this->characet($v, $this->postCharset);
+                } else //文件上传用multipart/form-data,否则用www-form-urlencoded
+                {
+                    $postMultipart = true;
+                    $encodeArray[$k] = new \CURLFile(substr($v, 1));
+                }
+
+            }
+            unset ($k, $v);
+            curl_setopt($ch, CURLOPT_POST, true);
+            if ($postMultipart) {
+                curl_setopt($ch, CURLOPT_POSTFIELDS, $encodeArray);
+            } else {
+                curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString, 0, -1));
+            }
+        }
+
+        if ($postMultipart) {
+
+            $headers = array('content-type: multipart/form-data;charset=' . $this->postCharset . ';boundary=' . $this->getMillisecond());
+        } else {
+
+            $headers = array('content-type: application/x-www-form-urlencoded;charset=' . $this->postCharset);
+        }
+        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+
+
+        $reponse = curl_exec($ch);
+
+        if (curl_errno($ch)) {
+
+            throw new Exception(curl_error($ch), 0);
+        } else {
+            $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+            if (200 !== $httpStatusCode) {
+                throw new Exception($reponse, $httpStatusCode);
+            }
+        }
+
+        curl_close($ch);
+        return $reponse;
+    }
+
+    protected function getMillisecond() {
+        list($s1, $s2) = explode(' ', microtime());
+        return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
+    }
+
+
+    protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt) {
+        $localIp = isset ($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
+        $logger = new LtLogger;
+        $logger->conf["log_file"] = rtrim(AOP_SDK_WORK_DIR, '\\/') . '/' . "logs/aop_comm_err_" . $this->appId . "_" . date("Y-m-d") . ".log";
+        $logger->conf["separator"] = "^_^";
+        $logData = array(
+            date("Y-m-d H:i:s"),
+            $apiName,
+            $this->appId,
+            $localIp,
+            PHP_OS,
+            $this->alipaySdkVersion,
+            $requestUrl,
+            $errorCode,
+            str_replace("\n", "", $responseTxt)
+        );
+        $logger->log($logData);
+    }
+
+    /**
+     * 生成用于调用收银台SDK的字符串
+     * @param $request SDK接口的请求参数对象
+     * @return string
+     * @author guofa.tgf
+     */
+    public function sdkExecute($request) {
+
+        $this->setupCharsets($request);
+
+        $params['app_id'] = $this->appId;
+        $params['method'] = $request->getApiMethodName();
+        $params['format'] = $this->format;
+        $params['sign_type'] = $this->signType;
+        $params['timestamp'] = date("Y-m-d H:i:s");
+        $params['alipay_sdk'] = $this->alipaySdkVersion;
+        $params['charset'] = $this->postCharset;
+
+        $version = $request->getApiVersion();
+        $params['version'] = $this->checkEmpty($version) ? $this->apiVersion : $version;
+
+        if ($notify_url = $request->getNotifyUrl()) {
+            $params['notify_url'] = $notify_url;
+        }
+
+        $dict = $request->getApiParas();
+        $params['biz_content'] = $dict['biz_content'];
+
+        ksort($params);
+
+        $params['sign'] = $this->generateSign($params, $this->signType);
+
+        foreach ($params as &$value) {
+            $value = $this->characet($value, $params['charset']);
+        }
+
+        return http_build_query($params);
+    }
+
+    /*
+        页面提交执行方法
+        @param:跳转类接口的request; $httpmethod 提交方式。两个值可选:post、get
+        @return:构建好的、签名后的最终跳转URL(GET)或String形式的form(POST)
+        auther:笙默
+    */
+    public function pageExecute($request, $httpmethod = "POST") {
+
+        $this->setupCharsets($request);
+
+        if (strcasecmp($this->fileCharset, $this->postCharset)) {
+
+            // writeLog("本地文件字符集编码与表单提交编码不一致,请务必设置成一样,属性名分别为postCharset!");
+            throw new Exception("文件编码:[" . $this->fileCharset . "] 与表单提交编码:[" . $this->postCharset . "]两者不一致!");
+        }
+
+        $iv = null;
+
+        if (!$this->checkEmpty($request->getApiVersion())) {
+            $iv = $request->getApiVersion();
+        } else {
+            $iv = $this->apiVersion;
+        }
+
+        //组装系统参数
+        $sysParams["app_id"] = $this->appId;
+        $sysParams["version"] = $iv;
+        $sysParams["format"] = $this->format;
+        $sysParams["sign_type"] = $this->signType;
+        $sysParams["method"] = $request->getApiMethodName();
+        $sysParams["timestamp"] = date("Y-m-d H:i:s");
+        $sysParams["alipay_sdk"] = $this->alipaySdkVersion;
+        $sysParams["terminal_type"] = $request->getTerminalType();
+        $sysParams["terminal_info"] = $request->getTerminalInfo();
+        $sysParams["prod_code"] = $request->getProdCode();
+        $sysParams["notify_url"] = $request->getNotifyUrl();
+        $sysParams["return_url"] = $request->getReturnUrl();
+        $sysParams["charset"] = $this->postCharset;
+
+        //获取业务参数
+        $apiParams = $request->getApiParas();
+
+        if (method_exists($request, "getNeedEncrypt") && $request->getNeedEncrypt()) {
+
+            $sysParams["encrypt_type"] = $this->encryptType;
+
+            if ($this->checkEmpty($apiParams['biz_content'])) {
+
+                throw new Exception(" api request Fail! The reason : encrypt request is not supperted!");
+            }
+
+            if ($this->checkEmpty($this->encryptKey) || $this->checkEmpty($this->encryptType)) {
+
+                throw new Exception(" encryptType and encryptKey must not null! ");
+            }
+
+            if ("AES" != $this->encryptType) {
+
+                throw new Exception("加密类型只支持AES");
+            }
+
+            // 执行加密
+            $enCryptContent = encrypt($apiParams['biz_content'], $this->encryptKey);
+            $apiParams['biz_content'] = $enCryptContent;
+
+        }
+
+        //print_r($apiParams);
+        $totalParams = array_merge($apiParams, $sysParams);
+
+        //待签名字符串
+        $preSignStr = $this->getSignContent($totalParams);
+
+        //签名
+        $totalParams["sign"] = $this->generateSign($totalParams, $this->signType);
+
+        if ("GET" == strtoupper($httpmethod)) {
+
+            //value做urlencode
+            $preString = $this->getSignContentUrlencode($totalParams);
+            //拼接GET请求串
+            $requestUrl = $this->gatewayUrl . "?" . $preString;
+
+            return $requestUrl;
+        } else {
+            //拼接表单字符串
+            return $this->buildRequestForm($totalParams);
+        }
+
+
+    }
+
+
+    /**
+     * 建立请求,以表单HTML形式构造(默认)
+     * @param $para_temp 请求参数数组
+     * @return 提交表单HTML文本
+     */
+    protected function buildRequestForm($para_temp) {
+
+        $sHtml = "<form id='alipaysubmit' name='alipaysubmit' action='" . $this->gatewayUrl . "?charset=" . trim($this->postCharset) . "' method='POST'>";
+        while (list ($key, $val) = each($para_temp)) {
+            if (false === $this->checkEmpty($val)) {
+                //$val = $this->characet($val, $this->postCharset);
+                $val = str_replace("'", "&apos;", $val);
+                //$val = str_replace("\"","&quot;",$val);
+                $sHtml .= "<input type='hidden' name='" . $key . "' value='" . $val . "'/>";
+            }
+        }
+
+        //submit按钮控件请不要含有name属性
+        $sHtml = $sHtml . "<input type='submit' value='ok' style='display:none;''></form>";
+
+        $sHtml = $sHtml . "<script>document.forms['alipaysubmit'].submit();</script>";
+
+        return $sHtml;
+    }
+
+
+    public function execute($request, $authToken = null, $appInfoAuthtoken = null) {
+
+        $this->setupCharsets($request);
+
+        //		//  如果两者编码不一致,会出现签名验签或者乱码
+        if (strcasecmp($this->fileCharset, $this->postCharset)) {
+
+            // writeLog("本地文件字符集编码与表单提交编码不一致,请务必设置成一样,属性名分别为postCharset!");
+            throw new Exception("文件编码:[" . $this->fileCharset . "] 与表单提交编码:[" . $this->postCharset . "]两者不一致!");
+        }
+
+        $iv = null;
+
+        if (!$this->checkEmpty($request->getApiVersion())) {
+            $iv = $request->getApiVersion();
+        } else {
+            $iv = $this->apiVersion;
+        }
+
+
+        //组装系统参数
+        $sysParams["app_id"] = $this->appId;
+        $sysParams["version"] = $iv;
+        $sysParams["format"] = $this->format;
+        $sysParams["sign_type"] = $this->signType;
+        $sysParams["method"] = $request->getApiMethodName();
+        $sysParams["timestamp"] = date("Y-m-d H:i:s");
+        $sysParams["auth_token"] = $authToken;
+        $sysParams["alipay_sdk"] = $this->alipaySdkVersion;
+        $sysParams["terminal_type"] = $request->getTerminalType();
+        $sysParams["terminal_info"] = $request->getTerminalInfo();
+        $sysParams["prod_code"] = $request->getProdCode();
+        $sysParams["notify_url"] = $request->getNotifyUrl();
+        $sysParams["charset"] = $this->postCharset;
+        $sysParams["app_auth_token"] = $appInfoAuthtoken;
+
+
+        //获取业务参数
+        $apiParams = $request->getApiParas();
+
+        if (method_exists($request, "getNeedEncrypt") && $request->getNeedEncrypt()) {
+
+            $sysParams["encrypt_type"] = $this->encryptType;
+
+            if ($this->checkEmpty($apiParams['biz_content'])) {
+
+                throw new Exception(" api request Fail! The reason : encrypt request is not supperted!");
+            }
+
+            if ($this->checkEmpty($this->encryptKey) || $this->checkEmpty($this->encryptType)) {
+
+                throw new Exception(" encryptType and encryptKey must not null! ");
+            }
+
+            if ("AES" != $this->encryptType) {
+
+                throw new Exception("加密类型只支持AES");
+            }
+
+            // 执行加密
+            $enCryptContent = encrypt($apiParams['biz_content'], $this->encryptKey);
+            $apiParams['biz_content'] = $enCryptContent;
+
+        }
+
+
+        //签名
+        $sysParams["sign"] = $this->generateSign(array_merge($apiParams, $sysParams), $this->signType);
+
+
+        //系统参数放入GET请求串
+        $requestUrl = $this->gatewayUrl . "?";
+        foreach ($sysParams as $sysParamKey => $sysParamValue) {
+            $requestUrl .= "$sysParamKey=" . urlencode($this->characet($sysParamValue, $this->postCharset)) . "&";
+        }
+        $requestUrl = substr($requestUrl, 0, -1);
+
+
+        //发起HTTP请求
+        try {
+            $resp = $this->curl($requestUrl, $apiParams);
+        } catch (Exception $e) {
+
+            $this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_ERROR_" . $e->getCode(), $e->getMessage());
+            return false;
+        }
+
+        //解析AOP返回结果
+        $respWellFormed = false;
+
+
+        // 将返回结果转换本地文件编码
+        $r = iconv($this->postCharset, $this->fileCharset . "//IGNORE", $resp);
+
+
+        $signData = null;
+
+        if ("json" == $this->format) {
+
+            $respObject = json_decode($r);
+            if (null !== $respObject) {
+                $respWellFormed = true;
+                $signData = $this->parserJSONSignData($request, $resp, $respObject);
+            }
+        } else if ("xml" == $this->format) {
+            $disableLibxmlEntityLoader = libxml_disable_entity_loader(true);
+            $respObject = @ simplexml_load_string($resp);
+            if (false !== $respObject) {
+                $respWellFormed = true;
+
+                $signData = $this->parserXMLSignData($request, $resp);
+            }
+            libxml_disable_entity_loader($disableLibxmlEntityLoader);
+        }
+
+
+        //返回的HTTP文本不是标准JSON或者XML,记下错误日志
+        if (false === $respWellFormed) {
+            $this->logCommunicationError($sysParams["method"], $requestUrl, "HTTP_RESPONSE_NOT_WELL_FORMED", $resp);
+            return false;
+        }
+
+        // 验签
+        $this->checkResponseSign($request, $signData, $resp, $respObject);
+
+        // 解密
+        if (method_exists($request, "getNeedEncrypt") && $request->getNeedEncrypt()) {
+
+            if ("json" == $this->format) {
+
+
+                $resp = $this->encryptJSONSignSource($request, $resp);
+
+                // 将返回结果转换本地文件编码
+                $r = iconv($this->postCharset, $this->fileCharset . "//IGNORE", $resp);
+                $respObject = json_decode($r);
+            } else {
+
+                $resp = $this->encryptXMLSignSource($request, $resp);
+
+                $r = iconv($this->postCharset, $this->fileCharset . "//IGNORE", $resp);
+                $disableLibxmlEntityLoader = libxml_disable_entity_loader(true);
+                $respObject = @ simplexml_load_string($r);
+                libxml_disable_entity_loader($disableLibxmlEntityLoader);
+
+            }
+        }
+
+        return $respObject;
+    }
+
+    /**
+     * 转换字符集编码
+     * @param $data
+     * @param $targetCharset
+     * @return string
+     */
+    function characet($data, $targetCharset) {
+
+        if (!empty($data)) {
+            $fileType = $this->fileCharset;
+            if (strcasecmp($fileType, $targetCharset) != 0) {
+                $data = mb_convert_encoding($data, $targetCharset, $fileType);
+                //				$data = iconv($fileType, $targetCharset.'//IGNORE', $data);
+            }
+        }
+
+
+        return $data;
+    }
+
+    public function exec($paramsArray) {
+        if (!isset ($paramsArray["method"])) {
+            trigger_error("No api name passed");
+        }
+        $inflector = new LtInflector;
+        $inflector->conf["separator"] = ".";
+        $requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request";
+        if (!class_exists($requestClassName)) {
+            trigger_error("No such api: " . $paramsArray["method"]);
+        }
+
+        $session = isset ($paramsArray["session"]) ? $paramsArray["session"] : null;
+
+        $req = new $requestClassName;
+        foreach ($paramsArray as $paraKey => $paraValue) {
+            $inflector->conf["separator"] = "_";
+            $setterMethodName = $inflector->camelize($paraKey);
+            $inflector->conf["separator"] = ".";
+            $setterMethodName = "set" . $inflector->camelize($setterMethodName);
+            if (method_exists($req, $setterMethodName)) {
+                $req->$setterMethodName ($paraValue);
+            }
+        }
+        return $this->execute($req, $session);
+    }
+
+    /**
+     * 校验$value是否非空
+     *  if not set ,return true;
+     *    if is null , return true;
+     **/
+    protected function checkEmpty($value) {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    /** rsaCheckV1 & rsaCheckV2
+     *  验证签名
+     *  在使用本方法前,必须初始化AopClient且传入公钥参数。
+     *  公钥是否是读取字符串还是读取文件,是根据初始化传入的值判断的。
+     **/
+    public function rsaCheckV1($params, $rsaPublicKeyFilePath, $signType = 'RSA') {
+        $sign = $params['sign'];
+        $params['sign_type'] = null;
+        $params['sign'] = null;
+        return $this->verify($this->getSignContent($params), $sign, $rsaPublicKeyFilePath, $signType);
+    }
+
+    public function rsaCheckV2($params, $rsaPublicKeyFilePath, $signType = 'RSA') {
+        $sign = $params['sign'];
+        $params['sign'] = null;
+        return $this->verify($this->getSignContent($params), $sign, $rsaPublicKeyFilePath, $signType);
+    }
+
+    function verify($data, $sign, $rsaPublicKeyFilePath, $signType = 'RSA') {
+
+        if ($this->checkEmpty($this->alipayPublicKey)) {
+            $pubKey = $this->alipayrsaPublicKey;
+            $res = "-----BEGIN PUBLIC KEY-----\n" .
+                wordwrap($pubKey, 64, "\n", true) .
+                "\n-----END PUBLIC KEY-----";
+        } else {
+            //读取公钥文件
+            $pubKey = file_get_contents($rsaPublicKeyFilePath);
+            //转换为openssl格式密钥
+            $res = openssl_get_publickey($pubKey);
+        }
+        ($res) or die('支付宝RSA公钥错误。请检查公钥文件格式是否正确');
+
+        //调用openssl内置方法验签,返回bool值
+
+        $result = FALSE;
+        if ("RSA2" == $signType) {
+            $result = (openssl_verify($data, base64_decode($sign), $res, OPENSSL_ALGO_SHA256) === 1);
+        } else {
+            $result = (openssl_verify($data, base64_decode($sign), $res) === 1);
+        }
+
+        if (!$this->checkEmpty($this->alipayPublicKey)) {
+            //释放资源
+            openssl_free_key($res);
+        }
+
+        return $result;
+    }
+
+    /**
+     *  在使用本方法前,必须初始化AopClient且传入公私钥参数。
+     *  公钥是否是读取字符串还是读取文件,是根据初始化传入的值判断的。
+     **/
+    public function checkSignAndDecrypt($params, $rsaPublicKeyPem, $rsaPrivateKeyPem, $isCheckSign, $isDecrypt, $signType = 'RSA') {
+        $charset = $params['charset'];
+        $bizContent = $params['biz_content'];
+        if ($isCheckSign) {
+            if (!$this->rsaCheckV2($params, $rsaPublicKeyPem, $signType)) {
+                echo "<br/>checkSign failure<br/>";
+                exit;
+            }
+        }
+        if ($isDecrypt) {
+            return $this->rsaDecrypt($bizContent, $rsaPrivateKeyPem, $charset);
+        }
+
+        return $bizContent;
+    }
+
+    /**
+     *  在使用本方法前,必须初始化AopClient且传入公私钥参数。
+     *  公钥是否是读取字符串还是读取文件,是根据初始化传入的值判断的。
+     **/
+    public function encryptAndSign($bizContent, $rsaPublicKeyPem, $rsaPrivateKeyPem, $charset, $isEncrypt, $isSign, $signType = 'RSA') {
+        // 加密,并签名
+        if ($isEncrypt && $isSign) {
+            $encrypted = $this->rsaEncrypt($bizContent, $rsaPublicKeyPem, $charset);
+            $sign = $this->sign($encrypted, $signType);
+            $response = "<?xml version=\"1.0\" encoding=\"$charset\"?><alipay><response>$encrypted</response><encryption_type>RSA</encryption_type><sign>$sign</sign><sign_type>$signType</sign_type></alipay>";
+            return $response;
+        }
+        // 加密,不签名
+        if ($isEncrypt && (!$isSign)) {
+            $encrypted = $this->rsaEncrypt($bizContent, $rsaPublicKeyPem, $charset);
+            $response = "<?xml version=\"1.0\" encoding=\"$charset\"?><alipay><response>$encrypted</response><encryption_type>$signType</encryption_type></alipay>";
+            return $response;
+        }
+        // 不加密,但签名
+        if ((!$isEncrypt) && $isSign) {
+            $sign = $this->sign($bizContent, $signType);
+            $response = "<?xml version=\"1.0\" encoding=\"$charset\"?><alipay><response>$bizContent</response><sign>$sign</sign><sign_type>$signType</sign_type></alipay>";
+            return $response;
+        }
+        // 不加密,不签名
+        $response = "<?xml version=\"1.0\" encoding=\"$charset\"?>$bizContent";
+        return $response;
+    }
+
+    /**
+     *  在使用本方法前,必须初始化AopClient且传入公私钥参数。
+     *  公钥是否是读取字符串还是读取文件,是根据初始化传入的值判断的。
+     **/
+    public function rsaEncrypt($data, $rsaPublicKeyPem, $charset) {
+        if ($this->checkEmpty($this->alipayPublicKey)) {
+            //读取字符串
+            $pubKey = $this->alipayrsaPublicKey;
+            $res = "-----BEGIN PUBLIC KEY-----\n" .
+                wordwrap($pubKey, 64, "\n", true) .
+                "\n-----END PUBLIC KEY-----";
+        } else {
+            //读取公钥文件
+            $pubKey = file_get_contents($rsaPublicKeyFilePath);
+            //转换为openssl格式密钥
+            $res = openssl_get_publickey($pubKey);
+        }
+
+        ($res) or die('支付宝RSA公钥错误。请检查公钥文件格式是否正确');
+        $blocks = $this->splitCN($data, 0, 30, $charset);
+        $chrtext  = null;
+        $encodes  = array();
+        foreach ($blocks as $n => $block) {
+            if (!openssl_public_encrypt($block, $chrtext , $res)) {
+                echo "<br/>" . openssl_error_string() . "<br/>";
+            }
+            $encodes[] = $chrtext ;
+        }
+        $chrtext = implode(",", $encodes);
+
+        return base64_encode($chrtext);
+    }
+
+    /**
+     *  在使用本方法前,必须初始化AopClient且传入公私钥参数。
+     *  公钥是否是读取字符串还是读取文件,是根据初始化传入的值判断的。
+     **/
+    public function rsaDecrypt($data, $rsaPrivateKeyPem, $charset) {
+
+        if ($this->checkEmpty($this->rsaPrivateKeyFilePath)) {
+            //读字符串
+            $priKey = $this->rsaPrivateKey;
+            $res = "-----BEGIN RSA PRIVATE KEY-----\n" .
+                wordwrap($priKey, 64, "\n", true) .
+                "\n-----END RSA PRIVATE KEY-----";
+        } else {
+            $priKey = file_get_contents($this->rsaPrivateKeyFilePath);
+            $res = openssl_get_privatekey($priKey);
+        }
+        ($res) or die('您使用的私钥格式错误,请检查RSA私钥配置');
+        //转换为openssl格式密钥
+        $decodes = explode(',', $data);
+        $strnull = "";
+        $dcyCont = "";
+        foreach ($decodes as $n => $decode) {
+            if (!openssl_private_decrypt($decode, $dcyCont, $res)) {
+                echo "<br/>" . openssl_error_string() . "<br/>";
+            }
+            $strnull .= $dcyCont;
+        }
+        return $strnull;
+    }
+
+    function splitCN($cont, $n = 0, $subnum, $charset) {
+        //$len = strlen($cont) / 3;
+        $arrr = array();
+        for ($i = $n; $i < strlen($cont); $i += $subnum) {
+            $res = $this->subCNchar($cont, $i, $subnum, $charset);
+            if (!empty ($res)) {
+                $arrr[] = $res;
+            }
+        }
+
+        return $arrr;
+    }
+
+    function subCNchar($str, $start = 0, $length, $charset = "gbk") {
+        if (strlen($str) <= $length) {
+            return $str;
+        }
+        $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
+        $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
+        $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
+        $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
+        preg_match_all($re[$charset], $str, $match);
+        $slice = join("", array_slice($match[0], $start, $length));
+        return $slice;
+    }
+
+    function parserResponseSubCode($request, $responseContent, $respObject, $format) {
+
+        if ("json" == $format) {
+
+            $apiName = $request->getApiMethodName();
+            $rootNodeName = str_replace(".", "_", $apiName) . $this->RESPONSE_SUFFIX;
+            $errorNodeName = $this->ERROR_RESPONSE;
+
+            $rootIndex = strpos($responseContent, $rootNodeName);
+            $errorIndex = strpos($responseContent, $errorNodeName);
+
+            if ($rootIndex > 0) {
+                // 内部节点对象
+                $rInnerObject = $respObject->$rootNodeName;
+            } elseif ($errorIndex > 0) {
+
+                $rInnerObject = $respObject->$errorNodeName;
+            } else {
+                return null;
+            }
+
+            // 存在属性则返回对应值
+            if (isset($rInnerObject->sub_code)) {
+
+                return $rInnerObject->sub_code;
+            } else {
+
+                return null;
+            }
+
+
+        } elseif ("xml" == $format) {
+
+            // xml格式sub_code在同一层级
+            return $respObject->sub_code;
+
+        }
+
+
+    }
+
+    function parserJSONSignData($request, $responseContent, $responseJSON) {
+        $aliPayPath = '../extend/AliPay/alipay-sdk/';
+        require_once($aliPayPath . "aop/SignData.php");
+        $signData = new SignData();
+
+        $signData->sign = $this->parserJSONSign($responseJSON);
+        $signData->signSourceData = $this->parserJSONSignSource($request, $responseContent);
+
+
+        return $signData;
+
+    }
+
+    function parserJSONSignSource($request, $responseContent) {
+
+        $apiName = $request->getApiMethodName();
+        $rootNodeName = str_replace(".", "_", $apiName) . $this->RESPONSE_SUFFIX;
+
+        $rootIndex = strpos($responseContent, $rootNodeName);
+        $errorIndex = strpos($responseContent, $this->ERROR_RESPONSE);
+
+
+        if ($rootIndex > 0) {
+
+            return $this->parserJSONSource($responseContent, $rootNodeName, $rootIndex);
+        } else if ($errorIndex > 0) {
+
+            return $this->parserJSONSource($responseContent, $this->ERROR_RESPONSE, $errorIndex);
+        } else {
+
+            return null;
+        }
+
+
+    }
+
+    function parserJSONSource($responseContent, $nodeName, $nodeIndex) {
+        $signDataStartIndex = $nodeIndex + strlen($nodeName) + 2;
+        $signIndex = strrpos($responseContent, "\"" . $this->SIGN_NODE_NAME . "\"");
+        // 签名前-逗号
+        $signDataEndIndex = $signIndex - 1;
+        $indexLen = $signDataEndIndex - $signDataStartIndex;
+        if ($indexLen < 0) {
+
+            return null;
+        }
+
+        return substr($responseContent, $signDataStartIndex, $indexLen);
+
+    }
+
+    function parserJSONSign($responseJSon) {
+
+        return $responseJSon->sign;
+    }
+
+    function parserXMLSignData($request, $responseContent) {
+
+
+        $signData = new SignData();
+
+        $signData->sign = $this->parserXMLSign($responseContent);
+        $signData->signSourceData = $this->parserXMLSignSource($request, $responseContent);
+
+
+        return $signData;
+
+
+    }
+
+    function parserXMLSignSource($request, $responseContent) {
+
+
+        $apiName = $request->getApiMethodName();
+        $rootNodeName = str_replace(".", "_", $apiName) . $this->RESPONSE_SUFFIX;
+
+
+        $rootIndex = strpos($responseContent, $rootNodeName);
+        $errorIndex = strpos($responseContent, $this->ERROR_RESPONSE);
+        //		$this->echoDebug("<br/>rootNodeName:" . $rootNodeName);
+        //		$this->echoDebug("<br/> responseContent:<xmp>" . $responseContent . "</xmp>");
+
+
+        if ($rootIndex > 0) {
+
+            return $this->parserXMLSource($responseContent, $rootNodeName, $rootIndex);
+        } else if ($errorIndex > 0) {
+
+            return $this->parserXMLSource($responseContent, $this->ERROR_RESPONSE, $errorIndex);
+        } else {
+
+            return null;
+        }
+
+
+    }
+
+    function parserXMLSource($responseContent, $nodeName, $nodeIndex) {
+        $signDataStartIndex = $nodeIndex + strlen($nodeName) + 1;
+        $signIndex = strrpos($responseContent, "<" . $this->SIGN_NODE_NAME . ">");
+        // 签名前-逗号
+        $signDataEndIndex = $signIndex - 1;
+        $indexLen = $signDataEndIndex - $signDataStartIndex + 1;
+
+        if ($indexLen < 0) {
+            return null;
+        }
+
+
+        return substr($responseContent, $signDataStartIndex, $indexLen);
+
+
+    }
+
+    function parserXMLSign($responseContent) {
+        $signNodeName = "<" . $this->SIGN_NODE_NAME . ">";
+        $signEndNodeName = "</" . $this->SIGN_NODE_NAME . ">";
+
+        $indexOfSignNode = strpos($responseContent, $signNodeName);
+        $indexOfSignEndNode = strpos($responseContent, $signEndNodeName);
+
+
+        if ($indexOfSignNode < 0 || $indexOfSignEndNode < 0) {
+            return null;
+        }
+
+        $nodeIndex = ($indexOfSignNode + strlen($signNodeName));
+
+        $indexLen = $indexOfSignEndNode - $nodeIndex;
+
+        if ($indexLen < 0) {
+            return null;
+        }
+
+        // 签名
+        return substr($responseContent, $nodeIndex, $indexLen);
+
+    }
+
+    /**
+     * 验签
+     * @param $request
+     * @param $signData
+     * @param $resp
+     * @param $respObject
+     * @throws Exception
+     */
+    public function checkResponseSign($request, $signData, $resp, $respObject) {
+
+        if (!$this->checkEmpty($this->alipayPublicKey) || !$this->checkEmpty($this->alipayrsaPublicKey)) {
+
+
+            if ($signData == null || $this->checkEmpty($signData->sign) || $this->checkEmpty($signData->signSourceData)) {
+
+                throw new Exception(" check sign Fail! The reason : signData is Empty");
+            }
+
+
+            // 获取结果sub_code
+            $responseSubCode = $this->parserResponseSubCode($request, $resp, $respObject, $this->format);
+
+
+            if (!$this->checkEmpty($responseSubCode) || ($this->checkEmpty($responseSubCode) && !$this->checkEmpty($signData->sign))) {
+
+                $checkResult = $this->verify($signData->signSourceData, $signData->sign, $this->alipayPublicKey, $this->signType);
+
+
+                if (!$checkResult) {
+
+                    if (strpos($signData->signSourceData, "\\/") > 0) {
+
+                        $signData->signSourceData = str_replace("\\/", "/", $signData->signSourceData);
+
+                        $checkResult = $this->verify($signData->signSourceData, $signData->sign, $this->alipayPublicKey, $this->signType);
+
+                        if (!$checkResult) {
+                            throw new Exception("check sign Fail! [sign=" . $signData->sign . ", signSourceData=" . $signData->signSourceData . "]");
+                        }
+
+                    } else {
+
+                        throw new Exception("check sign Fail! [sign=" . $signData->sign . ", signSourceData=" . $signData->signSourceData . "]");
+                    }
+
+                }
+            }
+
+
+        }
+    }
+
+    private function setupCharsets($request) {
+        if ($this->checkEmpty($this->postCharset)) {
+            $this->postCharset = 'UTF-8';
+        }
+        $str = preg_match('/[\x80-\xff]/', $this->appId) ? $this->appId : print_r($request, true);
+        $this->fileCharset = mb_detect_encoding($str, "UTF-8, GBK") == 'UTF-8' ? 'UTF-8' : 'GBK';
+    }
+
+    // 获取加密内容
+
+    private function encryptJSONSignSource($request, $responseContent) {
+
+        $parsetItem = $this->parserEncryptJSONSignSource($request, $responseContent);
+
+        $bodyIndexContent = substr($responseContent, 0, $parsetItem->startIndex);
+        $bodyEndContent = substr($responseContent, $parsetItem->endIndex, strlen($responseContent) + 1 - $parsetItem->endIndex);
+
+        $bizContent = decrypt($parsetItem->encryptContent, $this->encryptKey);
+        return $bodyIndexContent . $bizContent . $bodyEndContent;
+
+    }
+
+
+    private function parserEncryptJSONSignSource($request, $responseContent) {
+
+        $apiName = $request->getApiMethodName();
+        $rootNodeName = str_replace(".", "_", $apiName) . $this->RESPONSE_SUFFIX;
+
+        $rootIndex = strpos($responseContent, $rootNodeName);
+        $errorIndex = strpos($responseContent, $this->ERROR_RESPONSE);
+
+
+        if ($rootIndex > 0) {
+
+            return $this->parserEncryptJSONItem($responseContent, $rootNodeName, $rootIndex);
+        } else if ($errorIndex > 0) {
+
+            return $this->parserEncryptJSONItem($responseContent, $this->ERROR_RESPONSE, $errorIndex);
+        } else {
+
+            return null;
+        }
+
+
+    }
+
+
+    private function parserEncryptJSONItem($responseContent, $nodeName, $nodeIndex) {
+        $signDataStartIndex = $nodeIndex + strlen($nodeName) + 2;
+        $signIndex = strpos($responseContent, "\"" . $this->SIGN_NODE_NAME . "\"");
+        // 签名前-逗号
+        $signDataEndIndex = $signIndex - 1;
+
+        if ($signDataEndIndex < 0) {
+
+            $signDataEndIndex = strlen($responseContent) - 1;
+        }
+
+        $indexLen = $signDataEndIndex - $signDataStartIndex;
+
+        $encContent = substr($responseContent, $signDataStartIndex + 1, $indexLen - 2);
+
+
+        $encryptParseItem = new EncryptParseItem();
+
+        $encryptParseItem->encryptContent = $encContent;
+        $encryptParseItem->startIndex = $signDataStartIndex;
+        $encryptParseItem->endIndex = $signDataEndIndex;
+
+        return $encryptParseItem;
+
+    }
+
+    // 获取加密内容
+
+    private function encryptXMLSignSource($request, $responseContent) {
+
+        $parsetItem = $this->parserEncryptXMLSignSource($request, $responseContent);
+
+        $bodyIndexContent = substr($responseContent, 0, $parsetItem->startIndex);
+        $bodyEndContent = substr($responseContent, $parsetItem->endIndex, strlen($responseContent) + 1 - $parsetItem->endIndex);
+        $bizContent = decrypt($parsetItem->encryptContent, $this->encryptKey);
+
+        return $bodyIndexContent . $bizContent . $bodyEndContent;
+
+    }
+
+    private function parserEncryptXMLSignSource($request, $responseContent) {
+
+
+        $apiName = $request->getApiMethodName();
+        $rootNodeName = str_replace(".", "_", $apiName) . $this->RESPONSE_SUFFIX;
+
+
+        $rootIndex = strpos($responseContent, $rootNodeName);
+        $errorIndex = strpos($responseContent, $this->ERROR_RESPONSE);
+        //		$this->echoDebug("<br/>rootNodeName:" . $rootNodeName);
+        //		$this->echoDebug("<br/> responseContent:<xmp>" . $responseContent . "</xmp>");
+
+
+        if ($rootIndex > 0) {
+
+            return $this->parserEncryptXMLItem($responseContent, $rootNodeName, $rootIndex);
+        } else if ($errorIndex > 0) {
+
+            return $this->parserEncryptXMLItem($responseContent, $this->ERROR_RESPONSE, $errorIndex);
+        } else {
+
+            return null;
+        }
+
+
+    }
+
+    private function parserEncryptXMLItem($responseContent, $nodeName, $nodeIndex) {
+
+        $signDataStartIndex = $nodeIndex + strlen($nodeName) + 1;
+
+        $xmlStartNode = "<" . $this->ENCRYPT_XML_NODE_NAME . ">";
+        $xmlEndNode = "</" . $this->ENCRYPT_XML_NODE_NAME . ">";
+
+        $indexOfXmlNode = strpos($responseContent, $xmlEndNode);
+        if ($indexOfXmlNode < 0) {
+
+            $item = new EncryptParseItem();
+            $item->encryptContent = null;
+            $item->startIndex = 0;
+            $item->endIndex = 0;
+            return $item;
+        }
+
+        $startIndex = $signDataStartIndex + strlen($xmlStartNode);
+        $bizContentLen = $indexOfXmlNode - $startIndex;
+        $bizContent = substr($responseContent, $startIndex, $bizContentLen);
+
+        $encryptParseItem = new EncryptParseItem();
+        $encryptParseItem->encryptContent = $bizContent;
+        $encryptParseItem->startIndex = $signDataStartIndex;
+        $encryptParseItem->endIndex = $indexOfXmlNode + strlen($xmlEndNode);
+
+        return $encryptParseItem;
+
+    }
+
+
+    function echoDebug($content) {
+
+        if ($this->debugInfo) {
+            echo "<br/>" . $content;
+        }
+
+    }
+
+
+}

+ 71 - 0
extend/AliPay/alipay-sdk/aop/AopEncrypt.php

@@ -0,0 +1,71 @@
+<?php
+/**
+ *   加密工具类
+ *
+ * User: jiehua
+ * Date: 16/3/30
+ * Time: 下午3:25
+ */
+
+/**
+ * 加密方法
+ * @param string $str
+ * @return string
+ */
+ function encrypt($str,$screct_key){
+	//AES, 128 模式加密数据 CBC
+	$screct_key = base64_decode($screct_key);
+	$str = trim($str);
+	$str = addPKCS7Padding($str);
+	$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC),1);
+	$encrypt_str =  mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC);
+	return base64_encode($encrypt_str);
+}
+
+/**
+ * 解密方法
+ * @param string $str
+ * @return string
+ */
+ function decrypt($str,$screct_key){
+	//AES, 128 模式加密数据 CBC
+	$str = base64_decode($str);
+	$screct_key = base64_decode($screct_key);
+	$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC),1);
+	$encrypt_str =  mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC);
+	$encrypt_str = trim($encrypt_str);
+
+	$encrypt_str = stripPKSC7Padding($encrypt_str);
+	return $encrypt_str;
+
+}
+
+/**
+ * 填充算法
+ * @param string $source
+ * @return string
+ */
+function addPKCS7Padding($source){
+	$source = trim($source);
+	$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
+
+	$pad = $block - (strlen($source) % $block);
+	if ($pad <= $block) {
+		$char = chr($pad);
+		$source .= str_repeat($char, $pad);
+	}
+	return $source;
+}
+/**
+ * 移去填充算法
+ * @param string $source
+ * @return string
+ */
+function stripPKSC7Padding($source){
+	$source = trim($source);
+	$char = substr($source, -1);
+	$num = ord($char);
+	if($num==62)return $source;
+	$source = substr($source,0,-$num);
+	return $source;
+}

+ 19 - 0
extend/AliPay/alipay-sdk/aop/EncryptParseItem.php

@@ -0,0 +1,19 @@
+<?php
+/**
+ *  TODO 补充说明 
+ *
+ * User: jiehua
+ * Date: 16/3/30
+ * Time: 下午8:55
+ */
+
+class EncryptParseItem {
+
+
+	public $startIndex;
+
+	public $endIndex;
+
+	public $encryptContent;
+
+} 

+ 18 - 0
extend/AliPay/alipay-sdk/aop/EncryptResponseData.php

@@ -0,0 +1,18 @@
+<?php
+/**
+ *  TODO 补充说明 
+ *
+ * User: jiehua
+ * Date: 16/3/30
+ * Time: 下午8:51
+ */
+
+class EncryptResponseData {
+
+
+	public $realContent;
+
+	public $returnContent;
+
+
+} 

+ 16 - 0
extend/AliPay/alipay-sdk/aop/SignData.php

@@ -0,0 +1,16 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: jiehua
+ * Date: 15/5/2
+ * Time: 下午6:21
+ */
+
+class SignData {
+
+    public $signSourceData=null;
+
+
+    public $sign=null;
+
+} 

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAccountExrateAdviceAcceptRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.account.exrate.advice.accept request
+ *
+ * @author auto create
+ * @since 1.0, 2016-05-23 14:55:42
+ */
+class AlipayAccountExrateAdviceAcceptRequest
+{
+	/** 
+	 * 标准的兑换交易受理接口
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.account.exrate.advice.accept";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAccountExrateAllclientrateQueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.account.exrate.allclientrate.query request
+ *
+ * @author auto create
+ * @since 1.0, 2018-04-12 19:07:12
+ */
+class AlipayAccountExrateAllclientrateQueryRequest
+{
+	/** 
+	 * 查询客户的所有币种对最新有效汇率
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.account.exrate.allclientrate.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAccountExrateRatequeryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.account.exrate.ratequery request
+ *
+ * @author auto create
+ * @since 1.0, 2017-03-27 18:11:27
+ */
+class AlipayAccountExrateRatequeryRequest
+{
+	/** 
+	 * 对于部分签约境内当面付的商家,为了能够在境外进行推广,因此需要汇率进行币种之间的转换,本接口提供此业务场景下的汇率查询服务
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.account.exrate.ratequery";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAccountExrateTraderequestCreateRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.account.exrate.traderequest.create request
+ *
+ * @author auto create
+ * @since 1.0, 2018-04-13 17:35:02
+ */
+class AlipayAccountExrateTraderequestCreateRequest
+{
+	/** 
+	 * 受理外汇交易请求
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.account.exrate.traderequest.create";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 171 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAcquireCancelRequest.php

@@ -0,0 +1,171 @@
+<?php
+/**
+ * ALIPAY API: alipay.acquire.cancel request
+ *
+ * @author auto create
+ * @since 1.0, 2014-06-12 17:17:06
+ */
+class AlipayAcquireCancelRequest
+{
+	/** 
+	 * 操作员ID。
+	 **/
+	private $operatorId;
+	
+	/** 
+	 * 操作员的类型:
+0:支付宝操作员
+1:商户的操作员
+如果传入其它值或者为空,则默认设置为1
+	 **/
+	private $operatorType;
+	
+	/** 
+	 * 支付宝合作商户网站唯一订单号。
+	 **/
+	private $outTradeNo;
+	
+	/** 
+	 * 该交易在支付宝系统中的交易流水号。
+最短16位,最长64位。
+如果同时传了out_trade_no和trade_no,则以trade_no为准。
+	 **/
+	private $tradeNo;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setOperatorId($operatorId)
+	{
+		$this->operatorId = $operatorId;
+		$this->apiParas["operator_id"] = $operatorId;
+	}
+
+	public function getOperatorId()
+	{
+		return $this->operatorId;
+	}
+
+	public function setOperatorType($operatorType)
+	{
+		$this->operatorType = $operatorType;
+		$this->apiParas["operator_type"] = $operatorType;
+	}
+
+	public function getOperatorType()
+	{
+		return $this->operatorType;
+	}
+
+	public function setOutTradeNo($outTradeNo)
+	{
+		$this->outTradeNo = $outTradeNo;
+		$this->apiParas["out_trade_no"] = $outTradeNo;
+	}
+
+	public function getOutTradeNo()
+	{
+		return $this->outTradeNo;
+	}
+
+	public function setTradeNo($tradeNo)
+	{
+		$this->tradeNo = $tradeNo;
+		$this->apiParas["trade_no"] = $tradeNo;
+	}
+
+	public function getTradeNo()
+	{
+		return $this->tradeNo;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.acquire.cancel";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 152 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAcquireCloseRequest.php

@@ -0,0 +1,152 @@
+<?php
+/**
+ * ALIPAY API: alipay.acquire.close request
+ *
+ * @author auto create
+ * @since 1.0, 2014-06-12 17:17:06
+ */
+class AlipayAcquireCloseRequest
+{
+	/** 
+	 * 卖家的操作员ID
+	 **/
+	private $operatorId;
+	
+	/** 
+	 * 支付宝合作商户网站唯一订单号
+	 **/
+	private $outTradeNo;
+	
+	/** 
+	 * 该交易在支付宝系统中的交易流水号。
+最短16位,最长64位。
+如果同时传了out_trade_no和trade_no,则以trade_no为准
+	 **/
+	private $tradeNo;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setOperatorId($operatorId)
+	{
+		$this->operatorId = $operatorId;
+		$this->apiParas["operator_id"] = $operatorId;
+	}
+
+	public function getOperatorId()
+	{
+		return $this->operatorId;
+	}
+
+	public function setOutTradeNo($outTradeNo)
+	{
+		$this->outTradeNo = $outTradeNo;
+		$this->apiParas["out_trade_no"] = $outTradeNo;
+	}
+
+	public function getOutTradeNo()
+	{
+		return $this->outTradeNo;
+	}
+
+	public function setTradeNo($tradeNo)
+	{
+		$this->tradeNo = $tradeNo;
+		$this->apiParas["trade_no"] = $tradeNo;
+	}
+
+	public function getTradeNo()
+	{
+		return $this->tradeNo;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.acquire.close";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 550 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAcquireCreateandpayRequest.php

@@ -0,0 +1,550 @@
+<?php
+/**
+ * ALIPAY API: alipay.acquire.createandpay request
+ *
+ * @author auto create
+ * @since 1.0, 2018-06-15 16:56:59
+ */
+class AlipayAcquireCreateandpayRequest
+{
+	/** 
+	 * 证书签名
+	 **/
+	private $alipayCaRequest;
+	
+	/** 
+	 * 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
+	 **/
+	private $body;
+	
+	/** 
+	 * 买家支付宝账号,可以为email或者手机号。
+	 **/
+	private $buyerEmail;
+	
+	/** 
+	 * 买家支付宝账号对应的支付宝唯一用户号。
+以2088开头的纯16位数字。
+	 **/
+	private $buyerId;
+	
+	/** 
+	 * 描述多渠道收单的渠道明细信息,json格式,具体请参见“4.5 渠道明细说明”。
+	 **/
+	private $channelParameters;
+	
+	/** 
+	 * 订单金额币种。
+目前只支持传入156(人民币)。
+如果为空,则默认设置为156。
+	 **/
+	private $currency;
+	
+	/** 
+	 * 动态ID。
+	 **/
+	private $dynamicId;
+	
+	/** 
+	 * 动态ID类型:
+&#1048698;
+soundwave:声波
+&#1048698;
+qrcode:二维码
+&#1048698;
+barcode:条码
+&#1048698;
+wave_code:声波,等同soundwave
+&#1048698;
+qr_code:二维码,等同qrcode
+&#1048698;
+bar_code:条码,等同barcode
+建议取值wave_code、qr_code、bar_code。
+	 **/
+	private $dynamicIdType;
+	
+	/** 
+	 * 用于商户的特定业务信息的传递,只有商户与支付宝约定了传递此参数且约定了参数含义,此参数才有效。
+比如可传递声波支付场景下的门店ID等信息,以json格式传输,具体请参见“4.7 业务扩展参数说明”。
+	 **/
+	private $extendParams;
+	
+	/** 
+	 * xml或json
+	 **/
+	private $formatType;
+	
+	/** 
+	 * 描述商品明细信息,json格式,具体请参见“4.3 商品明细说明”。
+	 **/
+	private $goodsDetail;
+	
+	/** 
+	 * 设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。
+取值范围:1m~15d。
+m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。
+该参数数值不接受小数点,如1.5h,可转换为90m。
+该功能需要联系支付宝配置关闭时间。
+	 **/
+	private $itBPay;
+	
+	/** 
+	 * 描述预付卡相关的明细信息,json格式,具体请参见“4.8 预付卡明细参数说明”。
+	 **/
+	private $mcardParameters;
+	
+	/** 
+	 * 卖家的操作员ID。
+	 **/
+	private $operatorId;
+	
+	/** 
+	 * 操作员的类型:
+&#1048698;
+0:支付宝操作员
+&#1048698;
+1:商户的操作员
+如果传入其它值或者为空,则默认设置为1。
+	 **/
+	private $operatorType;
+	
+	/** 
+	 * 支付宝合作商户网站唯一订单号。
+	 **/
+	private $outTradeNo;
+	
+	/** 
+	 * 订单中商品的单价。
+如果请求时传入本参数,则必须满足total_fee=price×quantity的条件。
+	 **/
+	private $price;
+	
+	/** 
+	 * 订单中商品的数量。
+如果请求时传入本参数,则必须满足total_fee=price×quantity的条件。
+	 **/
+	private $quantity;
+	
+	/** 
+	 * 业务关联ID集合,用于放置商户的订单号、支付流水号等信息,json格式,具体请参见“4.6 业务关联ID集合说明”。
+	 **/
+	private $refIds;
+	
+	/** 
+	 * 描述分账明细信息,json格式,具体请参见“4.4 分账明细说明”。
+	 **/
+	private $royaltyParameters;
+	
+	/** 
+	 * 卖家的分账类型,目前只支持传入ROYALTY(普通分账类型)。
+	 **/
+	private $royaltyType;
+	
+	/** 
+	 * 卖家支付宝账号,可以为email或者手机号。
+如果seller_id不为空,则以seller_id的值作为卖家账号,忽略本参数。
+	 **/
+	private $sellerEmail;
+	
+	/** 
+	 * 卖家支付宝账号对应的支付宝唯一用户号。
+以2088开头的纯16位数字。
+如果和seller_email同时为空,则本参数默认填充partner的值。
+	 **/
+	private $sellerId;
+	
+	/** 
+	 * 收银台页面上,商品展示的超链接。
+	 **/
+	private $showUrl;
+	
+	/** 
+	 * 商品的标题/交易标题/订单标题/订单关键字等。
+该参数最长为128个汉字。
+	 **/
+	private $subject;
+	
+	/** 
+	 * 该笔订单的资金总额,取值范围[0.01,100000000],精确到小数点后2位。
+	 **/
+	private $totalFee;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setAlipayCaRequest($alipayCaRequest)
+	{
+		$this->alipayCaRequest = $alipayCaRequest;
+		$this->apiParas["alipay_ca_request"] = $alipayCaRequest;
+	}
+
+	public function getAlipayCaRequest()
+	{
+		return $this->alipayCaRequest;
+	}
+
+	public function setBody($body)
+	{
+		$this->body = $body;
+		$this->apiParas["body"] = $body;
+	}
+
+	public function getBody()
+	{
+		return $this->body;
+	}
+
+	public function setBuyerEmail($buyerEmail)
+	{
+		$this->buyerEmail = $buyerEmail;
+		$this->apiParas["buyer_email"] = $buyerEmail;
+	}
+
+	public function getBuyerEmail()
+	{
+		return $this->buyerEmail;
+	}
+
+	public function setBuyerId($buyerId)
+	{
+		$this->buyerId = $buyerId;
+		$this->apiParas["buyer_id"] = $buyerId;
+	}
+
+	public function getBuyerId()
+	{
+		return $this->buyerId;
+	}
+
+	public function setChannelParameters($channelParameters)
+	{
+		$this->channelParameters = $channelParameters;
+		$this->apiParas["channel_parameters"] = $channelParameters;
+	}
+
+	public function getChannelParameters()
+	{
+		return $this->channelParameters;
+	}
+
+	public function setCurrency($currency)
+	{
+		$this->currency = $currency;
+		$this->apiParas["currency"] = $currency;
+	}
+
+	public function getCurrency()
+	{
+		return $this->currency;
+	}
+
+	public function setDynamicId($dynamicId)
+	{
+		$this->dynamicId = $dynamicId;
+		$this->apiParas["dynamic_id"] = $dynamicId;
+	}
+
+	public function getDynamicId()
+	{
+		return $this->dynamicId;
+	}
+
+	public function setDynamicIdType($dynamicIdType)
+	{
+		$this->dynamicIdType = $dynamicIdType;
+		$this->apiParas["dynamic_id_type"] = $dynamicIdType;
+	}
+
+	public function getDynamicIdType()
+	{
+		return $this->dynamicIdType;
+	}
+
+	public function setExtendParams($extendParams)
+	{
+		$this->extendParams = $extendParams;
+		$this->apiParas["extend_params"] = $extendParams;
+	}
+
+	public function getExtendParams()
+	{
+		return $this->extendParams;
+	}
+
+	public function setFormatType($formatType)
+	{
+		$this->formatType = $formatType;
+		$this->apiParas["format_type"] = $formatType;
+	}
+
+	public function getFormatType()
+	{
+		return $this->formatType;
+	}
+
+	public function setGoodsDetail($goodsDetail)
+	{
+		$this->goodsDetail = $goodsDetail;
+		$this->apiParas["goods_detail"] = $goodsDetail;
+	}
+
+	public function getGoodsDetail()
+	{
+		return $this->goodsDetail;
+	}
+
+	public function setItBPay($itBPay)
+	{
+		$this->itBPay = $itBPay;
+		$this->apiParas["it_b_pay"] = $itBPay;
+	}
+
+	public function getItBPay()
+	{
+		return $this->itBPay;
+	}
+
+	public function setMcardParameters($mcardParameters)
+	{
+		$this->mcardParameters = $mcardParameters;
+		$this->apiParas["mcard_parameters"] = $mcardParameters;
+	}
+
+	public function getMcardParameters()
+	{
+		return $this->mcardParameters;
+	}
+
+	public function setOperatorId($operatorId)
+	{
+		$this->operatorId = $operatorId;
+		$this->apiParas["operator_id"] = $operatorId;
+	}
+
+	public function getOperatorId()
+	{
+		return $this->operatorId;
+	}
+
+	public function setOperatorType($operatorType)
+	{
+		$this->operatorType = $operatorType;
+		$this->apiParas["operator_type"] = $operatorType;
+	}
+
+	public function getOperatorType()
+	{
+		return $this->operatorType;
+	}
+
+	public function setOutTradeNo($outTradeNo)
+	{
+		$this->outTradeNo = $outTradeNo;
+		$this->apiParas["out_trade_no"] = $outTradeNo;
+	}
+
+	public function getOutTradeNo()
+	{
+		return $this->outTradeNo;
+	}
+
+	public function setPrice($price)
+	{
+		$this->price = $price;
+		$this->apiParas["price"] = $price;
+	}
+
+	public function getPrice()
+	{
+		return $this->price;
+	}
+
+	public function setQuantity($quantity)
+	{
+		$this->quantity = $quantity;
+		$this->apiParas["quantity"] = $quantity;
+	}
+
+	public function getQuantity()
+	{
+		return $this->quantity;
+	}
+
+	public function setRefIds($refIds)
+	{
+		$this->refIds = $refIds;
+		$this->apiParas["ref_ids"] = $refIds;
+	}
+
+	public function getRefIds()
+	{
+		return $this->refIds;
+	}
+
+	public function setRoyaltyParameters($royaltyParameters)
+	{
+		$this->royaltyParameters = $royaltyParameters;
+		$this->apiParas["royalty_parameters"] = $royaltyParameters;
+	}
+
+	public function getRoyaltyParameters()
+	{
+		return $this->royaltyParameters;
+	}
+
+	public function setRoyaltyType($royaltyType)
+	{
+		$this->royaltyType = $royaltyType;
+		$this->apiParas["royalty_type"] = $royaltyType;
+	}
+
+	public function getRoyaltyType()
+	{
+		return $this->royaltyType;
+	}
+
+	public function setSellerEmail($sellerEmail)
+	{
+		$this->sellerEmail = $sellerEmail;
+		$this->apiParas["seller_email"] = $sellerEmail;
+	}
+
+	public function getSellerEmail()
+	{
+		return $this->sellerEmail;
+	}
+
+	public function setSellerId($sellerId)
+	{
+		$this->sellerId = $sellerId;
+		$this->apiParas["seller_id"] = $sellerId;
+	}
+
+	public function getSellerId()
+	{
+		return $this->sellerId;
+	}
+
+	public function setShowUrl($showUrl)
+	{
+		$this->showUrl = $showUrl;
+		$this->apiParas["show_url"] = $showUrl;
+	}
+
+	public function getShowUrl()
+	{
+		return $this->showUrl;
+	}
+
+	public function setSubject($subject)
+	{
+		$this->subject = $subject;
+		$this->apiParas["subject"] = $subject;
+	}
+
+	public function getSubject()
+	{
+		return $this->subject;
+	}
+
+	public function setTotalFee($totalFee)
+	{
+		$this->totalFee = $totalFee;
+		$this->apiParas["total_fee"] = $totalFee;
+	}
+
+	public function getTotalFee()
+	{
+		return $this->totalFee;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.acquire.createandpay";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 402 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAcquirePrecreateRequest.php

@@ -0,0 +1,402 @@
+<?php
+/**
+ * ALIPAY API: alipay.acquire.precreate request
+ *
+ * @author auto create
+ * @since 1.0, 2018-05-22 11:49:56
+ */
+class AlipayAcquirePrecreateRequest
+{
+	/** 
+	 * 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body
+	 **/
+	private $body;
+	
+	/** 
+	 * 描述多渠道收单的渠道明细信息,json格式
+	 **/
+	private $channelParameters;
+	
+	/** 
+	 * 订单金额币种。目前只支持传入156(人民币)。
+如果为空,则默认设置为156
+	 **/
+	private $currency;
+	
+	/** 
+	 * 公用业务扩展信息。用于商户的特定业务信息的传递,只有商户与支付宝约定了传递此参数且约定了参数含义,此参数才有效。
+比如可传递二维码支付场景下的门店ID等信息,以json格式传输。
+	 **/
+	private $extendParams;
+	
+	/** 
+	 * 描述商品明细信息,json格式。
+	 **/
+	private $goodsDetail;
+	
+	/** 
+	 * 订单支付超时时间。设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。
+取值范围:1m~15d。
+m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。
+该参数数值不接受小数点,如1.5h,可转换为90m。
+该功能需要联系支付宝配置关闭时间。
+	 **/
+	private $itBPay;
+	
+	/** 
+	 * 操作员的类型:
+0:支付宝操作员
+1:商户的操作员
+如果传入其它值或者为空,则默认设置为1
+	 **/
+	private $operatorCode;
+	
+	/** 
+	 * 卖家的操作员ID
+	 **/
+	private $operatorId;
+	
+	/** 
+	 * 支付宝合作商户网站唯一订单号
+	 **/
+	private $outTradeNo;
+	
+	/** 
+	 * 订单中商品的单价。
+如果请求时传入本参数,则必须满足total_fee=price×quantity的条件
+	 **/
+	private $price;
+	
+	/** 
+	 * 订单中商品的数量。
+如果请求时传入本参数,则必须满足total_fee=price×quantity的条件
+	 **/
+	private $quantity;
+	
+	/** 
+	 * 分账信息。
+描述分账明细信息,json格式
+	 **/
+	private $royaltyParameters;
+	
+	/** 
+	 * 分账类型。卖家的分账类型,目前只支持传入ROYALTY(普通分账类型)
+	 **/
+	private $royaltyType;
+	
+	/** 
+	 * 卖家支付宝账号,可以为email或者手机号。如果seller_id不为空,则以seller_id的值作为卖家账号,忽略本参数
+	 **/
+	private $sellerEmail;
+	
+	/** 
+	 * 卖家支付宝账号对应的支付宝唯一用户号,以2088开头的纯16位数字。如果和seller_email同时为空,则本参数默认填充partner的值
+	 **/
+	private $sellerId;
+	
+	/** 
+	 * 收银台页面上,商品展示的超链接
+	 **/
+	private $showUrl;
+	
+	/** 
+	 * 商品购买
+	 **/
+	private $subject;
+	
+	/** 
+	 * 订单金额。该笔订单的资金总额,取值范围[0.01,100000000],精确到小数点后2位。
+	 **/
+	private $totalFee;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBody($body)
+	{
+		$this->body = $body;
+		$this->apiParas["body"] = $body;
+	}
+
+	public function getBody()
+	{
+		return $this->body;
+	}
+
+	public function setChannelParameters($channelParameters)
+	{
+		$this->channelParameters = $channelParameters;
+		$this->apiParas["channel_parameters"] = $channelParameters;
+	}
+
+	public function getChannelParameters()
+	{
+		return $this->channelParameters;
+	}
+
+	public function setCurrency($currency)
+	{
+		$this->currency = $currency;
+		$this->apiParas["currency"] = $currency;
+	}
+
+	public function getCurrency()
+	{
+		return $this->currency;
+	}
+
+	public function setExtendParams($extendParams)
+	{
+		$this->extendParams = $extendParams;
+		$this->apiParas["extend_params"] = $extendParams;
+	}
+
+	public function getExtendParams()
+	{
+		return $this->extendParams;
+	}
+
+	public function setGoodsDetail($goodsDetail)
+	{
+		$this->goodsDetail = $goodsDetail;
+		$this->apiParas["goods_detail"] = $goodsDetail;
+	}
+
+	public function getGoodsDetail()
+	{
+		return $this->goodsDetail;
+	}
+
+	public function setItBPay($itBPay)
+	{
+		$this->itBPay = $itBPay;
+		$this->apiParas["it_b_pay"] = $itBPay;
+	}
+
+	public function getItBPay()
+	{
+		return $this->itBPay;
+	}
+
+	public function setOperatorCode($operatorCode)
+	{
+		$this->operatorCode = $operatorCode;
+		$this->apiParas["operator_code"] = $operatorCode;
+	}
+
+	public function getOperatorCode()
+	{
+		return $this->operatorCode;
+	}
+
+	public function setOperatorId($operatorId)
+	{
+		$this->operatorId = $operatorId;
+		$this->apiParas["operator_id"] = $operatorId;
+	}
+
+	public function getOperatorId()
+	{
+		return $this->operatorId;
+	}
+
+	public function setOutTradeNo($outTradeNo)
+	{
+		$this->outTradeNo = $outTradeNo;
+		$this->apiParas["out_trade_no"] = $outTradeNo;
+	}
+
+	public function getOutTradeNo()
+	{
+		return $this->outTradeNo;
+	}
+
+	public function setPrice($price)
+	{
+		$this->price = $price;
+		$this->apiParas["price"] = $price;
+	}
+
+	public function getPrice()
+	{
+		return $this->price;
+	}
+
+	public function setQuantity($quantity)
+	{
+		$this->quantity = $quantity;
+		$this->apiParas["quantity"] = $quantity;
+	}
+
+	public function getQuantity()
+	{
+		return $this->quantity;
+	}
+
+	public function setRoyaltyParameters($royaltyParameters)
+	{
+		$this->royaltyParameters = $royaltyParameters;
+		$this->apiParas["royalty_parameters"] = $royaltyParameters;
+	}
+
+	public function getRoyaltyParameters()
+	{
+		return $this->royaltyParameters;
+	}
+
+	public function setRoyaltyType($royaltyType)
+	{
+		$this->royaltyType = $royaltyType;
+		$this->apiParas["royalty_type"] = $royaltyType;
+	}
+
+	public function getRoyaltyType()
+	{
+		return $this->royaltyType;
+	}
+
+	public function setSellerEmail($sellerEmail)
+	{
+		$this->sellerEmail = $sellerEmail;
+		$this->apiParas["seller_email"] = $sellerEmail;
+	}
+
+	public function getSellerEmail()
+	{
+		return $this->sellerEmail;
+	}
+
+	public function setSellerId($sellerId)
+	{
+		$this->sellerId = $sellerId;
+		$this->apiParas["seller_id"] = $sellerId;
+	}
+
+	public function getSellerId()
+	{
+		return $this->sellerId;
+	}
+
+	public function setShowUrl($showUrl)
+	{
+		$this->showUrl = $showUrl;
+		$this->apiParas["show_url"] = $showUrl;
+	}
+
+	public function getShowUrl()
+	{
+		return $this->showUrl;
+	}
+
+	public function setSubject($subject)
+	{
+		$this->subject = $subject;
+		$this->apiParas["subject"] = $subject;
+	}
+
+	public function getSubject()
+	{
+		return $this->subject;
+	}
+
+	public function setTotalFee($totalFee)
+	{
+		$this->totalFee = $totalFee;
+		$this->apiParas["total_fee"] = $totalFee;
+	}
+
+	public function getTotalFee()
+	{
+		return $this->totalFee;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.acquire.precreate";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 136 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAcquireQueryRequest.php

@@ -0,0 +1,136 @@
+<?php
+/**
+ * ALIPAY API: alipay.acquire.query request
+ *
+ * @author auto create
+ * @since 1.0, 2018-04-18 17:54:57
+ */
+class AlipayAcquireQueryRequest
+{
+	/** 
+	 * 支付宝合作商户网站唯一订单号
+	 **/
+	private $outTradeNo;
+	
+	/** 
+	 * 该交易在支付宝系统中的交易流水号。
+最短16位,最长64位。
+如果同时传了out_trade_no和trade_no,则以trade_no为准。
+	 **/
+	private $tradeNo;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setOutTradeNo($outTradeNo)
+	{
+		$this->outTradeNo = $outTradeNo;
+		$this->apiParas["out_trade_no"] = $outTradeNo;
+	}
+
+	public function getOutTradeNo()
+	{
+		return $this->outTradeNo;
+	}
+
+	public function setTradeNo($tradeNo)
+	{
+		$this->tradeNo = $tradeNo;
+		$this->apiParas["trade_no"] = $tradeNo;
+	}
+
+	public function getTradeNo()
+	{
+		return $this->tradeNo;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.acquire.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 236 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAcquireRefundRequest.php

@@ -0,0 +1,236 @@
+<?php
+/**
+ * ALIPAY API: alipay.acquire.refund request
+ *
+ * @author auto create
+ * @since 1.0, 2014-06-12 17:17:03
+ */
+class AlipayAcquireRefundRequest
+{
+	/** 
+	 * 卖家的操作员ID。
+	 **/
+	private $operatorId;
+	
+	/** 
+	 * 操作员的类型:
+0:支付宝操作员
+1:商户的操作员
+如果传入其它值或者为空,则默认设置为1。
+	 **/
+	private $operatorType;
+	
+	/** 
+	 * 商户退款请求单号,用以标识本次交易的退款请求。
+如果不传入本参数,则以out_trade_no填充本参数的值。同时,认为本次请求为全额退款,要求退款金额和交易支付金额一致。
+	 **/
+	private $outRequestNo;
+	
+	/** 
+	 * 商户网站唯一订单号
+	 **/
+	private $outTradeNo;
+	
+	/** 
+	 * 业务关联ID集合,用于放置商户的退款单号、退款流水号等信息,json格式
+	 **/
+	private $refIds;
+	
+	/** 
+	 * 退款金额;退款金额不能大于订单金额,全额退款必须与订单金额一致。
+	 **/
+	private $refundAmount;
+	
+	/** 
+	 * 退款原因说明。
+	 **/
+	private $refundReason;
+	
+	/** 
+	 * 该交易在支付宝系统中的交易流水号。
+最短16位,最长64位。
+如果同时传了out_trade_no和trade_no,则以trade_no为准
+	 **/
+	private $tradeNo;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setOperatorId($operatorId)
+	{
+		$this->operatorId = $operatorId;
+		$this->apiParas["operator_id"] = $operatorId;
+	}
+
+	public function getOperatorId()
+	{
+		return $this->operatorId;
+	}
+
+	public function setOperatorType($operatorType)
+	{
+		$this->operatorType = $operatorType;
+		$this->apiParas["operator_type"] = $operatorType;
+	}
+
+	public function getOperatorType()
+	{
+		return $this->operatorType;
+	}
+
+	public function setOutRequestNo($outRequestNo)
+	{
+		$this->outRequestNo = $outRequestNo;
+		$this->apiParas["out_request_no"] = $outRequestNo;
+	}
+
+	public function getOutRequestNo()
+	{
+		return $this->outRequestNo;
+	}
+
+	public function setOutTradeNo($outTradeNo)
+	{
+		$this->outTradeNo = $outTradeNo;
+		$this->apiParas["out_trade_no"] = $outTradeNo;
+	}
+
+	public function getOutTradeNo()
+	{
+		return $this->outTradeNo;
+	}
+
+	public function setRefIds($refIds)
+	{
+		$this->refIds = $refIds;
+		$this->apiParas["ref_ids"] = $refIds;
+	}
+
+	public function getRefIds()
+	{
+		return $this->refIds;
+	}
+
+	public function setRefundAmount($refundAmount)
+	{
+		$this->refundAmount = $refundAmount;
+		$this->apiParas["refund_amount"] = $refundAmount;
+	}
+
+	public function getRefundAmount()
+	{
+		return $this->refundAmount;
+	}
+
+	public function setRefundReason($refundReason)
+	{
+		$this->refundReason = $refundReason;
+		$this->apiParas["refund_reason"] = $refundReason;
+	}
+
+	public function getRefundReason()
+	{
+		return $this->refundReason;
+	}
+
+	public function setTradeNo($tradeNo)
+	{
+		$this->tradeNo = $tradeNo;
+		$this->apiParas["trade_no"] = $tradeNo;
+	}
+
+	public function getTradeNo()
+	{
+		return $this->tradeNo;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.acquire.refund";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAppTokenGetRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.app.token.get request
+ *
+ * @author auto create
+ * @since 1.0, 2017-04-13 19:13:06
+ */
+class AlipayAppTokenGetRequest
+{
+	/** 
+	 * 应用安全码
+	 **/
+	private $secret;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setSecret($secret)
+	{
+		$this->secret = $secret;
+		$this->apiParas["secret"] = $secret;
+	}
+
+	public function getSecret()
+	{
+		return $this->secret;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.app.token.get";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 103 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAssetPointBalanceQueryRequest.php

@@ -0,0 +1,103 @@
+<?php
+/**
+ * ALIPAY API: alipay.asset.point.balance.query request
+ *
+ * @author auto create
+ * @since 1.0, 2017-04-14 19:00:47
+ */
+class AlipayAssetPointBalanceQueryRequest
+{
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function getApiMethodName()
+	{
+		return "alipay.asset.point.balance.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 103 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAssetPointBudgetQueryRequest.php

@@ -0,0 +1,103 @@
+<?php
+/**
+ * ALIPAY API: alipay.asset.point.budget.query request
+ *
+ * @author auto create
+ * @since 1.0, 2017-04-14 18:58:03
+ */
+class AlipayAssetPointBudgetQueryRequest
+{
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function getApiMethodName()
+	{
+		return "alipay.asset.point.budget.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAssetPointOrderCreateRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.asset.point.order.create request
+ *
+ * @author auto create
+ * @since 1.0, 2017-04-14 18:53:05
+ */
+class AlipayAssetPointOrderCreateRequest
+{
+	/** 
+	 * 商户在采购完集分宝后可以通过此接口发放集分宝
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.asset.point.order.create";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayAssetPointOrderQueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.asset.point.order.query request
+ *
+ * @author auto create
+ * @since 1.0, 2017-04-14 19:02:42
+ */
+class AlipayAssetPointOrderQueryRequest
+{
+	/** 
+	 * 商户在调用集分宝发放接口后可以通过此接口查询发放情况
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.asset.point.order.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayBossCsChannelQueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.boss.cs.channel.query request
+ *
+ * @author auto create
+ * @since 1.0, 2016-02-23 20:04:44
+ */
+class AlipayBossCsChannelQueryRequest
+{
+	/** 
+	 * 云客服热线数据查询,云客服会有很多外部客服,他们需要查询落地在站内的自己公司的服务数据。
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.boss.cs.channel.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 103 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayBossFncXwbtestRetModifyRequest.php

@@ -0,0 +1,103 @@
+<?php
+/**
+ * ALIPAY API: alipay.boss.fnc.xwbtest.ret.modify request
+ *
+ * @author auto create
+ * @since 1.0, 2017-11-17 11:35:26
+ */
+class AlipayBossFncXwbtestRetModifyRequest
+{
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function getApiMethodName()
+	{
+		return "alipay.boss.fnc.xwbtest.ret.modify";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayBossProdArrangementOfflineQueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.boss.prod.arrangement.offline.query request
+ *
+ * @author auto create
+ * @since 1.0, 2017-04-14 21:06:47
+ */
+class AlipayBossProdArrangementOfflineQueryRequest
+{
+	/** 
+	 * 签约销售方案的主站产品码,目前只支持ONLINE_TRADE_PAY(在线购买签约)和FACE_TO_FACE_PAYMENT(当面付)两个常量值,不允许传入其他值,否则报SYSTEM_ERROR异常。不传值时,默认查询FACE_TO_FACE_PAYM(当面付产品)。
+	 **/
+	private $productCode;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setProductCode($productCode)
+	{
+		$this->productCode = $productCode;
+		$this->apiParas["product_code"] = $productCode;
+	}
+
+	public function getProductCode()
+	{
+		return $this->productCode;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.boss.prod.arrangement.offline.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceAirXfgDsgModifyRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.air.xfg.dsg.modify request
+ *
+ * @author auto create
+ * @since 1.0, 2018-01-18 15:28:48
+ */
+class AlipayCommerceAirXfgDsgModifyRequest
+{
+	/** 
+	 * 吃饭更好
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.air.xfg.dsg.modify";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 103 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorCityQueryRequest.php

@@ -0,0 +1,103 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.city.query request
+ *
+ * @author auto create
+ * @since 1.0, 2015-12-15 11:19:13
+ */
+class AlipayCommerceCityfacilitatorCityQueryRequest
+{
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.city.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorDepositCancelRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.deposit.cancel request
+ *
+ * @author auto create
+ * @since 1.0, 2015-12-18 21:35:58
+ */
+class AlipayCommerceCityfacilitatorDepositCancelRequest
+{
+	/** 
+	 * 合作渠道可通过该接口补登扣款取消请求,以帮助支付宝将用户的资金退给用户
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.deposit.cancel";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorDepositConfirmRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.deposit.confirm request
+ *
+ * @author auto create
+ * @since 1.0, 2015-12-18 21:36:24
+ */
+class AlipayCommerceCityfacilitatorDepositConfirmRequest
+{
+	/** 
+	 * 合作渠道可通过该接口补登单笔圈存确认扣款请求,以帮助支付宝将用户的资金结算给指定的渠道,不支持单笔拆分
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.deposit.confirm";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorDepositQueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.deposit.query request
+ *
+ * @author auto create
+ * @since 1.0, 2015-12-15 11:37:56
+ */
+class AlipayCommerceCityfacilitatorDepositQueryRequest
+{
+	/** 
+	 * 商户查询用户的充值转账记录
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.deposit.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorFunctionQueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.function.query request
+ *
+ * @author auto create
+ * @since 1.0, 2015-12-15 11:19:03
+ */
+class AlipayCommerceCityfacilitatorFunctionQueryRequest
+{
+	/** 
+	 * 基于设备和城市查询当前支持的功能
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.function.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorScriptQueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.script.query request
+ *
+ * @author auto create
+ * @since 1.0, 2015-12-09 16:24:55
+ */
+class AlipayCommerceCityfacilitatorScriptQueryRequest
+{
+	/** 
+	 * 查询城市一卡通的判卡、读卡脚本
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.script.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorStationQueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.station.query request
+ *
+ * @author auto create
+ * @since 1.0, 2016-08-03 16:10:49
+ */
+class AlipayCommerceCityfacilitatorStationQueryRequest
+{
+	/** 
+	 * 地铁购票站点查询
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.station.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherBatchqueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.voucher.batchquery request
+ *
+ * @author auto create
+ * @since 1.0, 2016-08-03 16:11:01
+ */
+class AlipayCommerceCityfacilitatorVoucherBatchqueryRequest
+{
+	/** 
+	 * 地铁购票订单批量查询
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.voucher.batchquery";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherCancelRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.voucher.cancel request
+ *
+ * @author auto create
+ * @since 1.0, 2017-06-21 15:07:46
+ */
+class AlipayCommerceCityfacilitatorVoucherCancelRequest
+{
+	/** 
+	 * 钱包中地铁票购票,获得核销码,线下渠道商凭核销码撤销该笔交易
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.voucher.cancel";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherConfirmRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.voucher.confirm request
+ *
+ * @author auto create
+ * @since 1.0, 2017-06-21 15:08:33
+ */
+class AlipayCommerceCityfacilitatorVoucherConfirmRequest
+{
+	/** 
+	 * 钱包中地铁票购票,获得核销码,线下地铁自助购票机上凭核销码取票,购票确认
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.voucher.confirm";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherGenerateRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.voucher.generate request
+ *
+ * @author auto create
+ * @since 1.0, 2016-08-03 16:10:34
+ */
+class AlipayCommerceCityfacilitatorVoucherGenerateRequest
+{
+	/** 
+	 * 地铁购票核销码发码
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.voucher.generate";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherQueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.voucher.query request
+ *
+ * @author auto create
+ * @since 1.0, 2017-06-21 15:04:33
+ */
+class AlipayCommerceCityfacilitatorVoucherQueryRequest
+{
+	/** 
+	 * 钱包中地铁票购票,获得核销码,线下地铁自助购票机上凭核销码取票,渠道商凭用户输入的核销码调接口查询核销码的有效性。
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.voucher.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherRefundRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.voucher.refund request
+ *
+ * @author auto create
+ * @since 1.0, 2016-08-03 16:10:56
+ */
+class AlipayCommerceCityfacilitatorVoucherRefundRequest
+{
+	/** 
+	 * 地铁购票发码退款
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.voucher.refund";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceCityfacilitatorVoucherUploadRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.cityfacilitator.voucher.upload request
+ *
+ * @author auto create
+ * @since 1.0, 2017-06-21 15:05:13
+ */
+class AlipayCommerceCityfacilitatorVoucherUploadRequest
+{
+	/** 
+	 * 钱包中地铁票购票,获得核销码,线下地铁自助购票机上凭核销码取票,票号上传接口
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.cityfacilitator.voucher.upload";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceDataMonitordataSyncRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.data.monitordata.sync request
+ *
+ * @author auto create
+ * @since 1.0, 2018-01-04 10:37:50
+ */
+class AlipayCommerceDataMonitordataSyncRequest
+{
+	/** 
+	 * 自助监控服务接口
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.data.monitordata.sync";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 103 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceEducateStudentinfoShareRequest.php

@@ -0,0 +1,103 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.educate.studentinfo.share request
+ *
+ * @author auto create
+ * @since 1.0, 2016-07-19 14:49:22
+ */
+class AlipayCommerceEducateStudentinfoShareRequest
+{
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.educate.studentinfo.share";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceIotDeviceserviceCancelRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.iot.deviceservice.cancel request
+ *
+ * @author auto create
+ * @since 1.0, 2017-11-24 15:20:44
+ */
+class AlipayCommerceIotDeviceserviceCancelRequest
+{
+	/** 
+	 * 撤销指定的设备服务
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.iot.deviceservice.cancel";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceLotteryPresentSendRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.lottery.present.send request
+ *
+ * @author auto create
+ * @since 1.0, 2018-03-30 14:30:00
+ */
+class AlipayCommerceLotteryPresentSendRequest
+{
+	/** 
+	 * 商家给用户赠送彩票,由亚博科技提供服务
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.lottery.present.send";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceLotteryPresentlistQueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.lottery.presentlist.query request
+ *
+ * @author auto create
+ * @since 1.0, 2018-03-30 15:00:00
+ */
+class AlipayCommerceLotteryPresentlistQueryRequest
+{
+	/** 
+	 * 查询调用者指定时间范围内的彩票赠送列表,由亚博科技提供服务
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.lottery.presentlist.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 103 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceLotteryTypelistQueryRequest.php

@@ -0,0 +1,103 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.lottery.typelist.query request
+ *
+ * @author auto create
+ * @since 1.0, 2018-03-30 15:10:00
+ */
+class AlipayCommerceLotteryTypelistQueryRequest
+{
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.lottery.typelist.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 103 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceTransportOfflinepayKeyQueryRequest.php

@@ -0,0 +1,103 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.transport.offlinepay.key.query request
+ *
+ * @author auto create
+ * @since 1.0, 2017-09-04 17:13:35
+ */
+class AlipayCommerceTransportOfflinepayKeyQueryRequest
+{
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.transport.offlinepay.key.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceTransportOfflinepayRecordVerifyRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.transport.offlinepay.record.verify request
+ *
+ * @author auto create
+ * @since 1.0, 2017-09-04 17:14:03
+ */
+class AlipayCommerceTransportOfflinepayRecordVerifyRequest
+{
+	/** 
+	 * 支付宝脱机操作信息验证
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.transport.offlinepay.record.verify";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayCommerceTransportOfflinepayUserblacklistQueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.commerce.transport.offlinepay.userblacklist.query request
+ *
+ * @author auto create
+ * @since 1.0, 2017-09-04 17:13:07
+ */
+class AlipayCommerceTransportOfflinepayUserblacklistQueryRequest
+{
+	/** 
+	 * 脱机交易黑名单列表
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.commerce.transport.offlinepay.userblacklist.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayDaoweiOrderCancelRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.daowei.order.cancel request
+ *
+ * @author auto create
+ * @since 1.0, 2018-03-23 13:21:44
+ */
+class AlipayDaoweiOrderCancelRequest
+{
+	/** 
+	 * 到位订单取消
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.daowei.order.cancel";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayDaoweiOrderConfirmRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.daowei.order.confirm request
+ *
+ * @author auto create
+ * @since 1.0, 2018-03-23 13:23:44
+ */
+class AlipayDaoweiOrderConfirmRequest
+{
+	/** 
+	 * 订单确认接口
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.daowei.order.confirm";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayDaoweiOrderModifyRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.daowei.order.modify request
+ *
+ * @author auto create
+ * @since 1.0, 2018-03-23 13:23:16
+ */
+class AlipayDaoweiOrderModifyRequest
+{
+	/** 
+	 * 服务订单修改接口
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.daowei.order.modify";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayDaoweiOrderQueryRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.daowei.order.query request
+ *
+ * @author auto create
+ * @since 1.0, 2018-03-23 13:23:59
+ */
+class AlipayDaoweiOrderQueryRequest
+{
+	/** 
+	 * 到位订单查询接口
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.daowei.order.query";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

+ 118 - 0
extend/AliPay/alipay-sdk/aop/request/AlipayDaoweiOrderRefundRequest.php

@@ -0,0 +1,118 @@
+<?php
+/**
+ * ALIPAY API: alipay.daowei.order.refund request
+ *
+ * @author auto create
+ * @since 1.0, 2018-03-23 13:22:08
+ */
+class AlipayDaoweiOrderRefundRequest
+{
+	/** 
+	 * 订单退款接口
+	 **/
+	private $bizContent;
+
+	private $apiParas = array();
+	private $terminalType;
+	private $terminalInfo;
+	private $prodCode;
+	private $apiVersion="1.0";
+	private $notifyUrl;
+	private $returnUrl;
+    private $needEncrypt=false;
+
+	
+	public function setBizContent($bizContent)
+	{
+		$this->bizContent = $bizContent;
+		$this->apiParas["biz_content"] = $bizContent;
+	}
+
+	public function getBizContent()
+	{
+		return $this->bizContent;
+	}
+
+	public function getApiMethodName()
+	{
+		return "alipay.daowei.order.refund";
+	}
+
+	public function setNotifyUrl($notifyUrl)
+	{
+		$this->notifyUrl=$notifyUrl;
+	}
+
+	public function getNotifyUrl()
+	{
+		return $this->notifyUrl;
+	}
+
+	public function setReturnUrl($returnUrl)
+	{
+		$this->returnUrl=$returnUrl;
+	}
+
+	public function getReturnUrl()
+	{
+		return $this->returnUrl;
+	}
+
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+
+	public function getTerminalType()
+	{
+		return $this->terminalType;
+	}
+
+	public function setTerminalType($terminalType)
+	{
+		$this->terminalType = $terminalType;
+	}
+
+	public function getTerminalInfo()
+	{
+		return $this->terminalInfo;
+	}
+
+	public function setTerminalInfo($terminalInfo)
+	{
+		$this->terminalInfo = $terminalInfo;
+	}
+
+	public function getProdCode()
+	{
+		return $this->prodCode;
+	}
+
+	public function setProdCode($prodCode)
+	{
+		$this->prodCode = $prodCode;
+	}
+
+	public function setApiVersion($apiVersion)
+	{
+		$this->apiVersion=$apiVersion;
+	}
+
+	public function getApiVersion()
+	{
+		return $this->apiVersion;
+	}
+
+  public function setNeedEncrypt($needEncrypt)
+  {
+
+     $this->needEncrypt=$needEncrypt;
+
+  }
+
+  public function getNeedEncrypt()
+  {
+    return $this->needEncrypt;
+  }
+
+}

部分文件因文件數量過多而無法顯示