notify.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. * 支付成功异步回调接口
  4. *
  5. * 当用户支付成功后,支付平台会把订单支付信息异步请求到本接口(最多5次)
  6. *
  7. * @date 2017年3月13日
  8. * @copyright 重庆迅虎网络有限公司
  9. */
  10. require_once 'api.php';
  11. /**
  12. * 回调数据
  13. * @var array(
  14. * 'trade_order_id',商户网站订单ID
  15. 'total_fee',订单支付金额
  16. 'transaction_id',//支付平台订单ID
  17. 'order_date',//支付时间
  18. 'plugins',//自定义插件ID,与支付请求时一致
  19. 'status'=>'OD'//订单状态,OD已支付,WP未支付
  20. * )
  21. */
  22. $appid = '2147483647';//测试账户,仅支持一元内支付
  23. $appsecret = '160130736b1ac0d54ed7abe51e44840b';//测试账户,仅支持一元内支付
  24. $my_plugin_id = 'my-plugins-id';
  25. $data = $_POST;
  26. foreach ($data as $k=>$v){
  27. $data[$k] = stripslashes($v);
  28. }
  29. if(!isset($data['hash'])||!isset($data['trade_order_id'])){
  30. echo 'failed';exit;
  31. }
  32. //自定义插件ID,请与支付请求时一致
  33. if(isset($data['plugins'])&&$data['plugins']!=$my_plugin_id){
  34. echo 'failed';exit;
  35. }
  36. //APP SECRET
  37. $appkey =$appsecret;
  38. $hash =XH_Payment_Api::generate_xh_hash($data,$appkey);
  39. if($data['hash']!=$hash){
  40. //签名验证失败
  41. echo 'failed';exit;
  42. }
  43. //商户订单ID
  44. $trade_order_id =$data['trade_order_id'];
  45. if($data['status']=='OD'){
  46. /************商户业务处理******************/
  47. //TODO:此处处理订单业务逻辑,支付平台会多次调用本接口(防止网络异常导致回调失败等情况)
  48. // 请避免订单被二次更新而导致业务异常!!!
  49. // if(订单未处理){
  50. // 处理订单....
  51. // }
  52. //....
  53. //...
  54. /*************商户业务处理 END*****************/
  55. }else{
  56. //处理未支付的情况
  57. }
  58. //以下是处理成功后输出,当支付平台接收到此消息后,将不再重复回调当前接口
  59. echo 'success';
  60. exit;
  61. ?>