CppayapplyReceiveNoticeTest.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. // 支付回调
  3. include_once 'WebUtils.php';
  4. include_once 'IcbcSignature.php';
  5. include_once 'IcbcEncrypt.php';
  6. $AES_KEY = "";//AES报文解密秘钥,如无特殊约定,e企付异步推送报文不使用加密,本字段可为空;若贵司要求异步通知加密,需提前将秘钥提供给工行
  7. //$icbcPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt53rMPsEVSsfaHoUwJcraDyz9HaYbSTqOp/dV4QmKhMqmq9Kr0WFqSSTCKbbAMy/t3rEAkeLdu6JNyJOEjIkLA8uESP2aUne4vAeMCVx2/0kTvmAi7lgopKGTC+92CJdyNJQa0tIPMMYTkgcOsXYEgpnygR0AHmLGUH6TE6UTNmxHwKcY+MsMpLO9Yh5hDph9dgXACnNCHyhvhJff+oWXWPwSv40vr/9ExG+Q09F5uoKDJiNctEoS/EcG/nYN1dCymyK2mV8URQ/LMXra2yBZIg0ez4XyImniYWo0pMxdv1d0dHmKNemLJE7neW/oOUu55YgU1rpj1+3bXvqA2LIwQIDAQAB";
  8. error_log("--------------------------**************************-------------------");
  9. $params = array();
  10. $from = $_POST['from'];
  11. $api = $_POST['api'];
  12. $appId = $_POST['app_id'];
  13. $charset = $_POST['charset'];
  14. $format = $_POST['format'];
  15. $timestamp = $_POST['timestamp'];
  16. $sign_type = $_POST['sign_type'];
  17. $biz_content = htmlspecialchars_decode($_POST['biz_content']);
  18. $sign = $_POST['sign'];
  19. $params['from'] = $from;
  20. $params['api'] = $api;
  21. $params['app_id'] = $appId;
  22. $params['charset'] = $charset;
  23. $params['format'] = $format;
  24. $params['timestamp'] = $timestamp;
  25. $params['sign_type'] = $sign_type;
  26. $params['biz_content'] = $biz_content;
  27. error_log("from:".$from."--api:".$api."--appId:".$appId."--charset:".$charset."--format:".$format."--timestamp:".$timestamp."--sign_type:".$sign_type."--biz_content:".$biz_content."--sign:".$sign);
  28. $path = "/epay/NotifyUrlServlet.php";
  29. $signStr = WebUtils::buildOrderedSignStr($path,$params);
  30. error_log("signStr:".$signStr);
  31. $icbcPublicKey="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";//网关公钥
  32. $passed = IcbcSignature::verify($signStr, $sign_type, $icbcPublicKey, $charset, $sign,'');
  33. error_log("passed:".$passed);
  34. $responseBizContent = "";
  35. if(!$passed){
  36. $responseBizContent = "{\"return_code\":-12345,\"return_msg\":\"icbc sign not pass.\"}";
  37. }else{
  38. /**********合作方/分行 业务逻辑处理**********/
  39. $respMap = json_decode($biz_content,true);
  40. $msg_id = $respMap["msg_id"];
  41. //$msg_id = time();
  42. $return_code = 0;
  43. $eturn_msg = "success.";
  44. $responseBizContent = "{\"return_code\":".$return_code.",\"return_msg\":\"".$eturn_msg."\",\"msg_id\":\"".$msg_id."\"}";
  45. error_log("responseBizContent======:".$responseBizContent."=====!");
  46. }
  47. /**********商户对消息返回响应进行签名,签名方式需与在API平台登记APP的sign_type保持一致,e企付一般为RSA签名**********/
  48. /*1、商户以CA证书签名为例,如下:
  49. signStr = "\"response_biz_content\":"+responseBizContent+","+"\"sign_type\":"+"\"CA\","+"\"ca\":\""+cert+"\"";
  50. sign = IcbcSignature.sign(signStr, "CA", CertPriKey,
  51. charset,"12345678");
  52. results = "{"+signStr+",\"sign\":\""+sign+"\"}";
  53. */
  54. //2、商户以RSA签名为例,如下:其中,MY_PRIVATE_KEY为商户私钥;
  55. //$privateKey="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC3nesw+wRVKx9oehTAlytoPLP0dphtJOo6n91XhCYqEyqar0qvRYWpJJMIptsAzL+3esQCR4t27ok3Ik4SMiQsDy4RI/ZpSd7i8B4wJXHb/SRO+YCLuWCikoZML73YIl3I0lBrS0g8wxhOSBw6xdgSCmfKBHQAeYsZQfpMTpRM2bEfApxj4ywyks71iHmEOmH12BcAKc0IfKG+El9/6hZdY/BK/jS+v/0TEb5DT0Xm6goMmI1y0ShL8Rwb+dg3V0LKbIraZXxRFD8sxetrbIFkiDR7PhfIiaeJhajSkzF2/V3R0eYo16YskTud5b+g5S7nliBTWumPX7dte+oDYsjBAgMBAAECggEAa3ra4u7sWFZHqkZbw2g5lmiCBgUtsCW9nddaHxJRrKtPcwBMvU/6r0mjb5sL8unnByWrepIahuGWHFnOTURgfBHeq1XbtUHyX/CiGxiwD0+cY0YVArTeZgtS5WHExLFJKHZDcKq+fCLPJXN8YsLQea7xlgUJSgXbcEt4khYlJN4BPsh/aZ1OmVEUlsa4jEPDsK2T3D4xl4gNd8giuSSvBs6HwBq/ICiQ2muCpk3Kn5JrkwwTYJWant4NFcBpFzLNxjwPsipZ0AngikvpcASqvA8X/rWPXZ0pXAT5Spzd93d7TqL0FUKoLjtRamUQ6/liugjZsb7EsS1+GK8QEAa2aQKBgQDx/4WwwNmapDd5hgr9/j49VJm7yOSKcQXS8BFMNiC3xx4RZFqzKTnmuvzH+NFexL2Ay87A8EOnVv8xajbmC+1FSVilt5HEzezJ3GjQX6li0EJNOQcLGbIVCB/3h9oU/tw9uf1/JmF1sbKkW6IL+r5gs8jGKczc8ABOnQm89Ov93wKBgQDCPaciXsqtog7zvWKbaj+tSDofMpy8BTOkMLfF1GhhCGbz+/aRHQiEKoqC4nqxibx1JLWhIRplJx+dmyfkwki1+SGFuFkWxv8l2PL9NBurMYlX0x8UIseriSLRUCCcGZl6s7PD6diA9CO3BokU5fkCQfqgHvRjPfEUE2yvgvzNXwKBgBxgj0fDxYCZwxuP+VgBaUD9260miI4nZLxwhEbAjiOeyMrXTr91lSGWSbAVYE/RmDszKwJ66iQEUpZz0w401dTrHecI2KIQV7TwEKZmoVFCBJRTnJzTnYtT0ZPQLWWK4T6nwa8YTBNmDAGz8ROgipSCYIfEPQ6nYhHV3l93BPlXAoGBALttTkbF/QBKbe8XgXzBqywDk8HizoZG5qu6Lrn/2bA3sVAggq1HvJ37hqgA7a8+XtESWQhfrt6IP+OOgZIlPpAJEyW62ow1/KGClAVrMH+iTwqlt0lwvgZxT1112eGGeiiCGiYjETxtV8EV11SJDBv3mmTDOcJBVMywaaF53YI1AoGAX7W6OM5zyNhTuDFxTbaZsrVwuHJCytcg35sVsYVhyHRD5xZhiwwbh6gxX1hOVUzUZAwlLaJ2ehx2YKsjDIsG4lSBfVTHzo8Z+RC6QR0auPC30iUwRkD0rgO9RT2QVqqYtedtaTQsY8NiHiAuzC9MEaK5vjPE88Q50pwtR63DY7Y=";
  56. $privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
  57. mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
  58. lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
  59. O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
  60. P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
  61. fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
  62. Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
  63. I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
  64. bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
  65. 3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
  66. YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
  67. 97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
  68. 5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
  69. PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
  70. 5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
  71. pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
  72. sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
  73. 0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
  74. 45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
  75. a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
  76. at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
  77. n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
  78. zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
  79. xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
  80. 2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
  81. oclGtrgSiI3n3kJ2Xy3oO38=";
  82. $signStr = "\"response_biz_content\":".$responseBizContent.","."\"sign_type\":"."\"RSA2\"";
  83. $sign = IcbcSignature::sign($signStr, IcbcConstants::$SIGN_TYPE_RSA2, $privateKey,$charset,"");
  84. $results = "{".$signStr.",\"sign\":\"".$sign."\"}";
  85. error_log("results======:".$results."=====!");
  86. echo $results
  87. ?>