2013-05-30 236 views
0

我在我的網站上設置了一個支付系統,其工作方式如下。Paypal API待付款

買方購買物品我做一個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獲取買家郵寄地址嗎?

感謝

回答

1

嘗試GetTransactionDetails API調用來代替。如果您提交了DoExpressCheckoutPayment呼叫,您將獲得一個可用於查找付款的交易ID。回覆將告訴您PayPal內的交易狀態,併爲您提供送貨地址(如果在原始交易中提供或請求)。

交易ID不會過期。

雖然我不確定自己的流程是否100%清晰。您是否將交易視爲授權處理?

+0

作爲直接購買處理交易,但取決於賣家貝寶設置,它可能需要授權,因此等待 –

+0

我讀了一些其他問題,transactionID在3小時後過期 –

+0

我需要IPN監聽器嗎? –