php - Paypal API 待处理付款

标签 php mysql api paypal express-checkout

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

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

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

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

$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 小时,则 token 无效。所以这给我留下了 2 个查询

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

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

谢谢

最佳答案

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

交易 ID 不会过期。

不过,我不确定我是否 100% 了解您的流程。您是否作为授权处理交易?

关于php - Paypal API 待处理付款,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16835993/

相关文章:

PHP 获取输入、单选、选择数据并插入到 MySQL 表中

php - 如何在Mysql中更新和插入多行

MySql select unique with sum 产生奇怪的结果

node.js - 带有 header 的 Node 获取 API GET

api - 获取基于 Board 的卡片列表 - Trello API

php - 如何确定某个数组列的最大长度?

javascript - ajax 调用后无法提醒 json 对象

php - Codeigniter Framework 中的语言问题

php - 为什么查询不插入记录

api - 声云API : Is it possible to get the 'playlist/set' data of my Favorites?