如何通过Paypal API取消定期付款,并使用IP在我的网站上获得即时通知

时间:2014-05-17 07:55:37

标签: paypal paypal-ipn

我希望该用户可以通过Paypal的API取消定期付款,并使用PAYpal IPN获取即时通知。 我怎样才能实现即时通知。

我使用以下代码取消定期付款: -

$ cancel_payment = change_subscription_status($ paypal_profileid,'取消');

function change_subscription_status( $profile_id, $action ) {

$api_request = 'USER=' . urlencode( 'api_username' )
            .  '&PWD=' . urlencode( 'api_password' )
            .  '&SIGNATURE=' . urlencode( 'api_signature' )
            .  '&VERSION=76.0'
            .  '&METHOD=ManageRecurringPaymentsProfileStatus'
            .  '&PROFILEID=' . urlencode( $profile_id )
            .  '&ACTION=' . urlencode( $action )
            .  '&NOTE=' . urlencode( 'Profile cancelled at store' );

$ch = curl_init();
   curl_setopt( $ch, CURLOPT_URL, 'https://api-3t.sandbox.paypal.com/nvp' );
curl_setopt( $ch, CURLOPT_VERBOSE, 1 );

// Uncomment these to turn off server and peer verification
// 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 );

// Set the API parameters for this transaction
curl_setopt( $ch, CURLOPT_POSTFIELDS, $api_request );

// Request response from PayPal
$response = curl_exec( $ch );

// If no response was received from PayPal there is no point parsing the response
if( ! $response )
    die( 'Calling PayPal to change_subscription_status failed: ' . curl_error( $ch ) . '(' . curl_errno( $ch ) . ')' );

curl_close( $ch );

// An associative array is more usable than a parameter string
parse_str( $response, $parsed_response );

return $parsed_response;
 }

1 个答案:

答案 0 :(得分:1)

我强烈建议您查看IPN documentation以完全熟悉它。

您可以在大多数情况下在API调用中定义IPN网址,但是,定期付款不会有效。您需要确定它configured in your PayPal account profile