gpt4 book ai didi

php - 如何从 CreateRecurringPaymentsProfile paypal api 获取交易 ID

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:15 25 4
gpt4 key购买 nike

我正在尝试使用 Paypal 创建定期付款。为此,我正在使用此功能,

function CallShortcutExpressCheckout( $paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL) 
{
$nvpstr="&AMT=". $paymentAmount;
$nvpstr = $nvpstr . "&PAYMENTACTION=" . $paymentType;
$nvpstr = $nvpstr . "&BILLINGAGREEMENTDESCRIPTION=".urlencode($_SESSION['cart']['total_amount']['name']);
$nvpstr = $nvpstr . "&BILLINGTYPE=RecurringPayments";
$nvpstr = $nvpstr . "&RETURNURL=" . $returnURL;

$nvpstr = $nvpstr . "&INVNUM=" . $_SESSION['cart']['inv'];

$nvpstr = $nvpstr . "&CANCELURL=" . $cancelURL;
$nvpstr = $nvpstr . "&CURRENCYCODE=" . $currencyCodeType;

$_SESSION["currencyCodeType"] = $currencyCodeType;
$_SESSION["PaymentType"] = $paymentType;

$resArray=hash_call("SetExpressCheckout", $nvpstr);
$ack = strtoupper($resArray["ACK"]);
if($ack=="SUCCESS" || $ack=="SUCCESSWITHWARNING")
{
$token = urldecode($resArray["TOKEN"]);
$_SESSION['TOKEN']=$token;
}

return $resArray;
}

返回 token ,然后我使用此函数创建循环配置文件

function CreateRecurringPaymentsProfile()
{
$token = urlencode($_SESSION['TOKEN']);
$email = urlencode($_SESSION['email']);
$shipToName = urlencode($_SESSION['shipToName']);
$shipToStreet = urlencode($_SESSION['shipToStreet']);
$shipToCity = urlencode($_SESSION['shipToCity']);
$shipToState = urlencode($_SESSION['shipToState']);
$shipToZip = urlencode($_SESSION['shipToZip']);
$shipToCountry = urlencode($_SESSION['shipToCountry']);

$nvpstr="&TOKEN=".$token;
#$nvpstr.="&EMAIL=".$email;
$nvpstr.="&SHIPTONAME=".$shipToName;
$nvpstr.="&SHIPTOSTREET=".$shipToStreet;
$nvpstr.="&SHIPTOCITY=".$shipToCity;
$nvpstr.="&SHIPTOSTATE=".$shipToState;
$nvpstr.= "&DESC=".$_SESSION['cart']['total_amount']['name'];
$nvpstr.="&SHIPTOZIP=".$shipToZip;
$nvpstr.="&SHIPTOCOUNTRY=".$shipToCountry;
/*$nvpstr.="&PROFILESTARTDATE=".urlencode("2015-12-01T0:0:0");*/
$nvpstr .= "&PROFILESTARTDATE=".date("Y-m-d", mktime(0, 0, 0, date("m", time()), date("d", time()), date("Y", time())))."T00:00:00Z";
$nvpstr.="&BILLINGPERIOD=Year";
$nvpstr.="&BILLINGFREQUENCY=1";
$nvpstr.="&AMT=".$_SESSION['cart']['total_amount']['total'];
$nvpstr.="&CURRENCYCODE=USD";
$nvpstr.="&IPADDRESS=" . $_SERVER['REMOTE_ADDR'];

$resArray=hash_call("CreateRecurringPaymentsProfile",$nvpstr);
$ack = strtoupper($resArray["ACK"]);
return $resArray;
}

但它返回到 profile-id 而不是 transaction-id。我在某处读到我们必须使用 DoExpressCheckoutPayment 来完成付款。但随后从 paypal 中扣款 2 次。

1) 在执行 DoExpressCheckoutPayment 之后2) 创建循环配置文件

我在重复付款方面做错了什么?我只是想,首先我需要执行 expresscheckout 然后我需要创建定期配置文件并将开始日期设置为明年。所以第一笔金额将通过 DoExpressCheckoutPayment 扣除,然后从明年开始通过 recurring profile 扣除。

有没有更好的方法来使用快速结账进行定期付款?在 paypal 中使用 定期付款 太困惑了。

请帮我解决这个问题。提前致谢。

最佳答案

当您使用 token 值调用 CreateRecurringPaymentsProfile API 时,没有交易 ID 返回。引用https://developer.paypal.com/webapps/developer/docs/classic/api/merchant/CreateRecurringPaymentsProfile_API_Operation_NVP/ (CreateRecurringPaymentsProfile Response Message 部分)TRANSACTIONID 直接信用卡初始支付的交易ID。(不适用于PayPal方式)

如果您没有在 API 请求中设置 INITAMT 参数,CreateRecurringPaymentsProfile API 不会从买家那里扣款。在你的例子中。
2) 创建定期配置文件后,不会从买家那里扣除任何款项。1)做完DoExpressCheckoutPayment后,买家的钱会被扣掉。

一般只扣一次钱。

关于php - 如何从 CreateRecurringPaymentsProfile paypal api 获取交易 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31987740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com