notify.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. /**
  3. * 三星后台通知接收窗口
  4. * @version
  5. * 1.0.0 Created at 2018-3-3. by --gwang
  6. * @author gwang (mail@wanggangzero.cn)
  7. * @copyright ? 2018-3-3, SJZ LoyalSoft Corporation & gwang. All rights reserved.
  8. */
  9. include_once __DIR__ . '/../../../main.php'; # 导入game utils
  10. include_once __DIR__ . '/../Mo/payResp.php'; # 导入通用返回值结构
  11. include_once __DIR__ . '/../Mo/payRequest.php'; # 导入通用订单请求结构
  12. require_once __DIR__ . '/../Mo/OrderNotice.php'; # 统一订单结构
  13. require_once __DIR__ . '/config_sanxing.php';
  14. use loyalsoft\CLog;
  15. use loyalsoft\JsonUtil;
  16. use loyalsoft\HttpUtil;
  17. use loyalsoft\pay\OrderNotice;
  18. try {
  19. CLog::pay("[notify.三星] 收到支付回调请求: " . HttpUtil::getQueryString());
  20. $cfg = config_sanxing::Inst(); # 配置信息
  21. //获取notifyData,需要添加notifyData=
  22. $notifyData = 'transdata=%7B%22appid%22%3A%22500000185%22%2C%22count%22%3A1%2C%22cporderid%22%3A%22lrtest5bf98ef3-6543-4d2d-9f3f-1cadfda3fc0e%22%2C%22cpprivate%22%3A%22%22%2C%22feetype%22%3A2%2C%22money%22%3A1%2C%22paytype%22%3A5%2C%22result%22%3A%220%22%2C%22transid%22%3A%2232011407211739380639%22%2C%22transtime%22%3A%222014-07-21+17%3A39%3A38%22%2C%22transtype%22%3A0%2C%22waresid%22%3A1%7D&sign=OvL34IZYWbHJXUyXXBRSgZjeqoxPK8Bh68UArbDbd9mf0LZDYFwiIuB6Vqt4MtiphCOJN9cNr4aJzY0cCaq1CxO6PABmyMf37umL5uOro58NcoImKHIhxtaHenPGlY46aaf6GgGagY4MqY%2BjEdbFlbJQh4Y%2BdvHkUKjJVyEdQsE%3D&signtype=RSA';
  23. $notifyData = HttpUtil::getQueryString();
  24. if (!$cfg->parseResp($notifyData, $notifyJson)) {
  25. echo "FAILURE";
  26. CLog::pay("[notify.三星]解析回调请求失败");
  27. }
  28. // print_r($notifyJson);
  29. $order = OrderNotice::Parse_samsung((array) $notifyJson); # 将参数归一化到order
  30. if ($order != null) {
  31. if ($order->Check()) { # 订单校验, 1代表支付成功
  32. if ($order->status == 1) { # 订单状态是成功
  33. $order->UpdateOrderStatus(); # 更新订单状态,->已付款
  34. CLog::pay("[notify.三星] [发货] 订单: " . $order->cpOrderId . ", 金额: " . $order->amount);
  35. } else if ($order->status == 2) { # status为2(failed)的情况
  36. $order->UpdateOrderStatus(); # 直接更新订单状态,->支付失败
  37. CLog::pay("[notify.三星] [不发货] 订单: " . $order->cpOrderId);
  38. } else {
  39. echo 'FAILURE';
  40. CLog::pay("[notify.三星][处理结果]: FAILURE (未知的支付状态)"); # 日志
  41. return;
  42. }
  43. echo 'SUCCESS'; //返回给sdk server的响应内容
  44. CLog::pay("[notify.三星][处理结果]:" . "SUCCESS"); # 日志
  45. return;
  46. }
  47. }
  48. CLog::pay("[notify.三星][处理结果]:" . "FAILURE"); # 日志
  49. echo 'FAILURE'; //返回给sdk server的响应内容 ,对于重复多次通知失败的订单,请参考文档中通知机制。
  50. return;
  51. } catch (Exception $e) {
  52. CLog::pay("[notify.三星]" . $e->getMessage()); # 日志
  53. throw new exception($e->getMessage());
  54. }