|
|
@@ -69,6 +69,8 @@ class OrderService extends AlibabaAgentBaseService
|
|
69
|
69
|
return false;
|
|
70
|
70
|
}
|
|
71
|
71
|
|
|
|
72
|
+ Log::channel('alibaba')->info('[预下单] API请求成功', ['result' => $result]);
|
|
|
73
|
+
|
|
72
|
74
|
return $this->formatPreviewResult($result);
|
|
73
|
75
|
}
|
|
74
|
76
|
|
|
|
@@ -198,10 +200,89 @@ class OrderService extends AlibabaAgentBaseService
|
|
198
|
200
|
return false;
|
|
199
|
201
|
}
|
|
200
|
202
|
|
|
|
203
|
+ Log::channel('alibaba')->info('[创建订单] API请求成功', ['result' => $result]);
|
|
|
204
|
+
|
|
201
|
205
|
return $this->formatCreateOrderResult($result);
|
|
202
|
206
|
}
|
|
203
|
207
|
|
|
204
|
208
|
/**
|
|
|
209
|
+ * 免密支付准备
|
|
|
210
|
+ *
|
|
|
211
|
+ * API: com.alibaba.trade:alibaba.trade.pay.protocolPay.preparePay-1
|
|
|
212
|
+ *
|
|
|
213
|
+ * 接口文档: https://open.1688.com/api/apidocdetail.htm?id=com.alibaba.trade%3Aalibaba.trade.pay.protocolPay.preparePay-1
|
|
|
214
|
+ *
|
|
|
215
|
+ * 请求参数说明(接口文档定义):
|
|
|
216
|
+ * - tradeWithholdPreparePayParam: 必填,类型 message:alibaba.trade.pay.withhold.preparePayParam
|
|
|
217
|
+ * preparePayParam 结构:
|
|
|
218
|
+ * - orderId: 订单ID(Long,必填)
|
|
|
219
|
+ *
|
|
|
220
|
+ * 调用示例:
|
|
|
221
|
+ * $orderService->prepareProtocolPay([
|
|
|
222
|
+ * 'orderId' => 123456789,
|
|
|
223
|
+ * ]);
|
|
|
224
|
+ *
|
|
|
225
|
+ * @param array $params 免密支付参数(orderId)
|
|
|
226
|
+ * @return array|false
|
|
|
227
|
+ */
|
|
|
228
|
+ public function prepareProtocolPay(array $params = [])
|
|
|
229
|
+ {
|
|
|
230
|
+ // --- 参数校验 ---
|
|
|
231
|
+ if (empty($params['orderId'])) {
|
|
|
232
|
+ Log::channel('alibaba')->error('[免密支付] orderId不能为空');
|
|
|
233
|
+ return false;
|
|
|
234
|
+ }
|
|
|
235
|
+
|
|
|
236
|
+ // --- 构建 tradeWithholdPreparePayParam(message类型需序列化为JSON字符串) ---
|
|
|
237
|
+ $businessParams = [
|
|
|
238
|
+ 'tradeWithholdPreparePayParam' => json_encode([
|
|
|
239
|
+ 'orderId' => (int)$params['orderId'],
|
|
|
240
|
+ ], JSON_UNESCAPED_UNICODE),
|
|
|
241
|
+ ];
|
|
|
242
|
+
|
|
|
243
|
+ // --- 调用API ---
|
|
|
244
|
+ $result = $this->executeParam2(
|
|
|
245
|
+ self::NAMESPACE,
|
|
|
246
|
+ 'alibaba.trade.pay.protocolPay.preparePay',
|
|
|
247
|
+ 1,
|
|
|
248
|
+ $businessParams
|
|
|
249
|
+ );
|
|
|
250
|
+
|
|
|
251
|
+ if ($result === false) {
|
|
|
252
|
+ Log::channel('alibaba')->error('[免密支付] API请求失败', $businessParams);
|
|
|
253
|
+ return false;
|
|
|
254
|
+ }
|
|
|
255
|
+
|
|
|
256
|
+ Log::channel('alibaba')->info('[免密支付] API请求成功', ['result' => $result]);
|
|
|
257
|
+
|
|
|
258
|
+ return $this->formatProtocolPayResult($result);
|
|
|
259
|
+ }
|
|
|
260
|
+
|
|
|
261
|
+ /**
|
|
|
262
|
+ * 格式化免密支付准备返回结果
|
|
|
263
|
+ *
|
|
|
264
|
+ * @param array $result API原始返回数据
|
|
|
265
|
+ * @return array
|
|
|
266
|
+ */
|
|
|
267
|
+ protected function formatProtocolPayResult(array $result): array
|
|
|
268
|
+ {
|
|
|
269
|
+ // 返回结构: { "result": { ... }, "success": true }
|
|
|
270
|
+ $data = $result['result'] ?? $result;
|
|
|
271
|
+ $success = $result['success'] ?? false;
|
|
|
272
|
+
|
|
|
273
|
+ Log::channel('alibaba')->info('[免密支付] 返回结果', [
|
|
|
274
|
+ 'success' => $success,
|
|
|
275
|
+ 'data' => $data,
|
|
|
276
|
+ ]);
|
|
|
277
|
+
|
|
|
278
|
+ return [
|
|
|
279
|
+ 'success' => $success,
|
|
|
280
|
+ 'data' => $data,
|
|
|
281
|
+ 'rawData' => $result,
|
|
|
282
|
+ ];
|
|
|
283
|
+ }
|
|
|
284
|
+
|
|
|
285
|
+ /**
|
|
205
|
286
|
* 格式化创建订单返回结果
|
|
206
|
287
|
*
|
|
207
|
288
|
* @param array $result API原始返回数据
|