pay.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * 三星创建订单接口
  4. * 1. 游戏服务器后台创建订单
  5. * 2. 向三星后台推送订单信息
  6. * 3. 成功后将订单信息以及三星下发的token信息返回给客户端
  7. *
  8. * @version
  9. * 1.0.0 Created at 2018-3-3. by --gwang
  10. * @author gwang (mail@wanggangzero.cn)
  11. * @copyright ? 2018-3-3, SJZ LoyalSoft Corporation & gwang. All rights reserved.
  12. */
  13. include_once __DIR__ . '/../../../main.php'; # 导入game utils
  14. include_once __DIR__ . '/../Mo/payResp.php'; # 导入通用返回值结构
  15. include_once __DIR__ . '/../Mo/payRequest.php'; # 导入通用订单请求结构
  16. require_once __DIR__ . '/config_sanxing.php';
  17. use loyalsoft\CLog;
  18. use loyalsoft\JsonUtil;
  19. use loyalsoft\HttpUtil;
  20. $str = HttpUtil::getQueryString(); # 取参数
  21. // $str = gzinflate($str);
  22. $data = JsonUtil::decode($str);
  23. $req = new PayRequest($data); # 解析参数并创建订单
  24. $cfg = config_sanxing::Inst();
  25. //var_dump($req);
  26. if ($req->InserDataBase()) { # 订单数据入库
  27. CLog::pay('[三星.pay]创建订单' . $str);
  28. // 向sanxing推送订单
  29. $params = array(
  30. 'appid' => $cfg->appId, # # 应用编号
  31. 'waresid' => $cfg->getWaresid($req->product_id), # # 三星后台商品编号
  32. 'waresname' => $req->product_name,
  33. 'price' => floatval($req->amount), # # 浮点的
  34. 'cporderid' => $req->cpOrderId, # # 订单号
  35. 'currency' => "RMB", # # 支付货币
  36. 'appuserid' => $req->accountId, # # UID
  37. 'notifyurl' => $req->notifyUrl, # # 支付结果通知地址
  38. 'cpprivateinfo' => $req->callbackInfo # # 透传参数
  39. );
  40. $reqData = $cfg->composePayReq($params); # 组装请求报文
  41. $resp = HttpUtil::makeRequest($cfg->sanxing_api_trade, $reqData); # 创建订单
  42. if ($resp['result']) {
  43. // var_dump($resp);
  44. //echo Resp::ok($resp);
  45. CLog::pay('[三星.pay]向后台推送订单成功' . $req);
  46. //返回报文解析
  47. $respJson;
  48. if (!$cfg->parseResp($resp['msg'], $respJson)) {
  49. echo payResp::err(2, 'parse resp data failed!\n');
  50. } else {
  51. $ret = $req->retData();
  52. $ret['transid'] = "transid=" . $respJson->transid . "&appid=" . $cfg->appId;
  53. echo payResp::ok($ret);
  54. }
  55. } else {
  56. CLog::pay('[三星.pay]向后台推送订单失败' . $req);
  57. echo payResp::err($resp['code'], $resp['msg']);
  58. }
  59. } else {
  60. CLog::pay('[三星.pay]创建订单失败' . $req);
  61. echo payResp::err(1, '创建订单失败'); # 返回值
  62. }