multiKeyDemo.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. header ( 'Content-type:text/html;charset=utf-8' );
  3. $projName = getProjName();
  4. include_once $_SERVER ['DOCUMENT_ROOT'] . "/$projName/sdk/acp_service.php";
  5. /**
  6. * 多证书demo
  7. * 【【【尽量和业务部门申请使用证书共享,尽量不要用多证书。】】】
  8. *
  9. */
  10. $params = array(
  11. 'version' => '5.1.0', //版本号
  12. 'encoding' => 'utf-8', //编码方式
  13. 'signMethod' => '11', //签名方法
  14. 'txnType' => '00', //交易类型
  15. 'txnSubType' => '00', //交易子类
  16. 'bizType' => '000000', //业务类型
  17. 'accessType' => '0', //接入类型
  18. 'channelType' => '07', //渠道类型
  19. 'orderId' => date('YmdHis'), //订单号,演示用
  20. 'merId' => '777290058110048', //商户代码,演示用
  21. 'txnTime' => date('YmdHis'), //订单发送时间,演示用
  22. );
  23. com\unionpay\acp\sdk\AcpService::signBySecureKey( $params, "88888888" ); // 签名
  24. //此地址为示例这里要替换成做具体交易的地址(具体交易地址请查看对应示例中用到的地址)
  25. $url = com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->singleQueryUrl;
  26. $result_arr = com\unionpay\acp\sdk\AcpService::post ( $params, $url);
  27. if(count($result_arr)<=0) { //没收到200应答的情况
  28. printResult ( $url, $params, array() );
  29. echo "POST请求失败,具体报错请看下日志。<br>\n" ;
  30. return;
  31. }
  32. printResult ($url, $params, $result_arr ); //页面打印请求应答数据
  33. if (!com\unionpay\acp\sdk\AcpService::validateBySecureKey ($result_arr, "88888888") ){
  34. echo "应答报文验签失败<br>\n";
  35. } else {
  36. echo "应答报文验签成功<br>\n";
  37. }
  38. com\unionpay\acp\sdk\AcpService::signBySecureKey ( $params, "12345678" ); // 签名
  39. $result_arr = com\unionpay\acp\sdk\AcpService::post ( $params, $url);
  40. if(count($result_arr)<=0) { //没收到200应答的情况
  41. printResult ( $url, $params, array() );
  42. echo "POST请求失败,具体报错请看下日志。<br>\n" ;
  43. return;
  44. }
  45. printResult ($url, $params, $result_arr ); //页面打印请求应答数据
  46. if (!com\unionpay\acp\sdk\AcpService::validateBySecureKey ($result_arr, "12345678") ){
  47. echo "应答报文验签失败<br>\n";
  48. } else {
  49. echo "应答报文验签成功<br>\n";
  50. }
  51. /**
  52. * 打印请求应答
  53. *
  54. * @param
  55. * $url
  56. * @param
  57. * $req
  58. * @param
  59. * $resp
  60. */
  61. function printResult($url, $req, $resp) {
  62. echo "=============<br>\n";
  63. echo "地址:" . $url . "<br>\n";
  64. echo "请求:" . str_replace ( "\n", "\n<br>", htmlentities ( com\unionpay\acp\sdk\createLinkString ( $req, false, true ) ) ) . "<br>\n";
  65. echo "应答:" . str_replace ( "\n", "\n<br>", htmlentities ( com\unionpay\acp\sdk\createLinkString ( $resp , false, false )) ) . "<br>\n";
  66. echo "=============<br>\n";
  67. }
  68. function getProjName(){
  69. $dir = str_replace("\\","/", dirname(__FILE__));
  70. $rootDir = str_replace("\\", "/", $_SERVER ['DOCUMENT_ROOT']);
  71. if($rootDir[strlen($rootDir) - 1] != "/") $rootDir = $rootDir . "/";
  72. $index = strlen($rootDir);
  73. $dir = substr($dir, $index);
  74. $index = strpos($dir, "/");
  75. $projName = substr($dir, 0, $index);
  76. return $projName;
  77. }