alipay_submit.class.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. class AlipaySubmit
  3. {
  4. public $alipay_config;
  5. /**
  6. *支付宝网关地址(新)
  7. */
  8. public $alipay_gateway_new = 'https://mapi.alipay.com/gateway.do?';
  9. public function __construct($alipay_config)
  10. {
  11. $this->alipay_config = $alipay_config;
  12. }
  13. public function AlipaySubmit($alipay_config)
  14. {
  15. $this->__construct($alipay_config);
  16. }
  17. public function buildRequestMysign($para_sort)
  18. {
  19. $prestr = createLinkstring($para_sort);
  20. $mysign = '';
  21. switch (strtoupper(trim($this->alipay_config['sign_type']))) {
  22. case 'MD5':
  23. $mysign = md5Sign($prestr, $this->alipay_config['key']);
  24. break;
  25. default:
  26. $mysign = '';
  27. }
  28. return $mysign;
  29. }
  30. public function buildRequestPara($para_temp)
  31. {
  32. $para_filter = paraFilter($para_temp);
  33. $para_sort = argSort($para_filter);
  34. $mysign = $this->buildRequestMysign($para_sort);
  35. $para_sort['sign'] = $mysign;
  36. $para_sort['sign_type'] = strtoupper(trim($this->alipay_config['sign_type']));
  37. return $para_sort;
  38. }
  39. public function buildRequestParaToString($para_temp)
  40. {
  41. $para = $this->buildRequestPara($para_temp);
  42. $request_data = createLinkstringUrlencode($para);
  43. return $request_data;
  44. }
  45. public function buildRequestForm($para_temp, $method, $button_name)
  46. {
  47. $para = $this->buildRequestPara($para_temp);
  48. $sHtml = '<form id=\'alipaysubmit\' name=\'alipaysubmit\' action=\'' . $this->alipay_gateway_new . '_input_charset=' . trim(strtolower($this->alipay_config['input_charset'])) . '\' method=\'' . $method . '\'>';
  49. while (list($key, $val) = each($para)) {
  50. $sHtml .= '<input type=\'hidden\' name=\'' . $key . '\' value=\'' . $val . '\'/>';
  51. }
  52. $sHtml = $sHtml . '<input type=\'submit\' value=\'' . $button_name . '\' style=\'display:none;\'></form>';
  53. $sHtml = $sHtml . '<script>document.forms[\'alipaysubmit\'].submit();</script>';
  54. return $sHtml;
  55. }
  56. public function query_timestamp()
  57. {
  58. $url = $this->alipay_gateway_new . 'service=query_timestamp&partner=' . trim(strtolower($this->alipay_config['partner'])) . '&_input_charset=' . trim(strtolower($this->alipay_config['input_charset']));
  59. $encrypt_key = '';
  60. $doc = new DOMDocument();
  61. $doc->load($url);
  62. $itemEncrypt_key = $doc->getElementsByTagName('encrypt_key');
  63. $encrypt_key = $itemEncrypt_key->item(0)->nodeValue;
  64. return $encrypt_key;
  65. }
  66. public function getHtml($para_temp)
  67. {
  68. $para = $this->buildRequestPara($para_temp);
  69. $init = '';
  70. while (list($key, $val) = each($para)) {
  71. $init .= '&' . $key . '=' . urlencode($val);
  72. }
  73. $init = $this->alipay_gateway_new . '_input_charset=' . trim(strtolower($this->alipay_config['input_charset'])) . $init;
  74. return $init;
  75. }
  76. }
  77. require_once 'alipay_core.function.php';
  78. require_once 'alipay_md5.function.php';
  79. ?>