2

私はこのコードを持っています:

$cancel_payment = UpdateRecurringPaymentsProfile( $paypal_profileid , 'Cancel' );

function UpdateRecurringPaymentsProfile( $user_id, $method  )
{
    //$user_id is the profile ID returned in the CreateRecurringPaymentsProfile response.
    $nvpstr = "&profileid=".$user_id;
    $nvpstr .= "&PROFILESTATUS=".$method;
    $nvpstr .= "&ACTION=Cancel";
    $resArray = hash_call( "UpdateRecurringPaymentsProfile" , $nvpstr );
    return $resArray;
}

function hash_call($methodName,$nvpStr)
{
        //declaring of global variables
        global $API_Endpoint, $version, $API_UserName, $API_Password, $API_Signature;
        global $USE_PROXY, $PROXY_HOST, $PROXY_PORT;
        global $gv_ApiErrorURL;
        global $sBNCode;

        //setting the curl parameters.
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$API_Endpoint);
        curl_setopt($ch, CURLOPT_VERBOSE, 1);

        //turning off the server and peer verification(TrustManager Concept).
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_POST, 1);
        
        //if USE_PROXY constant set to TRUE in Constants.php, then only proxy will be enabled.
       //Set proxy name to PROXY_HOST and port number to PROXY_PORT in constants.php 
        if($USE_PROXY)
            curl_setopt ($ch, CURLOPT_PROXY, $PROXY_HOST. ":" . $PROXY_PORT); 

        //NVPRequest for submitting to server
        $nvpreq="METHOD=" . urlencode($methodName) . "&VERSION=" . urlencode($version) . "&PWD=" . urlencode($API_Password) . "&USER=" . urlencode($API_UserName) . "&SIGNATURE=" . urlencode($API_Signature) . $nvpStr . "&BUTTONSOURCE=" . urlencode($sBNCode);

        // var_dump($nvpreq);
        //setting the nvpreq as POST FIELD to curl
        curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq);

        //getting response from server
        $response = curl_exec($ch);

        //convrting NVPResponse to an Associative Array
        $nvpResArray=deformatNVP($response);
        $nvpReqArray=deformatNVP($nvpreq);
        $_SESSION['nvpReqArray']=$nvpReqArray;

        if (curl_errno($ch)) 
        {
            // moving to display page to display curl errors
              $_SESSION['curl_error_no']=curl_errno($ch) ;
              $_SESSION['curl_error_msg']=curl_error($ch);

              //Execute the Error handling module to display errors. 
        } 
        else 
        {
             //closing the curl
            curl_close($ch);
        }

        return $nvpResArray;
    }

私はあなたに私のコードの断片を見せているだけです。

このコードはエラーを返しません。問題は、ペイパルダッシュボード(サンドボックスを使用しています)で[事前承認済みの支払い]を確認すると、ステータスがキャンセル済みとして表示されず、まだアクティブであるということです。つまり、私のコードが間違っているか、何かが間違っています。

PayPalで定期支払いのキャンセルを実装する方法を教えてもらえますか?

4

2 に答える 2

2

定期支払いをキャンセルするには、ManageRecurringPaymentsProfileStatus API オペレーションを使用し、アクションを次のように設定する必要があります。Cancel

于 2012-10-17T13:14:42.427 に答える