【问题标题】:Paypal API Pending PaymentsPaypal API 待付款
【发布时间】:2013-05-26 00:26:12
【问题描述】:

我在我的网站上设置了一个支付系统,其工作方式如下。

买家购买商品我执行 SetExpressCheckout 调用,返回成功或失败。成功后,我使用返回的令牌进行提交。提交成功后,我会将商品标记为已售出或减少数量。

我遇到的问题是,如果交易在没有待处理状态的情况下完成,但为了处理待处理的项目,我当前的程序有效,但为了处理待处理的项目,我执行以下操作

检查用户是否有任何待处理的项目

$sql = "SELECT * FROM basket_items WHERE status = 'pending' AND userID = '$user_id'";
$pending_items = queryArray($sql);

foreach($pending_items as $item){
    $token = $item['token'];
    //get status of the pending transaction
    $transaction_details = GetExpressCheckoutDetails($token);
    $trans_status = $EXP_CHECK_DETAILS['CHECKOUTSTATUS'];

    if($trans_status == 'completed'){
        MarkItemSold($item['id']);
    }
}

这个过程的问题是,如果有待授权动作的买家/卖家超过 3 小时,则令牌无效。所以这给我留下了 2 个查询

  1. 令牌过期后如何处理已完成的交易而不尝试再次购买该商品?

  2. 我可以从 getTransactionDetails 中获取买家的邮寄地址吗?

谢谢

【问题讨论】:

    标签: php mysql api paypal express-checkout


    【解决方案1】:

    尝试调用 GetTransactionDetails API。如果您提交了 DoExpressCheckoutPayment 调用,您将获得可用于查找付款的交易 ID。响应将告诉您 PayPal 中的交易状态,并为您提供送货地址(如果在原始交易期间提供或请求)。

    交易 ID 不会过期。

    我不确定我是否 100% 清楚您的流程。您是否将交易作为授权处理?

    【讨论】:

    • 将交易作为直接购买处理,但根据卖家的贝宝设置,可能需要授权,因此待处理
    • 我在其他一些问题上读到 transactionID 在 3 小时后过期
    • 我需要一个 IPN 监听器吗?
    • PayPal 交易 ID 不会过期。如果您要使用 IPN 功能,则需要有一个脚本可以处理返回到 PayPal 的响应过程 - IPN 侦听器。我发现 IPN 非常方便。每笔交易完成后,您都会收到一条发送给您的帖子,您可以使用它来更新您的结果,而不是进行手动检查。
    猜你喜欢
    • 2016-03-07
    • 2011-09-16
    • 2013-08-29
    • 2018-04-03
    • 2013-08-14
    • 2013-09-04
    • 2012-04-05
    • 2012-03-13
    • 2017-07-13
    相关资源
    最近更新 更多