notify.php 1.5 KB

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