通过付款人 ID 获取 PayPal 交易详细信息。 PayPal 仅返回付款人 ID

问题描述 投票:0回答:1

PayPal 在每笔交易中返回 PayerID。我需要获取客户的电子邮件地址和其他交易详细信息。

像这样返回 URL,并在其中附加 PayerID。这是示例:https://myreturnurl?PayerID=WA7G59W5XVSY

PayPal有没有API可以通过PayerID获取交易数据。

或者如果您有任何与此查询相关的建议。

提前谢谢您。

php paypal paypal-rest-sdk
1个回答
0
投票

我不是 PHP 开发人员,但您可以从 PayPalOrder Details API 获取付款人信息,因为没有直接的 API 用于从 PayerId 获取付款详细信息,因为付款人正在进行多笔交易,每笔交易都可以由 payment_id order_id

唯一标识

这是我用Java实现的

public PayPalOrderResponseDTO getOrderDetails(String orderId) throws IOException, InterruptedException {
    var accessTokenDTO = getAuthResponse();

    var request = HttpRequest.newBuilder()
            .uri(URI.create(createUrl(BASE_URL, ORDER_DETAILS, orderId)))
            .header(HttpHeaders.AUTHORIZATION, "Bearer " + accessTokenDTO.accessToken())
            .GET()
            .build();
    var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
    var content = response.body();
    return objectMapper.readValue(content, PayPalOrderResponseDTO.class);
}

其中 ORDER_DETAILS 是一个枚举

ORDER_DETAILS("/v2/checkout/orders/{id}"),

createUrl()方法

public static String createUrl(String baseUrl, PayPalEndpoints endpoints, String pathVariable){
    String path = endpoints.path.replace("{id}", pathVariable);
    return baseUrl + path;
}

PayPalResponseDTO 看起来像

public record PayPalOrderResponseDTO(
    @JsonProperty("create_time")
    String creationTime,
    @JsonProperty("update_time")
    String updateTime,
    String id,
    @JsonProperty("processing_instruction")
    PayPalProcessingInstruction processingInstruction,
    @JsonProperty("purchase_units")
    List<PayPalPurchaseUnit> payPalPurchaseUnits,
    List<PayPalLinks> links,
    @JsonProperty("payment_source")
    PayPalPaymentSource paymentSource,
    PayPalOrderIntents intent,
    @JsonProperty("payer")
    PayPalPayer payPalPayer,
    PayPalOrderStatus status
    ) {
   }

在此回复中我们可以获取付款人信息

{
  "email_address": "[email protected]",
  "name": {
    "given_name": "name",
    "surname": "surname"
  },
 "phone": {
    "phone_type": "HOME",
    "phone_number": 354678768
 },
 "birth_data": "2023-03-01"
}

我在代码中所做的是使用 Java 记录类型映射整个 PayPal API 响应和请求数据,这可以使用 TypeScript 或任何其他语言完成。

© www.soinside.com 2019 - 2024. All rights reserved.