Paypal接受信用卡

时间:2014-01-07 11:13:03

标签: php paypal credit-card

我有一个网站,我有一个Paypal商业帐户(在英国注册)。 paypal与我的网站集成,工作得很好。当用户点击“继续付费”时,用户将被带到Paypal的网站(下面的屏幕截图)。现在我对这个程序唯一的问题是,客户必须首先使用Paypal帐户才能付款。我对Paypal提供的所有选项感到困惑(标准,专业,商家,什么不是),我不确定我做错了什么。

Screenshot http://ascensionnexus.com/Capture.jpg

请提供建议并解释我是否需要更改代码中的某些内容,让客户直接使用信用卡付款(在Paypal的网站上),而不是要求他们先打开Paypal帐户。

修改

我的确认订单页面上的HTML表单如下所示。

<form class="paypal" action="payments.php" method="post" id="paypal_form" target="_parent"> 
    <input type="hidden" name="cmd" value="_xclick" /> 
    <input type="hidden" name="no_note" value="1" />
    <input type="hidden" name="lc" value="US" />
    <input type="hidden" name="currency_code" value="USD" />
    <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynow_LG.gif:NonHostedGuest" />
    <input type="hidden" name="amount" value="<?php echo $productunit_price * 1.05;?>"  />
    <input type="hidden" name="quantity" value="<?php echo $product_quantity;?>"  />
    <input type="hidden" name="first_name" value="<?php echo $customer_first_name;?>"  />
    <input type="hidden" name="last_name" value="<?php echo $customer_last_name;?>"  />
    <input type="hidden" name="notify_url" value="http://mywebsite.com/payments.php"  />
    <input type="hidden" name="payer_email" value="<?php echo $customer_email;?>"  />
    <input type="hidden" name="item_name" value="<?php echo $service_name;?> (<?php echo $product_name;?>)" / >
    <input type="hidden" name="custom" value="<?php echo $orderalias.",".$_SESSION["user_id"];?>" / >
    <input type="image"  value="Submit Payment" src="imgs/proceed_btn.jpg"/>
</form>

payments.php中的php代码如下:

<?php
// PayPal settings
$paypal_email = 'mypaypalid@gmail.com';
$return_url = 'http://mywebsite.com/thankyou.php?payment=1';
$cancel_url = 'http://mywebsite.com/orders.php';
$notify_url = 'http://mywebsite.com/payments.php';

if (!isset($_POST["txn_id"]) && !isset($_POST["txn_type"])){
    // Firstly Append paypal account to querystring
    $querystring .= "?business=".urlencode($paypal_email)."&";  
    //loop for posted values and append to querystring
    foreach($_POST as $key => $value){
        $value = urlencode(stripslashes($value));
        $querystring .= "$key=$value&";
    }
    // Append paypal return addresses
    $querystring .= "return=".urlencode(stripslashes($return_url))."&";
    $querystring .= "cancel_return=".urlencode(stripslashes($cancel_url))."&";
    $querystring .= "notify_url=".urlencode($notify_url);   
    // Redirect to paypal IPN
    header('location:https://www.paypal.com/cgi-bin/webscr'.$querystring);
    exit();
}else{

    // read the post from PayPal system and add 'cmd'
    $req = 'cmd=_notify-validate';
    foreach ($_POST as $key => $value) {
        $value = urlencode(stripslashes($value));
        $value = preg_replace('/(.*[^%^0^D])(%0A)(.*)/i','${1}%0D%0A${3}',$value);// IPN fix
        $req .= "&$key=$value";
    }

    // assign posted variables to local variables
    $data['item_name']          = $_POST['item_name'];
    $data['item_number']        = $_POST['item_number'];
    $data['payment_status']     = $_POST['payment_status'];

    $data['payment_amount']     = $_POST['mc_gross'] * 0.95;
    $data['payment_currency']   = $_POST['mc_currency'];
    $data['txn_id']             = $_POST['txn_id'];
    $data['receiver_email']     = $_POST['receiver_email'];
    $data['payer_email']        = $_POST['payer_email'];

    $data['custom']             = $_POST['custom'];
    $separatedata = explode(",",$data["custom"]);
    $orderalias = $separatedata[0];
    $user = $separatedata[1];

    if($data['payment_status']=="Completed" ){  
        // do my stuff here         
    }else{
        // do my stuff here
    }       
}
?>

2 个答案:

答案 0 :(得分:0)

以下是如何开启 PayPal帐户可选:

转到http://www.paypal.com/并登录到您的帐户。

点击页面顶部附近的个人资料。 点击我的销售工具。 在“在线销售”下,单击“网站首选项”附近的更新。 在页面底部附近的“PayPal Account Optional”下选择On。 单击保存。 以下是关闭PayPal帐户可选项的方法:

转到http://www.paypal.com/并登录到您的帐户。 点击页面顶部附近的个人资料。 点击我的销售工具。 点击“网站偏好设置”附近的更新。 在页面底部附近的“PayPal Account Optional”下选择Off。 单击“保存”

答案 1 :(得分:0)

启用paypal pro业务并使用DoDirectPayment API。以下是简单的DoDirectPayment代码。

<security-constraint>
    <web-resource-collection>
        <web-resource-name>secure</web-resource-name>
        <url-pattern>/DATA/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>data</role-name>
    </auth-constraint>
</security-constraint>
<security-role>
    <role-name>data</role-name>
</security-role>