Php Paypal API待付款
我已经在我的网站上设置了一个支付系统,其工作原理如下 买家购买商品时,我会打一个SetExpressCheckout电话,返回成功或失败。成功后,我使用返回的令牌进行提交。在提交成功后,我将该商品标记为已售出或扣除数量 我遇到的问题是,如果事务在没有挂起状态的情况下完成,则我的当前过程可以工作,但为了处理挂起的项目,我执行以下操作 检查用户是否有任何挂起的项Php Paypal API待付款,php,mysql,api,paypal,express-checkout,Php,Mysql,Api,Paypal,Express Checkout,我已经在我的网站上设置了一个支付系统,其工作原理如下 买家购买商品时,我会打一个SetExpressCheckout电话,返回成功或失败。成功后,我使用返回的令牌进行提交。在提交成功后,我将该商品标记为已售出或扣除数量 我遇到的问题是,如果事务在没有挂起状态的情况下完成,则我的当前过程可以工作,但为了处理挂起的项目,我执行以下操作 检查用户是否有任何挂起的项 $sql = "SELECT * FROM basket_items WHERE status = 'pending' AND userI
$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小时,则令牌无效。这就给我留下了两个问题
谢谢请改用GetTransactionDetails API调用。如果您提交了DoExpressCheckoutPayment呼叫,您将获得一个交易ID,您可以使用该ID查找付款。响应将告诉您PayPal内交易的状态,并提供您的发货地址(如果在原始交易期间提供或请求) 事务ID未过期
我不确定我是否100%清楚你的流程。您是否将交易作为授权进行处理?将交易作为直接购买进行处理,但根据卖家的paypal设置,可能需要授权,因此Pending我阅读了一些其他问题,即transactionID在3小时后过期。我是否需要IPN侦听器?paypal交易ID不会过期。如果您打算使用IPN功能,则需要有一个脚本,该脚本可以处理返回PayPal的响应过程—IPN侦听器。我发现IPN非常方便。每次交易完成后,您都会收到一封发送给您的邮件,您可以使用它来更新您的终端,而不是进行手动检查。