AliPay.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace Ycpay;
  3. require_once dirname(__FILE__) . '/../AliPaySdk/aop/AopClient.php';
  4. require_once dirname(__FILE__) . '/../AliPaySdk/aop/AopCertClient.php';
  5. require_once dirname(__FILE__) . '/../AliPaySdk/aop/request/AlipayFundAccountQueryRequest.php';
  6. require_once dirname(__FILE__) . '/../AliPaySdk/aop/request/AlipayFundTransUniTransferRequest.php';
  7. require_once dirname(__FILE__) . '/../AliPaySdk/aop/request/AlipayTradeWapPayRequest.php';
  8. require_once dirname(__FILE__) . '/../AliPaySdk/aop/request/AlipayTradeAppPayRequest.php';
  9. require_once dirname(__FILE__) . '/../AliPaySdk/aop/request/AlipayTradeQueryRequest.php';
  10. class AliPay
  11. {
  12. private $aop;
  13. const GATE_WAY_URL = 'https://openapi.alipay.com/gateway.do';
  14. // 火猫小说
  15. const APPID = '2021003192638805';
  16. // 应用私钥
  17. const RSAPRIVATEKEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCN6hnKouUoNLvbHmzt4kPlLvxINERaVQ+Fk3COh4lW5ESpIczjLT1fHGEbab60+8Io0XeFkKhOWHVYXV4nzIoBw0d/Yeu/kLI79JeatP4uOZLxdi/LfgAozHajzvzwNBXn9vBPEBiW3+Uq2VsooWdMR6y7qseZXMcXKE3L3fEwGvdmraXlfdYM4bQKjw0S1I1ADQs3ltuzXYM+vK1+n7fI6BHqb6LEN6Uojdc1Vy2Iq74frDpEjRBdhxwB7VZC6cHlIxI6Eed3Nql04/oBtQqdm0b1ORLIr3xU6XS3ZI3E2hIJseIhSOuoAbzQ7LeQcpMraBi4GrG7sr6EH5Qd9RPPAgMBAAECggEAOly0Dqm/JDHLr+lrUslisrYH+onEMoIYyA5Ck9sZmCp4MjY8VJEeVCcPqH5sd3Gx/6dlSACdttqaJ6T+O8/aUa9FkBVtJnMTWaTVVEJq5ge3bqX0MfO3jQ/JGsTdMMu61pKvcVRlSGb7kAujeaonGS/A0c0CGQgWuGdS1yyHLAjL3eT/bRbgTHMwb3X9WBAvo7vgJMUTS/BpTqqpE/66c+Hub9RSFgYU+JtkoG2mXWTn50ExlztOW0NTzDZmghSvQEKv0uE5C4KpDESCBgNzkE+K5N4/DPt4Vg+VXhc4Vj1n05rQTx8hm8kA1IDWQlRjGINzh3mIfmSw4a9NlUlJAQKBgQDi2qakqgBdUUm5HpFmRea9txIXQEAXUfIJ+Um/fapU2b5nFuat9o8XOpGCXI/x9UPIx19qy8x4md1Lu6k2RiQibT2VNF1HO1x0OMt7FJcTqbwlUflo/UrKnfeDYNj/VdFcFxFLXRHs64dUNwrJ+CLLO62YZWQwJc/mFqNYc0gPvwKBgQCgJb2gey7tCYXsw1pPW6fn0ExzPPgpqVgfihp7u26tJg9HHV47wL0xxRnqqB//NphPzkweV5NT2He/Qf1uZr5Qxl9e4Or+yuaM7xFx/AjTR22AH6DjqneQfmlck+Yl0ub9q3p7eAFXYqMEjMwEg1Bp0WxsnVwodBlCSvxHLFH/8QKBgQDbgH/gMpJZuQ7hrX84+4gRp7M8hjG9ns/Y8Lp4LCsFIQ+IBnO8fibkbgpfnhq2HwCwpKFh38KAKzkiT3mih2ntWdBNr7ZV9001M8NH25t3LjRb1B7FhNi6hvD40VwGbE5Akh1s06hFm3x9cyjgVlWsWplVLT4tDFlGpD73lcxzVwKBgBIgc3hIuSUHYOtNqVk2LKkmgKDCk+xTSLA5N4otyvc6SZxpDJOC22dYwfg3k3eVvGO8HA2LKBfjdpplY8QtSPlnmr/ogXDZkoL9RGI8fts7SH+qFNHwJ5xpUo+yBejeGFs6H6D+EljLx1vqe+U+38k6dSVOInJJwdopFqkPsTBhAoGAOlioohZjaugeOz3ovdNCs2r2DwE7Ven5Y7aDPn1M0ca7HxAnbeTCyNotJbfkZe2aSrjysoD1HrLg8p8SEreoaNzNjum4LiL8zvZkhyBU+7NqbHRZP0UV6Dp9uiIxWQjRA9hh3MONnc3QgDpz0g7k0j+BcDemqqDKo86R2C9b96c=";
  18. // 应用公钥证书
  19. const APP_PUBLIC_CERT_PATH = "/cert/huomaoxiaoshuohui/appCertPublicKey_2021003192638805.crt";
  20. // 支付宝公钥证书
  21. const ALIPAY_PUBLIC_CERT_PATH = "/cert/huomaoxiaoshuohui/alipayCertPublicKey_RSA2.crt";
  22. // 支付宝根证书
  23. const ALIPAY_ROOT_CERT_PATH = "/cert/huomaoxiaoshuohui/alipayRootCert.crt";
  24. const SIGN_TYPE = 'RSA2';
  25. const FORMAT = 'json';
  26. const CHARST = "utf-8";
  27. private $rsaPublicKeyFilePath;
  28. private $pay_merchant_id;
  29. public function __construct($config=null)
  30. {
  31. $this->aop = new \AopCertClient;
  32. $this->aop->appId = self::APPID;
  33. $this->aop->signType = self::SIGN_TYPE;
  34. $this->aop->gatewayUrl = self::GATE_WAY_URL;
  35. $this->aop->format = self::FORMAT;
  36. $this->aop->charset = self::CHARST;
  37. $this->aop->isCheckAlipayPublicCert = true;
  38. $this->aop->rsaPrivateKey = self::RSAPRIVATEKEY;
  39. $this->aop->alipayrsaPublicKey = $this->aop->getPublicKey(dirname(__FILE__) . "/../cert/huomaoxiaoshuohui/alipayCertPublicKey_RSA2.crt");
  40. //证书序列号
  41. $this->aop->appCertSN = $this->aop->getCertSN(dirname(__FILE__) . "/../cert/huomaoxiaoshuohui/appCertPublicKey_2021003192638805.crt");
  42. //支付宝根证书序列号
  43. $this->aop->alipayRootCertSN = $this->aop->getRootCertSN(dirname(__FILE__) . "/../cert/huomaoxiaoshuohui/alipayRootCert.crt");
  44. // \Log::info('$this->aop->alipayRootCertSN');\Log::info(dirname(__FILE__) . "/../cert/huomaoxiaoshuohui/alipayRootCert.crt");
  45. }
  46. public function notify(array $data)
  47. {
  48. if (isset($data['sign']) && isset($data['trade_status']) && $data['trade_status'] == 'TRADE_SUCCESS') {
  49. return $this->aop->rsaCheckV1($data, $this->rsaPublicKeyFilePath, self::SIGN_TYPE);
  50. } else {
  51. return false;
  52. }
  53. }
  54. public function queryFundAccount()
  55. {
  56. /** 设置业务参数,具体接口参数传值以文档说明为准:https://opendocs.alipay.com/apis/api_28/alipay.fund.account.query **/
  57. $request = new \AlipayFundAccountQueryRequest;
  58. $request->setBizContent("{" .
  59. "\"alipay_user_id\":\"2088641232029876\"," .
  60. "\"account_type\":\"ACCTRANS_ACCOUNT\"" .
  61. "}");
  62. $result= $this->aop->execute($request);
  63. \Log::info('queryFundAccount:'.json_encode($result));
  64. return $result;
  65. }
  66. public function transFund($trans_param)
  67. {
  68. $request = new \AlipayFundTransUniTransferRequest;
  69. $bizContent = [
  70. 'out_biz_no'=>$trans_param['out_biz_no'],
  71. 'remark'=>$trans_param['remark'],
  72. 'business_params'=>[
  73. 'payer_show_name_use_alias'=>true,
  74. ],
  75. 'biz_scene'=>'DIRECT_TRANSFER',
  76. 'out_biz_no'=>$trans_param['out_biz_no'],
  77. 'payee_info'=>[
  78. 'identity'=>$trans_param['account'],
  79. 'identity_type'=>'ALIPAY_LOGON_ID',
  80. 'name'=>$trans_param['account_name'],
  81. ],
  82. 'trans_amount'=>$trans_param['trans_amount'],
  83. 'product_code'=>'TRANS_ACCOUNT_NO_PWD',
  84. 'order_title'=>$trans_param['order_title'],
  85. ];
  86. $bizContent_json = json_encode($bizContent);
  87. // $bizContent = "{".
  88. // "\"out_biz_no\":\".$trans_param['out_biz_no'].\",".
  89. // "\"remark\":\".$trans_param['remark'].\",".
  90. // "\"business_params\":\"{\\\"payer_show_name_use_alias\\\":\\\"true\\\"}\",".
  91. // "\"biz_scene\":\"DIRECT_TRANSFER\",".
  92. // "\"payee_info\":{".
  93. // "\"identity\":\".$trans_param['account'].\",".
  94. // "\"identity_type\":\"ALIPAY_LOGON_ID\",".
  95. // "\"name\":\".$trans_param['account_name'].\"".
  96. // "},".
  97. // "\"trans_amount\":\".$trans_param['trans_amount'].\",".
  98. // "\"product_code\":\"TRANS_ACCOUNT_NO_PWD\",".
  99. // "\"order_title\":\".$trans_param['order_title'].\"".
  100. // "}";
  101. \Log::info('$bizContent:'.$bizContent_json);
  102. \Log::info($bizContent);
  103. $request->setBizContent($bizContent_json);
  104. // {"out_biz_no":"tf-2023052917264016853524006173129",
  105. // "remark":"\u6536\u76ca\u63d0\u73b0",
  106. // "business_params":{"payer_show_name_use_alias":true},
  107. // "biz_scene":"DIRECT_TRANSFER",
  108. // "payee_info":{"identity":"18668420256","identity_type":"ALIPAY_LOGON_ID","name":"\u5468\u7075\u6770"},
  109. // "trans_amount":0.01,"product_code":"TRANS_ACCOUNT_NO_PWD","order_title":"\u706b\u732b\u5c0f\u8bf4"}
  110. // $request->setBizContent("{".
  111. // "\"out_biz_no\":\"hmxs201806300003\",".
  112. // "\"remark\":\"火猫小说\",".
  113. // "\"business_params\":\"{\\\"payer_show_name_use_alias\\\":\\\"true\\\"}\",".
  114. // "\"biz_scene\":\"DIRECT_TRANSFER\",".
  115. // "\"payee_info\":{".
  116. // "\"identity\":\"18668420256\",".
  117. // "\"identity_type\":\"ALIPAY_LOGON_ID\",".
  118. // "\"name\":\"周灵杰\"".
  119. // "},".
  120. // "\"trans_amount\":\"0.1\",".
  121. // "\"product_code\":\"TRANS_ACCOUNT_NO_PWD\",".
  122. // "\"order_title\":\"测试转账\"".
  123. // "}");
  124. $result = $this->aop->execute($request);
  125. echo json_encode($result,JSON_UNESCAPED_UNICODE);
  126. \Log::info('transFund:'.json_encode($result,JSON_UNESCAPED_UNICODE));
  127. return $result;
  128. }
  129. }