notify.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. define('IN_MYMPS', true);
  3. define('IN_ADMIN', true);
  4. define('CURSCRIPT', 'notify');
  5. require_once dirname(__FILE__) . '/../../../include/global.php';
  6. require_once MYMPS_DATA . '/config.php';
  7. require_once MYMPS_DATA . '/config.db.php';
  8. require_once MYMPS_INC . '/db.class.php';
  9. include MYMPS_INC . '/pay.fun.php';
  10. $payr = $db->getRow('SELECT * FROM ' . $db_mymps . 'payapi WHERE paytype=\'wxpay\'');
  11. $payr['paykey'] = trim($payr['paykey']);
  12. require_once 'function.php';
  13. $data = file_get_contents('php://input');
  14. libxml_disable_entity_loader(true);
  15. $xml_parser = xml_parser_create();
  16. if (!xml_parse($xml_parser, $data, true)) {
  17. exit();
  18. }
  19. xml_parser_free($xml_parser);
  20. $xml = simplexml_load_string($data);
  21. $param = array();
  22. foreach ($xml as $key => $val) {
  23. if ($key != 'sign') {
  24. $param[$key] = $val;
  25. }
  26. }
  27. ksort($param);
  28. $strArr = array();
  29. foreach ($param as $key => $val) {
  30. array_push($strArr, $key . '=' . $val);
  31. }
  32. $string = implode('&', $strArr);
  33. $sign = $string . '&key=' . $payr['paykey'];
  34. $sign = strtoupper(md5($sign));
  35. if ($sign == $xml->sign) {
  36. $out_trade_no = $xml->out_trade_no;
  37. $transaction_id = $xml->transaction_id;
  38. $total_fee = intval($xml->total_fee) / 100;
  39. $paybz = '支付成功';
  40. UpdatePayRecord($out_trade_no, $paybz);
  41. WechatReturnSuccess();
  42. }
  43. ?>