wxnotify.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 15/12/10
  6. * Time: 下午6:01
  7. */
  8. ini_set('date.timezone', 'Asia/Shanghai');
  9. error_reporting(E_ERROR);
  10. define(WXPAY_PATH, BASE_DATA_PATH . '/api/open_wxpay');
  11. require_once(WXPAY_PATH . '/lib/OpenWxPay.Api.php');
  12. require_once(WXPAY_PATH . '/lib/OpenWxPay.Config.php');
  13. require_once(WXPAY_PATH . '/lib/OpenWxPay.Data.php');
  14. require_once(WXPAY_PATH . '/lib/OpenWxPay.Exception.php');
  15. require_once(WXPAY_PATH . '/lib/OpenWxPay.Notify.php');
  16. require_once(BASE_DATA_PATH . '/logic/delivery.logic.php');
  17. require_once(BASE_ROOT_PATH . '/helper/pay_helper.php');
  18. //xml格式
  19. //$content = '<xml><appid><![CDATA[wx24c5645aa986234a]]></appid>
  20. //<attach><![CDATA[120503418859341217]]></attach>
  21. //<bank_type><![CDATA[CFT]]></bank_type>
  22. //<cash_fee><![CDATA[1]]></cash_fee>
  23. //<fee_type><![CDATA[CNY]]></fee_type>
  24. //<is_subscribe><![CDATA[N]]></is_subscribe>
  25. //<mch_id><![CDATA[1279745801]]></mch_id>
  26. //<nonce_str><![CDATA[smzubtf1eul75d7snt7qzqyh258hwns3]]></nonce_str>
  27. //<openid><![CDATA[o-E2Rw9BKvBKnHgp41VYdxAHMJqg]]></openid>
  28. //<out_trade_no><![CDATA[127974580120151214143419]]></out_trade_no>
  29. //<result_code><![CDATA[SUCCESS]]></result_code>
  30. //<return_code><![CDATA[SUCCESS]]></return_code>
  31. //<sign><![CDATA[F43C02BBBB3B5E341D78EE477D67F598]]></sign>
  32. //<time_end><![CDATA[20151214143425]]></time_end>
  33. //<total_fee>1</total_fee>
  34. //<trade_type><![CDATA[APP]]></trade_type>
  35. //<transaction_id><![CDATA[1002150763201512142078937308]]></transaction_id>
  36. //</xml>';
  37. fcgi_header("Content-Type: text/html; charset=UTF-8");
  38. try {
  39. $content = $_SERVER['post_content'];
  40. Log::record("content = {$content}", Log::DEBUG);
  41. $result = OpenWxPayResults::Init($content);
  42. $ret_wx = [];
  43. $ret_code = $result['result_code'];
  44. Log::record("result_code= {$ret_code}", Log::DEBUG);
  45. if ($ret_code == 'SUCCESS') {
  46. $out_trade_no = $result['out_trade_no'];
  47. $pay_sn = $result['attach'];
  48. $trade_no = $result['transaction_id'];
  49. Log::record("out_trade_no={$out_trade_no} and pay_sn={$pay_sn} and trade_no = {$trade_no}", Log::DEBUG);
  50. $payer = new pay_helper($pay_sn);
  51. $cb_info = $payer->update_order($trade_no, 'wxpay');
  52. if ($cb_info['state'] == false) {
  53. Log::record('wxpay error.', Log::DEBUG);
  54. } else {
  55. Log::record('wxpay success.', Log::DEBUG);
  56. if (is_pushoms()) {
  57. $logic_delivery = Logic('delivery');
  58. $ret = $logic_delivery->putOrder($pay_sn, $trade_no);
  59. }
  60. $payer->OnSuccess();
  61. }
  62. $ret_wx['return_code'] = 'SUCCESS';
  63. $ret_wx['return_msg'] = 'OK';
  64. } else {
  65. Log::record('wxpay error 2.', Log::DEBUG);
  66. $ret_wx['return_code'] = 'FAIL';
  67. $ret_wx['return_msg'] = 'Error.';
  68. }
  69. $retoper = new OpenWxPayResults();
  70. $retoper->FromArray($ret_wx);
  71. $xml = $retoper->ToXml();
  72. Log::record("return to wx= {$xml}", Log::DEBUG);
  73. echo($xml);
  74. } catch (OpenWxPayException $e) {
  75. Log::record($e->getTraceAsString(), Log::ERR);
  76. $msg = $e->errorMessage();
  77. return false;
  78. }