$ _POST ['txn_id']未设置为paypal订阅

时间:2013-10-29 11:40:25

标签: php paypal paypal-subscriptions

使用以下代码进行订阅。但是,我没有获得此事务的TXN_ID .....请帮助。出于取消目的,需要txn_id。

***Subscription HTML***
<form name="paypal" id="paypal" action="https://www.sandbox.paypal.com/cgi-bin/webscr">
<input type="hidden" name="cmd" value="_xclick-subscriptions">
<input type="hidden" name="business" value="XXXXXXXXX@gmail.com">
<input type="hidden" name="cmd" value="_xclick-subscriptions">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="a3" value="2.00">
<input type="hidden" name="p3" value="3">
<input type="hidden" name="t3" value="M">
<input type="hidden" name="return" value="subscription.php?sus=sus&cid=201"> 
<input type="hidden" name="cancel_return" value="subscription.php?can=can">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="rm" value="2">
<input type="hidden" name="item_name" value="Test Subscription">
<input type="hidden" name="item_number" value="Subscription">
<input type="hidden" value="Please go back to website ..." name="cbt">

使用以下代码取消&amp;退还金额       取消代码。

function change_subscription_status($tran_id,$amount ) {
$version        = urlencode('51.0');
$API_Password   = urlencode( '1111111111' );
$API_UserName   = urlencode( 'xxxxxxxxxxx_biz_api1.gmail.com' );
$transactionID  = urlencode( $tran_id );
$refundType     = urlencode('Partial');
$amount         = $amount;
$currencyID     = urlencode('USD');
$API_Signature  = urlencode( 'xxxxxxxxxxxxxxxxxxxxxxxxx' );
$nvpStr         = "&TRANSACTIONID=$transactionID&REFUNDTYPE=$refundType&AMT=$amount&CURRENCYCODE=$currencyID";
$api_request    = "METHOD=RefundTransaction&VERSION=$version&PWD=$API_Password&USER=$API_UserName&SIGNATURE=$API_Signature$nvpStr";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api-3t.sandbox.paypal.com/nvp');
curl_setopt($ch, CURLOPT_VERBOSE, 1);
// Turn 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);
// Set the request as a POST FIELD for curl.
curl_setopt($ch, CURLOPT_POSTFIELDS, $api_request);
// Get response from the server.
$httpResponse = curl_exec($ch);
curl_close( $ch );
if(!$httpResponse) {
exit("$methodName_ failed: ".curl_error($ch).'('.curl_errno($ch).')');
}
// Extract the response details.
return $httpResponseAr = explode("&", $httpResponse);
}

2 个答案:

答案 0 :(得分:0)

当您设置协议时,它不会给您txn_id,因为您在技术上没有获得任何协议。您需要设置一个IPN侦听器,这样当它为您收取费用时,您可以从中获取txn_id。然后你可以退款。

答案 1 :(得分:0)

对于可能遇到此问题的任何人,定期付款都不涉及交易ID。 Paypal recurring payment not retrieving Transaction ID