初始化代码

This commit is contained in:
2025-08-11 10:22:05 +08:00
commit ebd8d85201
4206 changed files with 753018 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
<?php
namespace app\common\yun;
class Base
{
public $paramMap = [];
public function __set($name, $value){
$this->$name = $value;
}
public function __get($name){
return $this->$name;
}
/**
* 添加paramMap数组成员
*/
public function addParam($key,$values,$ignoreSign =false){
$this->paramMap[$key] = $values;
}
/**
* 构造函数
* 初始化router和method
*/
public function __construct($router,$method = 'get')
{
$this->route = $router;
$this->method = $method;
}
/**
* 请求路由
* @var string
*/
protected $route = '';
/**
* 请求方式
* @var string
*/
protected $method = 'get';
/**
* 获取请求路由
* @return array
*/
public function getRoute()
{
return [$this->route, $this->method];
}
}

View File

@@ -0,0 +1,148 @@
<?php
namespace app\common\yun;
class Config
{
/**
* 商户ID由综合服务平台分配 云账户·综合服务平台获取
* @var string
*/
// public $dealer_id = '28607786';
public $dealer_id = '01331680';
/**
* 每个 request 的 id要求每次请求 id 不⼀样,会在 response 中原样返回
* @var string
*/
public $request_id = '';
/**
* 综合服务主体ID 云账户·综合服务平台获取
* @var string yiyun73
*/
// public $broker_id = '27532644';
public $broker_id = 'shuzijingjiv1';
/**
* 随机数,⽤于签名
* @var int
*/
public $mess = 0;
/**
* 时间戳,精确到秒
* @var int
*/
public $timestamp = 0;
/**
* 加密key 云账户·综合服务平台获取
* @var string
*/
// public $des3_key = '3z1A240t6LPkRob0neNRD6Xf';
public $des3_key = '22id13s5m35Kcn7HT3lyJf21';
/**
* 签名 云账户·综合服务平台获取
* @var string e5L4mz919meY9QGO970MCdeXuzTUOUy8
*/
// public $app_key = '3e15yS6co08Jhlt7bo3x96091D8HpQ50';
public $app_key = 'h55jR0250bEsj8s8UQ03VUFH6bC14mU0';
// public $private_key = '-----BEGIN PRIVATE KEY-----
// MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCFnFUaI9n1YYrN
// oBvdhhUstMe2XlbZgc5ocKu1W5q2yGY1eU/rU9mCHeRsGQc1wpLlenzIJlnDLxY0
// ZTnuGQhbmF8IPqM39RMUIqcjCSDDwG93gPb0SmP3BMw+V+TxJ1mH9E5t4VEUXkRI
// rGrM7OZux+mssgYNjI8cwGk/X/20h4EB4Uwf5ztNGg0ZFP3en2EU41r1nxX/WjXo
// H8mxwLxBzmDvaJISQMKqeCp+pTPh1X6VO/1v83+27cjxYorr5gAGM0Vz3V8DgbDJ
// G2bGxxjM3Uoikgu3TqSsuauQxUOGnhuGwFmxvfpZa1fsZqvwQk+au2Wek82SWC1a
// MCxectw7AgMBAAECggEAez/+BRIDUmb7armCWvP//nB5NhKKXTRv2kntK2voKSpt
// lnBkt7lukKfQeaMQ0pe9eDBogR1XekSqYATszmWLHytMpsdZOxo40j8xHJGkBs8y
// Q/PUWv9wfYKQggYEbCyXW2GTI6tQZtCafsuF7amu24xQU30ZNlBuB+C6dbqvx2JG
// 82RAWdiUOCTO6v/tInkvC60kKqPeUeCxZ3FrRzl8MQcgRIA6NeGOTDJ46pSkDMOf
// Rat430k/RjaM4YqiZNOLtIdtHK9BlSFL6Xq9ckP6iinpW7urOW2U78r/se9b6lEV
// 8I5luYFUT/Mgh/bt8abBHOcztHKbEfWggiQjqwb26QKBgQDlpPXOogMrw5RtYw46
// u/h3SN2BvRyo+D6mKj94sgY3jKi4EbHzm64f1xHPBDVT0MI+sB7vp3CvuBdYQ3k+
// 2sNg8jKtoBVHZxO3dvs1D1ihuK63QsI02wW4yh6zOC0LDwqA0GVnDwQuofQIXSqr
// Mo02xoCLB+dw+oKe6lpzQf6TbwKBgQCU8d2BKry5w2MVFLy0HAYJPkzLf1p6Lm3/
// pLpb6bORVkzaebdrqSfRknOCZu4nzXWPETRq9h7xP1oSJZG1utXUaXsAu9ETqsOZ
// xN73JxHK8Y7ssM/7w6P75g+fHaY959fUlVDbDLH87wevlgu7zM8hzJxQVPOhnBZE
// UgeBXM7t9QKBgE2Y1RpyckHaf5AK1acRFx8vdvG89i8+WuUJB5OADEu+8s/n4sqf
// Q1Is+S6LjH163/gQyRNP7+rgeLrxacnMYBKlJGy42Bfdg7MNuEqwmdFjt13jZ/42
// OBO98Gu8wrOm7HSkdm9Birc7MFuXJ7Dbjw4AOzU/gXwSmgqaw9+IYD5vAoGBAIwG
// 2xTtReJq04LlLQcy9WXJQU9rmncVoWpexqlUi/IOLVCUb6FytTGsupWVCT84RNZM
// +Xe5jZuG0LoQwe0VCqSYygAFkukneJ7e3DOFco/WC2VwUQhDhK50Oql/qWO3zExa
// WFqnk8nUOuiTatKTGQSQpUBMrYN5B+IRMGcpBo3lAoGBAIjslCSesOjtoCRlKW1/
// oXxmsF3QgkI9nRKcjyprn7ppoiO8eiEj1T/Zz22Nv0Z5LAXvwvgBoRJ9vGUwcPLL
// 6vCTsCkL2S5gZOjpqViyHRdN3ksrd+YM1qAZeJVTFIF4LEuZAdLPXctfcArUvR/Z
// GDsEwab8Vp+vk4+EjgBBdW+a
// -----END PRIVATE KEY-----';
public $private_key = '-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCdeQK9Q9oQsjj6
5BuRyY3reYvmvvPcXmGlMcOm9fPiEVMjZbcjSOw0vX3uGL80ILl/wQIhMWOn8UXW
LuckJ3PlzyoebNOnzHhrIIsUk+EK0lTIrXpGNp8DRlEwNbuzNZHNfJbB/VoP6raf
/UBobS1OwUEfU04sNCGQCrjInveA7vKYYdM9fKIBJlUlLGMUFGH4i+Pfs4zUgnnK
m8IwPxEr+1tbQjk3sLYek9RE3jFv4W9+KmTqO8NGqfVe+wJfp/7vyYa7yTjnyUlV
o0iCVULFMnpHlRNmiC36NbQjOVWuUM3ihDM94UvIE2c0UVxwGjThXKeNAEhsjfh+
8EeAVaLfAgMBAAECggEAG8diFVMn37Qg2xlsR55/m594b38V87Tukr6hng1bNXEK
8n6Z/O57RJ583YieCisPrhq1LnfQ9apZQHxLqBQRnOObsXxPJhWq1HMMNdgUZd1O
uYvouwQdru0zm0aPUwDLNK2axqPTxGUKTFTXjNRdnrv2qfj/HEsh9I//otxwGt1D
NJkoGe0JGXURkMNLWBkPq3w/R+ww3tRGJwYLEpdiWBgrAyM7673c44Ia1aVwgBXs
YqeL2zI/prwy1G/mB2iZ7bY/D4DiIM0YhhsrW8JS4bKmeMPFJyTfwJEZo8yEjPOW
z4ffM7On+WE0+yoIXlbO2qA3+bpwbxT42eCkm7KzkQKBgQD+kLFDBuOVyUfTmMbI
5zDLDtE8dEECDwvcIp2j59rNjPJFkvZPUcDlnPvz7BTlrROD64XJkVnoJLJxYceI
z3pStk5KvNdkWnNB2w7+u/90V/l7FCC+OhLYlvfS/fvRtSmNgYFLRZ2hQ/prKu3e
wTW6Y46UFXCVnUbMON5pY0mxtwKBgQCeXDmo7GoUu4e5uuEG+rmnr4QTXXborl1U
FtaXFUvzvUWlHCXvuPI20p28nOS0zDS4vatOEofCABGQ3MoEgZ3BV6izJ7ZAIbx6
xm1fNg5E2WGl/4XT7KmdzxsFayprj5IIQ8+sFM9xRkTouCqSEaucI8pXttaIGws1
xsz3/db4GQKBgHQNGJKa8GPXuAPx0SXDp83aem7Z/MzoeRqpOT6As5IjoEsxfVKZ
zZuf3ojL5pbyOURZucszlU4sdKEV13Y6R+SvMbAGuRcJ2SN7rzFYGVQ7ywNeILM4
HGFbKa2plgR7V28oS/45xWvAZsg2cOytHkZTnqtJvuKmKaFuh4558h2vAoGADlTU
VwhGNWgfSVyzPrl0EcvdjQ8ZUsds5M5IT1X7EKzhX6bjfAVlzjZTVh1wyTft0YZA
uYkNxi3RaSXCFpRQXY38U3JVmQo0j3vjrAktU2fE4Yv1ZY92bjSvAleHeEJ++caB
RdaAS4ULeXApUhzNRg0rI7MFST4BTrWWGR9c1AkCgYB/I99PDRGBaHYPFkiJQr1E
pI5xXCoG8Z7QyrVP9mI6WfXD4WiztQkvBM6YZW11i+sRzaLOHOgGiY+WKizlqp2F
8+ylyWKoA/qc6W0U+L+mFG//yR1KVplqQ96ecAxm6c44eaUtVZ3A+rtIZN/WpMBd
W2TPheXimNqd8Aqel7s3AA==
-----END PRIVATE KEY-----';
//云账户公钥
// public $public_key = '-----BEGIN PUBLIC KEY-----
// MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRfwmUa0gNsyLuXP2O75avpAyh
// mlhOajd6g98IbuptNX0waSGXZVBie/qIWyn3PFxaA/UPpRGrpqfduJdVfWZsP3iV
// tPW/vnN4PBxF/E4m4FfJwSSSmgF6seb31WQSBmtGANfeRnZccIubYxI75HPdP695
// O5FRUrCCb39z473lgQIDAQAB
// -----END PUBLIC KEY-----';
public $public_key = '-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJPUz5lOVOWNQj9qJMBTUPv/LH
eYJce9xVJU8twA1U59nMa9R4+JbHxfqGUqRIYUmeDGT4Ej8rGNgiqN5dszkJ2E5+
bncZp89sS+Vggc6cnIgXJ5mixwyVA5XRqRgpkbaoiApDAsSmu25MF47mxfKlgocM
th7p76ZK0NtlC15mhQIDAQAB
-----END PUBLIC KEY-----';
}

View File

@@ -0,0 +1,148 @@
<?php
namespace app\common\yun;
class Config
{
/**
* 商户ID由综合服务平台分配 云账户·综合服务平台获取
* @var string
*/
// public $dealer_id = '28607786';
public $dealer_id = '07849481';
/**
* 每个 request 的 id要求每次请求 id 不⼀样,会在 response 中原样返回
* @var string
*/
public $request_id = '';
/**
* 综合服务主体ID 云账户·综合服务平台获取
* @var string yiyun73
*/
// public $broker_id = '27532644';
public $broker_id = 'yiyun73';
/**
* 随机数,⽤于签名
* @var int
*/
public $mess = 0;
/**
* 时间戳,精确到秒
* @var int
*/
public $timestamp = 0;
/**
* 加密key 云账户·综合服务平台获取
* @var string
*/
// public $des3_key = '3z1A240t6LPkRob0neNRD6Xf';
public $des3_key = 'r2JE9nQd57RtjfN3232WL31K';
/**
* 签名 云账户·综合服务平台获取
* @var string e5L4mz919meY9QGO970MCdeXuzTUOUy8
*/
// public $app_key = '3e15yS6co08Jhlt7bo3x96091D8HpQ50';
public $app_key = 'W7L8ote1153B1M5fsExz34MSG1g69C55';
// public $private_key = '-----BEGIN PRIVATE KEY-----
// MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCFnFUaI9n1YYrN
// oBvdhhUstMe2XlbZgc5ocKu1W5q2yGY1eU/rU9mCHeRsGQc1wpLlenzIJlnDLxY0
// ZTnuGQhbmF8IPqM39RMUIqcjCSDDwG93gPb0SmP3BMw+V+TxJ1mH9E5t4VEUXkRI
// rGrM7OZux+mssgYNjI8cwGk/X/20h4EB4Uwf5ztNGg0ZFP3en2EU41r1nxX/WjXo
// H8mxwLxBzmDvaJISQMKqeCp+pTPh1X6VO/1v83+27cjxYorr5gAGM0Vz3V8DgbDJ
// G2bGxxjM3Uoikgu3TqSsuauQxUOGnhuGwFmxvfpZa1fsZqvwQk+au2Wek82SWC1a
// MCxectw7AgMBAAECggEAez/+BRIDUmb7armCWvP//nB5NhKKXTRv2kntK2voKSpt
// lnBkt7lukKfQeaMQ0pe9eDBogR1XekSqYATszmWLHytMpsdZOxo40j8xHJGkBs8y
// Q/PUWv9wfYKQggYEbCyXW2GTI6tQZtCafsuF7amu24xQU30ZNlBuB+C6dbqvx2JG
// 82RAWdiUOCTO6v/tInkvC60kKqPeUeCxZ3FrRzl8MQcgRIA6NeGOTDJ46pSkDMOf
// Rat430k/RjaM4YqiZNOLtIdtHK9BlSFL6Xq9ckP6iinpW7urOW2U78r/se9b6lEV
// 8I5luYFUT/Mgh/bt8abBHOcztHKbEfWggiQjqwb26QKBgQDlpPXOogMrw5RtYw46
// u/h3SN2BvRyo+D6mKj94sgY3jKi4EbHzm64f1xHPBDVT0MI+sB7vp3CvuBdYQ3k+
// 2sNg8jKtoBVHZxO3dvs1D1ihuK63QsI02wW4yh6zOC0LDwqA0GVnDwQuofQIXSqr
// Mo02xoCLB+dw+oKe6lpzQf6TbwKBgQCU8d2BKry5w2MVFLy0HAYJPkzLf1p6Lm3/
// pLpb6bORVkzaebdrqSfRknOCZu4nzXWPETRq9h7xP1oSJZG1utXUaXsAu9ETqsOZ
// xN73JxHK8Y7ssM/7w6P75g+fHaY959fUlVDbDLH87wevlgu7zM8hzJxQVPOhnBZE
// UgeBXM7t9QKBgE2Y1RpyckHaf5AK1acRFx8vdvG89i8+WuUJB5OADEu+8s/n4sqf
// Q1Is+S6LjH163/gQyRNP7+rgeLrxacnMYBKlJGy42Bfdg7MNuEqwmdFjt13jZ/42
// OBO98Gu8wrOm7HSkdm9Birc7MFuXJ7Dbjw4AOzU/gXwSmgqaw9+IYD5vAoGBAIwG
// 2xTtReJq04LlLQcy9WXJQU9rmncVoWpexqlUi/IOLVCUb6FytTGsupWVCT84RNZM
// +Xe5jZuG0LoQwe0VCqSYygAFkukneJ7e3DOFco/WC2VwUQhDhK50Oql/qWO3zExa
// WFqnk8nUOuiTatKTGQSQpUBMrYN5B+IRMGcpBo3lAoGBAIjslCSesOjtoCRlKW1/
// oXxmsF3QgkI9nRKcjyprn7ppoiO8eiEj1T/Zz22Nv0Z5LAXvwvgBoRJ9vGUwcPLL
// 6vCTsCkL2S5gZOjpqViyHRdN3ksrd+YM1qAZeJVTFIF4LEuZAdLPXctfcArUvR/Z
// GDsEwab8Vp+vk4+EjgBBdW+a
// -----END PRIVATE KEY-----';
public $private_key = '-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCfM17UTg1QsYuy
KKWLlwl5R2kHXMAX9AU+pY/JAIwjLyGxs8k/bgAj6dhsz8GmYt1DXlPdjUvo4PcB
kaUzNwf6R/LhRESfrIIplUZ8Q/Fmm26KkAnrTQ7AsACfIyvcOx7VgrG/FSsoZlEx
ywMHBwW9cAl7z4fK/cbC5FIFvrc40wZMTvlhcb2siw6UKq0rr9MuYGsiV9Fi1Yzt
/LrsFXIqybXdUJ3URTQn5qxOYXio8/lqlkBSWaItJOGcdmxqywd7Nsko2TsHwrbF
8B2t13FcdfN031DbgAOdMTh55ng1hELVQbv3WcRv9ItKEJv7IU8WrkneWKw4k1bL
bprU/ijHAgMBAAECggEBAJJfSPEqUlO+6hIEDTEqzSsU3RxHytY7JhdTYcANIMu4
qeIYyw/ms3pRpwtkeUfh3k3yjGlHYGPdcz2eC6XrEwqq3EUB35Zvpb1V4lien3UX
s6ryhCwzzTyclfW7ALicIt1sLMDjVarvZ/fAECiF7GEggZe0V8XrTrQh+MgPcaZr
6bJKuTU9uL8QakDYDKg09tJrgwruJS3Mudm3R0idk4mZKinPuuTQ0OzxGbXBw7Fa
AIyxSQbjWILoW3KQhXuDYvOouBejhDhTVPwemN+nOtvMiH3iBnz+lQtMRSZGjqjq
CkzbufYjVqjsVUk5DeE/K5xER6SKAH8jSSABkHfPQAECgYEA4w/08eb01GTWHYYr
8IskI65fkmUrWmmRwHpTo0RQwwl/0M7QbNoe1PxwVQOPP6uy4ve3/a7hYF5vHOb5
P66/TdnCyk6qZgjCkEBju31Gqk3BwtO9uaKe4cBxeBIl1JRnq7GVnTxomxVRBuRp
KrY4J95+6EwIkqz26VB5d3UekQECgYEAs31i9AmMn1XOmOI1VSplNwOYnYECYwF7
XvtnsdOpGhhDA1yQWYo16fzSWmPbFmA87tucxkZKCRagKKf6jrSqqTfnXrKjoirQ
PQY2ggKc5pXyKppswRmWsG9v4IwjY2THibf4xMoLWJ0bb4ExEKFwgg4+dJFJR93Y
wXxFjXI6cccCgYBFFqTcOf8C5U+1Gg8imOO9K6CO5dOkJf0gSNhMFExSnABVI6iN
hmzdN5Zid7vNjsvWfbNxMBYJgZJjg/ARLXWuFXVMo1T7yOySgdUWxk6LIS+0vUK8
Sjv3ytt7wmHaZfGJb3ZrqmbV0U2fQD6zrVA26V9KBWCSaKiUY1UiQPO1AQKBgDNJ
5gfD3sn88/8dzI2cgrWYsnh3T95Iox8+CaB30f9h5WxFe/4KD2PgWZ94nzcioubC
HGdP2IIGVBeqAF/c4lNeZR/bPgTt5Pk7GEJISttdB4kC/YakMDoUbcylXstdFeOV
jWF2No3Ivvk62nFdIFAZj+ExTtZZX0HSp/FGLcsrAoGBAIY76P3nL9A4eG4zQt76
RfKvrhGQJFb4pwp5pwUQQCcElYlsC4KqZodQz/1U9mf27xjEPds797/G1W6mXeph
lDD92CUXzu9DCaw3oVHtZY6YYlYnOFsDQgLY+cUcbrpQ8kfK8DdgAbx/a0MNq4Lf
yiYxYxtOA2UgJd0u4ZhFWEyy
-----END PRIVATE KEY-----';
//云账户公钥
// public $public_key = '-----BEGIN PUBLIC KEY-----
// MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRfwmUa0gNsyLuXP2O75avpAyh
// mlhOajd6g98IbuptNX0waSGXZVBie/qIWyn3PFxaA/UPpRGrpqfduJdVfWZsP3iV
// tPW/vnN4PBxF/E4m4FfJwSSSmgF6seb31WQSBmtGANfeRnZccIubYxI75HPdP695
// O5FRUrCCb39z473lgQIDAQAB
// -----END PUBLIC KEY-----';
public $public_key = '-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDvs+hxkCj9Va41YCsECsqL8qGv
hArBnqKcRaul22jO18CgPGS5RL3kyhqafGNguop9OTe3ueD3Mb7LxOQUDVCNc49J
kfOISDMAL8RCqYdRfSnx4C1zoTG5PITkuW56eL9CrQg6c1Cq9MAgZ6kpsqlYAcC6
No0D0C6S0XYvZneHaQIDAQAB
-----END PUBLIC KEY-----';
}

View File

@@ -0,0 +1,10 @@
<?php
namespace app\common\yun;
class Demo
{
}

View File

@@ -0,0 +1,104 @@
<?php
namespace app\common\yun;
class HttpRequest
{
private $url;
private $header = [];
private $output;
private $http_info;
private static $timeout = 30000;
private $curl_ch;
public function __construct($router)
{
$this->url = Router::getRouter($router, 'pro');
}
public function setTimeout($timeout = 30000)
{
static::$timeout = $timeout;
return $this;
}
public function setHeader(array $header = [])
{
$this->header = $header;
return $this;
}
public function addHeader(array $header = [])
{
$this->header = array_merge($this->header, $header);
return $this;
}
public function getBody()
{
return $this->output;
}
public function getBodyJson()
{
return json_decode($this->output, true);
}
public function getHttpInfo()
{
return $this->http_info;
}
private function curlInit()
{
$this->curl_ch = curl_init();
curl_setopt($this->curl_ch, CURLOPT_URL, $this->url);
if (substr($this->url, 0, 5) == 'https') {
curl_setopt($this->curl_ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($this->curl_ch, CURLOPT_SSL_VERIFYHOST, FALSE);
}
curl_setopt($this->curl_ch, CURLOPT_TIMEOUT, static::$timeout);
if ($this->header) {
curl_setopt($this->curl_ch, CURLOPT_HTTPHEADER, $this->header);
}
}
private function curlClose()
{
curl_close($this->curl_ch);
}
public function get(array $data)
{
$this->url .= '?'.http_build_query($data);
$this->curlInit();
curl_setopt($this->curl_ch, CURLOPT_HEADER, 0);
curl_setopt($this->curl_ch, CURLOPT_NOBODY, 0);
//只取body头
curl_setopt($this->curl_ch, CURLOPT_RETURNTRANSFER, 1);
$this->output = curl_exec($this->curl_ch);
$this->http_info = curl_getinfo($this->curl_ch);
$this->curlClose();
return $this;
}
public function post(array $data = [])
{
$this->curlInit();
curl_setopt($this->curl_ch, CURLOPT_POST, true);
curl_setopt($this->curl_ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($this->curl_ch, CURLOPT_RETURNTRANSFER, 1);
$this->output = curl_exec($this->curl_ch);
$this->http_info = curl_getinfo($this->curl_ch);
$this->curlClose();
return $this;
}
}

View File

@@ -0,0 +1,223 @@
<?php
namespace app\common\yun;
class Router
{
//个体工商注册接口serverroot
const AIC_SERVICE_URL = 'https://api-aic.yunzhanghu.com';
//其他接口serverroot
const SERVICE_URL = 'https://api-service.yunzhanghu.com';
//沙箱环境
const SAND_BOX_URL = 'https://api-service.yunzhanghu.com/sandbox';
//+----------------------------------
//| 打款接⼝
//+----------------------------------
//银行卡实时下单
const BANK_CARD = 'api/payment/v1/order-bankpay';
//支付宝实时下单
const ALI_PAY = 'api/payment/v1/order-alipay';
//微信实时下单
const WX_PAY = 'api/payment/v1/order-wxpay';
/**
* 订单查询
*/
const QUERY_REALTIME_ORDER = 'api/payment/v1/query-order';
/**
* 余额查询
*/
const QUERY_ACCOUNTS = 'api/payment/v1/query-accounts';
/**
* 电子回单
*/
const RECEIPT_FILE = 'api/payment/v1/receipt/file';
/**
* 取消待打款订单
*/
const ORDER_FAIL = 'api/payment/v1/order/fail';
/**
* 查询商户VA账户信息
*/
const VA_ACCOUNT = 'api/payment/v1/va-account';
//+----------------------------------
//| 数据接⼝
//+----------------------------------
/**
* 查询⽇订单⽂件
*/
const ORDER_DOWNLOAD = 'api/dataservice/v1/order/downloadurl';
/**
* 查询⽇流⽔⽂
*/
const BILL_DOWNLOAD = 'api/dataservice/v2/bill/downloadurl';
/**
* 查询商户充值记录
*/
const RECHARGE_RECORD = 'api/dataservice/v2/recharge-record';
/**
* 查询日订单数据
*/
const ORDER_RECORD = 'api/dataservice/v1/orders';
/**
* 查询⽇订单⽂件 (打款和退款订单)
*/
const ORDER_DAY = 'api/dataservice/v1/order/day/url';
/**
* 查询日流水数据
*/
const BILL_RECORD = 'api/dataservice/v1/bills';
/**
* 查询余额日账单数据
*/
const STATEMENT_DAY = 'api/dataservice/v1/statements-daily';
//+----------------------------------
//| ⽤户信息验证接⼝
//+----------------------------------
/**
* 银⾏卡四要素请求鉴权(下发短信验证码)
*/
const VERIFY_REQUEST = 'authentication/verify-request';
/**
* 银⾏卡四要素确认鉴权(上传短信验证码)
*/
const VERIFY_CONFIRM = 'authentication/verify-confirm';
/**
* 银⾏卡四要素验证
*/
const VERIFY_BANKCARD_FOUR_FACTOR = 'authentication/verify-bankcard-four-factor';
/**
* 银⾏卡三要素验证
*/
const VERIFY_BANKCARD_THREE_FACTOR = 'authentication/verify-bankcard-three-factor';
/**
* 身份证实名验证
*/
const VERIFY_ID = 'authentication/verify-id';
/**
* 上传用户免验证名单信息
*/
const WHITE_INFO_UPLOAD = 'api/payment/v1/user/exempted/info';
/**
* 查看⽤户⽩名单是否存在
*/
const USER_WHITE_CHECK = 'api/payment/v1/user/white/check';
/**
* 银行卡信息查询
*/
const BANK_INFO = 'api/payment/v1/card';
//+----------------------------------
//| 发票接⼝
//+----------------------------------
/**
* 查询商户已开具发票⾦额和待开具发票⾦额
*/
const INVOICE_STAT = 'api/payment/v1/invoice-stat';
/**
* 查询可开票额度
*/
const INVOICE_AMOUNT = 'api/invoice/v2/invoice-amount';
/**
* 开票申请
*/
const INVOICE_APPLY = 'api/invoice/v2/apply';
/**
* 查询开票申请状态
*/
const INVOICE_APPLY_STATUS = 'api/invoice/v2/invoice/invoice-status';
/**
* 下载发票PDF
*/
const INVOICE_PDF = 'api/invoice/v2/invoice/invoice-pdf';
/**
* 发送发票扫描件压缩包下载链接邮件
*/
const INVOICE_EMAIL = 'api/invoice/v2/invoice/reminder/email';
//+----------------------------------
//| 个税扣缴明细表下载接口
//+----------------------------------
/**
* 下载个税扣缴明细表
*/
const TAX_DOWNLOAD = 'api/tax/v1/taxfile/download';
/**
* 查询纳税人是否是跨集团用户
*/
const TAX_USER = 'api/tax/v1/user/cross';
//+----------------------------------
//| ⽤户签约接⼝
//+----------------------------------
/**
* 获取⽤户签约状态
*/
const SIGN_USER_STATUS = 'api/sdk/v1/sign/user/status';
/**
* H5预申请签约
*/
const SIGN_PRESIGN_H5 = 'api/sdk/v1/presign';
/**
* h5签约接口
*/
const SIGN_USER_H5 = 'api/sdk/v1/sign/h5';
/**
* h5测试解约
*/
const SIGN_RELEASE_H5= 'api/sdk/v1/sign/release';
//+----------------------------------
//| 个体工商注册(共享主体)
//+----------------------------------
/**
* ⼯商实名信息录⼊接⼝
*/
const AIC_REALNAME = 'api/yzh/aic/realname';
/**
* 预启动
*/
const AIC_H5URL = 'api/yzh/aic/h5url';
/**
* 查询个体工商户注册状态
*/
const AIC_STATUS = 'api/yzh/aic/status';
public static function getRouter( $route = '', $evn = 'pro')
{
if (strpos($route,'AIC') !== false)
return self::AIC_SERVICE_URL . '/' . $route;
else
return self::SERVICE_URL . '/' . $route;
// return self::SAND_BOX_URL . '/' . $route;
}
}

View File

@@ -0,0 +1,118 @@
<?php
namespace app\common\yun\service;
use app\common\yun\HttpRequest;
use app\common\yun\Config;
use app\common\yun\util\RsaUtil;
use app\common\yun\Base;
use think\facade\Log;
class BaseService
{
/**
* 相关参数
* @var Base
*/
public $data;
/**
* 相关配置
* @var Config
*/
protected $config;
/**
* 构造函数
*/
public function __construct(Config $config,Base $data)
{
$this->config = $config;
$this->data = $data;
}
/**
* 取数据并封装成数组
*/
protected function getDes3Data()
{
$data = [];
foreach ($this->data as $k => $v) {
if(is_array($v)){
foreach ($v as $key => $item) {
$data[$key] = $item;
}
}else {
$data[$k] = $v;
}
}
return $data;
}
/**
* 获取请求消息
*/
protected function getRequestInfo()
{
return $this->data->getRoute();
}
/**
* 获取头信息
*/
protected function getHeader()
{
// Log::write([
// $this->config->request_id,
// ],'yun_notify');
return [
'Content-Type: application/x-www-form-urlencoded',
"dealer-id: {$this->config->dealer_id}",
"request-id: {$this->config->request_id}",
];
}
/**
* 构造Request信息
*/
protected function getRequestData()
{
$desData = Des3Service::encode($this->getDes3Data(), $this->config->des3_key);
$signData = "data=".$desData."&mess=".$this->config->mess."&timestamp=".$this->config->timestamp."&key=".$this->config->app_key;
$rsa = new RsaUtil($this->config);
$sign = $rsa->sign($signData);
$postData = [];
$postData['data'] = $desData;
$postData['mess'] = $this->config->mess;
$postData['timestamp'] = $this->config->timestamp;
$postData['sign'] = $sign;
$postData['sign_type'] = 'rsa';
return $postData;
}
/**
* 发起请求
* @var(callback 异步回传地址,为空则不回传)
* 返回请求解密结果
*/
public function request($callback = null)
{
$requestData = $this->getRequestData();
$header = $this->getHeader();
$requestInfo = $this->getRequestInfo();
$method = $requestInfo[1] ==null?'get':$requestInfo[1];
$request = new HttpRequest($requestInfo[0]);
$result = $request
->setHeader($header)
->$method($requestData)
->getBodyJson();
//返回结果解密
if(isset($result['data']) && is_string($result['data'])){
$result['data'] = Des3Service::decode($result['data'], $this->config->des3_key);
}
return $result;
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace app\common\yun\service;
class Demo
{
}

View File

@@ -0,0 +1,25 @@
<?php
namespace app\common\yun\service;
use app\common\yun\util\DesUtil;
class Des3Service
{
/**
* 3DES加密方法
*/
public static function encode(array $data, $des3Key)
{
$DesUtil = new DesUtil($des3Key);
return $DesUtil->encrypt(json_encode($data, JSON_UNESCAPED_UNICODE));
}
/**
* 3DES解密方法
*/
public static function decode( $dec3Value, $des3Key)
{
$DesUtil = new DesUtil($des3Key);
return json_decode($DesUtil->decrypt($dec3Value), true);
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace app\common\yun\util;
class Demo
{
}

View File

@@ -0,0 +1,59 @@
<?php
namespace app\common\yun\util;
class DesUtil
{
/**
* 密钥向量
* @var string
*/
private $des3key;
/**
* 混淆向量
* @var string|null
*/
private $iv;
/**
* 构造传递⼆个已经进⾏base64_encode的KEY与IV
*
* @param string $des3key
* @param string $iv
*/
function __construct($des3key, $iv = null)
{
$this->des3key = $des3key;
$this->iv = $iv;
}
/**
* 加密
* @param <type> $value
* @return <type>
*/
public function encrypt($value)
{
$iv = substr($this->des3key, 0, 8);
$ret = openssl_encrypt($value, 'DES-EDE3-CBC', $this->des3key, 0, $iv);
if (false === $ret) {
return openssl_error_string();
}
return $ret;
}
/**
* 解密
* @param <type> $value
* @return <type>
*/
public function decrypt($value)
{
$iv = substr($this->des3key, 0, 8);
$ret = openssl_decrypt($value, 'DES-EDE3-CBC', $this->des3key, 0, $iv);
if (false === $ret) {
return openssl_error_string();
}
return $ret;
}
}

View File

@@ -0,0 +1,126 @@
<?php
namespace app\common\yun\util;
use app\common\yun\Config;
class RsaUtil
{
/**
* 相关配置
* @var Config
*/
protected $config;
/**
* 云账户公钥
* @var
*/
protected $public_key;
/**
* 商户私钥
* @var
*/
protected $private_key;
/**
* 初始化配置
* RsaService constructor.
* @param bool $type 默认私钥加密
*/
public function __construct(Config $config,$type = true)
{
$this->config = $config;
if ($type) {
$this->private_key = $this->getPrivateKey(); #商户私钥
$this->public_key = $this->getPublicKey(); #云账户公钥
}
}
/**
* 配置私钥
* openssl_pkey_get_private这个函数可用来判断私钥是否是可用的可用返回资源
* @return bool|resource
*/
private function getPrivateKey()
{
$privateKey = openssl_get_privatekey($this->config->private_key);
if(!$privateKey){
die('私钥不可用');
}
return $privateKey;
}
/**
* 配置公钥
* openssl_pkey_get_public这个函数可用来判断私钥是否是可用的可用返回资源
* @return resource
*/
public function getPublicKey()
{
$publicKey = openssl_pkey_get_public($this->config->public_key);
if(!$publicKey){
die('公钥不可用');
}
return $publicKey ;
}
/**
* 签名算法
* @access public
* @param $data
* @return string
*/
public function sign($data){
$res=openssl_get_privatekey($this->getPrivateKey());
if($res)
{
openssl_sign($data, $sign,$res,"SHA256");
openssl_free_key($res);
}else {
exit("私钥格式有误");
}
$sign = base64_encode($sign);
return $sign;
}
/**
* 验签
* @access public
* @param $data
* @return
*/
public function verify($response){
$signData = "data=".$response['data']."&mess=".$response['mess']."&timestamp=".$response['timestamp']."&key=".$this->config->app_key;
// echo $signData;die;
$result = (bool)openssl_verify( $signData, base64_decode($response['sign']), $this->public_key,"SHA256");
return $result;
}
/**
* 私钥解密
* @param $data
* @param bool $unserialize
* @return mixed
* @throws \Exception
*/
public function privateDecrypt($data, $unserialize = false)
{
openssl_private_decrypt(base64_decode($data),$decrypted, $this->private_key);
if ($decrypted === false) {
throw new \Exception('Could not decrypt the data.');
}
return $unserialize ? unserialize($decrypted) : $decrypted;
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace app\common\yun\util;
class StringUtil
{
public static function round($len = 6)
{
$str = 'a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9';
$arr = explode(' ', $str);
$rand_keys = array_rand($arr, $len);
shuffle($rand_keys);
$code = '';
foreach ($rand_keys as $index=>$key){
$code .= $arr[$key];
}
return $code;
}
}