开发者

paypal nightmare

I have included an example I am trying to test here but since I am new to paypal, and I have no idea how to debug the paypal, sandbox is not helping me much either :(

It looks like the payment has been processed and accepted, All I have to do now is update mysql table, on the line marked below just under "if($payment_amount==10.00&&$payment_currency=='GBP'){". I have tested my mysql on phpmyadmin and it works like a charm it's just something else may be wrong up here :(

Paypal Button

<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
    <input type="hidden" name="cmd" value="_xclick-subscriptions" />
    <input type="hidden" name="business"  value="[email]" />
    <input type="hidden" name="item_name"  value="New Subscription" />
    <input type="hidden" name="first_name"  value="<?php echo  $arr['user']['fname']; ?>" />
    <input type="hidden" name="last_name"  value="<?php echo  $arr['user']['lname']; ?>" />
    <input type="hidden" name="address1"  value="<?php echo  $arr['user']['add1']; ?>" />
    <input type="hidden" name="address2"  value="<?php echo  $arr['user']['add2']; ?>" />
    <input type="hidden" name="city"  value="<?php echo  $arr['user']['town']; ?>" />
    <input type="hidden" name="zip"  value="<?php echo  $arr['user']['postcode']; ?>" />
    <input type="hidden" name="email"  value="[client_email]" />
    <input type="hidden" name="currency_code"  value="GBP" />
    <input type="hidden" name="no_shipping" value="1" />
    <input type="image" src="http://www.paypal.com/en_US/i/btn/btn_subscribe_LG.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" />
    <input type="hidden" name="recurring" value="1" />  
    <input type="hidden" name="a3" value="10.00" />  
    <input type="hidden" name="p3" value="1" />
    <input type="hidden" name="t3" value="Y" />
    <input type="hidden" name="src" value="1" />
    <input type="hidden" name="sra" value="1" />
    <input type="hidden" name="item_number" value="<?php echo $arr['user']['id'] ?>" />
    <input type="hidden" name="return"  value="<?php echo site_url.'account/' ?>" />
    <input type="hidden" name="cancel_return"  value="<?php echo site_url.'account/' ?>" />
    <input type="hidden" name="notify_url"  value="<?php echo site_url.'account/ipn.php' ?>" />
</form>

Paypal IPN handler

<?php 
// UPDATED LINE BELOW
mail("[myemail]", "PP",'initiated', "From:support@paypal.com"); 
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';

foreach ($_POST as $key => $value) {
    $value = urlencode(stripslashes($value));
    $req .= "&$key=$value";
}

// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
// $fp = fsockopen ('ssl:/开发者_如何学编程/www.paypal.com', 443, $errno, $errstr, 30);
// $fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

$item_name              = $_POST['item_name'];
$item_number            = $_POST['item_number'];
$payment_status         = $_POST['payment_status'];
$payment_amount         = $_POST['mc_gross'];
$payment_currency       = $_POST['mc_currency'];
$txn_id                 = $_POST['txn_id'];
$receiver_email         = $_POST['receiver_email'];
$business               = $_POST['business'];
$payer_email            = $_POST['payer_email'];
// $payer_email             = $_POST['payer_email'];


if (!$fp) {
    // echo 'Error 101 23';
    // die();
} else {
    fputs ($fp, $header . $req);
    while (!feof($fp)) {
        $res = fgets ($fp, 1024);
        if (strcmp ($res, "VERIFIED") == 0) {
            $data['paypal_receivers_email']     = '[email]';
            if($payment_status=='Completed' && $receiver_email == $data['paypal_receivers_email'] &&$receiver_email){
                if($payment_amount==10.00&&$payment_currency=='GBP'){
                    //successfully// now update db :)// <== this is where im strugling it does not seem to come down here at all.
                }
            }
        // check the payment_status is Completed
        // check that txn_id has not been previously processed
        // check that receiver_email is your Primary PayPal email
        // check that payment_amount/payment_currency are correct
        // process payment
        }
        else if (strcmp ($res, "INVALID") == 0) {
        // log for manual investigation

        }
    }
    fclose ($fp);
}

?>


Try to debug, as I did:

In each step, put email() with details which came from paypal (by post) and others. Log (mail yourself) each success, error and it will give you your problem source. for example, put

 mail("yourmail@mail.com", "PP", $res, "From:support@paypal.com"); 

just after declaring your variable


Is site_url a constant?

<input type="hidden" name="return"  value="<?php echo site_url.'account/' ?>" />
<input type="hidden" name="cancel_return"  value="<?php echo site_url.'account/' ?>" />
<input type="hidden" name="notify_url"  value="<?php echo site_url.'account/ipn.php' ?>" />

If it is not you are missing a $ or a () if it's a function.

Have you double checked that the full url is being returned in the form html source? If it works in the browser it seems that paypal may not be getting the correct return url for IPN.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜