簡體   English   中英

php:paypal定期付款令牌無效

[英]php : paypal recurring payments token is invalid

我使用paypal php sdk:

https://github.com/paypal/merchant-sdk-php/blob/master/samples/RecurringPayments/CreateRecurringPaymentsProfile.php

快速結賬工作正常,但使用定期付款有問題:令牌無效。 據說,sdk中的152行

帶時間戳的標記,其值在第一次調用SetExpressCheckout的響應中返回。 為SetExpressCheckout請求中包含的每個結算協議調用CreateRecurringPaymentsProfile一次,並為每個調用使用相同的標記。 每個CreateRecurringPaymentsProfile請求都會創建一個定期付款配置文件。

但我不明白如何“在SetExpressCheckout中調用CreateRecurringPaymentsProfile”,有我的代碼:

public function createPayToken($returnUrl, $cancelUrl, $payModeData) {
    $itemName = $payModeData['name'];
    $order    = $payModeData['fee'];

    // $category = 'Digital';
    $category = 'Physical';

    $currencyCode = "USD";

    $paymentDetails = new PaymentDetailsType();

    $itemAmount = new BasicAmountType($currencyCode, $order);

    $itemDetails = new PaymentDetailsItemType();
    $itemDetails->Name = $itemName;
    $itemDetails->Amount = $itemAmount;
    $itemDetails->Quantity = 1;
    $itemDetails->ItemCategory = $category;

    $paymentDetails->OrderTotal = new BasicAmountType($currencyCode, $order);
    $paymentDetails->PaymentAction = 'Sale';
    $paymentDetails->PaymentDetailsItem[] = $itemDetails;

    $setECReqDetails = new SetExpressCheckoutRequestDetailsType();
    $setECReqDetails->PaymentDetails[] = $paymentDetails;
    $setECReqDetails->ReqConfirmShipping = 0;
    $setECReqDetails->NoShipping = 1;
    $setECReqDetails->AddressOverride = 0;
    $setECReqDetails->CancelURL = $cancelUrl;
    $setECReqDetails->ReturnURL = $returnUrl;

    $setECReqType = new SetExpressCheckoutRequestType();
    $setECReqType->SetExpressCheckoutRequestDetails = $setECReqDetails;

    $setECReq = new SetExpressCheckoutReq();
    $setECReq->SetExpressCheckoutRequest = $setECReqType;

    $paypalService = new PayPalAPIInterfaceServiceService();


    try {
        $setECResponse = $paypalService->SetExpressCheckout($setECReq);
        exit;
    } catch (Exception $ex) {
        echo $ex;
        exit;
    }



    if(isset($setECResponse)) {
        if($setECResponse->Ack =='Success') {
            $token = $setECResponse->Token;
            return $token;
        }
        var_dump($setECResponse);
        exit;
    }

    return false;
}

謝謝。

您只需確保在SetExpressCheckout請求中包含結算協議信息。 請查看此API調用示例,以使用Express Checkout完成定期付款配置文件

您會注意到SEC請求包含L_BILLINGTYPE0和L_BILLINGAGREEMENTDESCRIPTION0的參數。 您需要確保包含這些,否則您獲得的令牌對CreateRecurringPaymentsProfile無效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM