pay.php 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. /**
  3. * ps. 这一步其实没有跟支付宝后台交互,只是服务器自己计算的签名等信息,
  4. * 因为签名秘钥不适合放在客户端. (wg)
  5. *
  6. */
  7. require_once __DIR__ . '/../../../../main.php'; # 导入游戏库
  8. require_once __DIR__ . '/../../Mo/payResp.php'; # 响应模型
  9. require_once __DIR__ . '/../../Mo/payRequest.php';
  10. require_once __DIR__ . '/AopSdk.php'; # 导入alipay库
  11. require_once __DIR__ . '/config_alipay.php'; # 导入配置文件
  12. use loyalsoft\CLog; # 添加 use
  13. use loyalsoft\JsonUtil;
  14. use loyalsoft\HttpUtil;
  15. HttpUtil::PostOnly(); # 限定客户端用post
  16. $str = HttpUtil::getQueryString(); # 提取参数串
  17. // $str=gzinflate($str); # 编码方案
  18. $data = JsonUtil::decode($str);
  19. $req = new PayRequest($data); # 创建订单
  20. $resp = $req->AntiAdditionCheck(); # 防沉迷金额校验
  21. if ($resp->err != 0) {
  22. exit($resp); # 返回
  23. }
  24. $cfg = loyalsoft\config_alipay::Inst();
  25. $req->InserDataBase(); # 将订单插入数据库
  26. CLog::pay('[alipay.pay]创建订单' . $req); # 日志
  27. // SDK已经封装掉了公共参数,这里只需要传入业务参数: https://docs.open.alipay.com/204/105465/
  28. $bizcontent = "{\"body\":\"" . $req->product_name . "\","
  29. . "\"subject\": \"龙游科技\","
  30. . "\"out_trade_no\": \"" . $req->cpOrderId . "\","
  31. . "\"timeout_express\": \"30m\","
  32. . "\"total_amount\": \"" . $req->amount . "\"," # 正式: 这里单位是元, 注意检查
  33. // . "\"total_amount\": \"" . $req->amount / 100 . "\"," # 测试: 这里单位是元, 注意检查
  34. . "\"product_code\":\"QUICK_MSECURITY_PAY\","
  35. . "\"passback_params\":\"" . $req->callbackInfo . "\"" # 透传参数
  36. . "}";
  37. $aop = new AopClient(); # 客户端
  38. $aop->appId = $cfg->appId; # "app_id";
  39. $aop->gatewayUrl = $cfg->gatewayUrl; # 支付宝网关
  40. $aop->alipayrsaPublicKey = $cfg->alipayrsaPublicKey;
  41. $aop->rsaPrivateKey = $cfg->rsaPrivateKey;
  42. $aop->format = "json";
  43. $aop->charset = "UTF-8";
  44. $aop->signType = "RSA2";
  45. //实例化具体API对应的request类,类名称和接口名称对应,
  46. $request = new AlipayTradeAppPayRequest(); # 当前调用接口名称:alipay.trade.app.pay
  47. $request->setNotifyUrl($req->notifyUrl);
  48. $request->setBizContent($bizcontent);
  49. $response = $aop->sdkExecute($request); # 这里和普通的接口调用不同,使用的是sdkExecute
  50. $ret = array(# # 返回值
  51. 'err' => 0, # # 错误码
  52. 'platformCode' => 'zfb', # # 平台
  53. 'cpOrderId' => $req->cpOrderId, # # 渠道订单号
  54. 'platformInfo' => base64_encode($response) # token串
  55. );
  56. echo json_encode($ret); # 返回客户端