CTCard.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace mapi;
  3. require_once(BASE_MAPI_PATH . '/api/ctcard/config.php');
  4. require_once(BASE_MAPI_PATH . '/api/ctcard/IOpenCard.php');
  5. class CTCard implements IOpenCard
  6. {
  7. private function head($method) : array
  8. {
  9. $guider = function (): string
  10. {
  11. $str = md5(uniqid(mt_rand(), true));
  12. $uuid = substr($str, 0, 8);
  13. $uuid .= substr($str, 8, 4);
  14. $uuid .= substr($str, 12, 4);
  15. $uuid .= substr($str, 16, 4);
  16. $uuid .= substr($str, 20, 12);
  17. return $uuid;
  18. };
  19. $make_sn = function () use ($guider){
  20. return config::SYS_CODE . config::APP_CODE . date("ymdhm", time()) . $guider();
  21. };
  22. $signer = function ($sn) {
  23. return md5("$sn" . config::KEY);
  24. };
  25. $sysCode = config::SYS_CODE;
  26. $appCode = config::APP_CODE;
  27. $transactionId = $make_sn();
  28. $reqTime = date("Y-m-d H:i:s", time());
  29. $sign = $signer($transactionId);
  30. return [
  31. "sysCode"=>$sysCode,
  32. "appCode"=>$appCode,
  33. "transactionId"=>$transactionId,
  34. "reqTime"=>$reqTime,
  35. "method"=>$method,
  36. "version"=>"1",
  37. "attach"=>"fraud_check",
  38. "sign"=>$sign
  39. ];
  40. }
  41. public function fraud_check($biz, &$net_errno = 0) : array
  42. {
  43. $params['head'] = $this->head("fraudCheck");
  44. $params['biz'] = $biz;
  45. $requestParameters = json_encode($params);
  46. $resp = http_post_data(config::production_env['DcoosExternalNetwork'], $requestParameters , config::HeaderProduction, $net_errno);
  47. if (empty($resp)) {
  48. return [false, '网络错误'];
  49. }
  50. else
  51. {
  52. $resp = json_decode($resp, true);
  53. if(empty($resp["biz"])){
  54. $err = $resp["head"]["err"];
  55. return [false, $err];
  56. }
  57. $code = $resp["biz"]["code"];
  58. $codeMessage = $resp["biz"]["codeMessage"];
  59. if ($code == 0){ // 成功
  60. return [true, $codeMessage];
  61. }else { // 失败
  62. return [false, $codeMessage];
  63. }
  64. }
  65. }
  66. public function number_list($biz, &$net_errno = 0) : array
  67. {
  68. $params['head'] = $this->head("qryNbrList");
  69. $params['biz'] = $biz;
  70. $requestParameters = json_encode($params);
  71. $resp = http_post_data(config::production_env['DcoosExternalNetwork'], $requestParameters , config::HeaderProduction, $net_errno);
  72. }
  73. public function address_delivery($biz, &$net_errno = 0) : array
  74. {
  75. $params['head'] = $this->head("qryReceiveAddr");
  76. $params['biz'] = $biz;
  77. $requestParameters = json_encode($params);
  78. $resp = http_post_data(config::production_env['DcoosExternalNetwork'], $requestParameters , config::HeaderProduction, $net_errno);
  79. if (empty($resp)) {
  80. return [false, '网络错误'];
  81. }
  82. else
  83. {
  84. $resp = json_decode($resp, true);
  85. $err = $resp["head"]["err"];
  86. if(empty($resp["biz"])){
  87. return [false, $err];
  88. }
  89. $code = $resp["head"]["code"];
  90. if ($code == 0){ // 成功
  91. $addrList = $resp["biz"]['addrList'];
  92. return [true, "成功", $addrList];
  93. }else { // 失败
  94. return [false, $err];
  95. }
  96. }
  97. }
  98. }