2013-02-21 66 views
1

我不知道它是否是可以实现的信用卡支付:使用贝宝接受网站

我要接受我自己的网站用户的信用卡支付。假设我有一种捕获信用卡信息的形式,理想情况下,我想将客户端的所有信息(根本不通过服务器)发布到PayPal进行处理,并让Paypal处理付款并重定向回我的网站。

由于PCI合规性,所有信用卡信息将永远不会通过我的服务器。我可以从PayPal获得的唯一一件事是付款的成功或失败,以及在网站上完成交易所需的一些非敏感信息。

我发现Payflow Pro可能是一个解决方案,但我不知道如何构建nvp请求并重定向到PayPal。在服务器端使用SDK很简单,但不幸的是我无法使用它。

任何人都可以帮助我解决这个问题吗?

由于提前, LD

回答

0

我正在使用此代码。

$infos = array(
      'METHOD' => 'DoDirectPayment', 
      'USER' => $paypal_pros_username, 
      'PWD' => $paypal_pros_password, 
      'SIGNATURE' => $paypal_pros_signature, 
      'VERSION' => urlencode('115'), 
      'PAYMENTACTION' => $_POST['paypal_pros_transaction_type'], 
      'IPADDRESS' => $_SERVER['REMOTE_ADDR'], 
      'CREDITCARDTYPE' => $_POST['creditCardType'], 
      'ACCT' => $_POST['creditCardNumber'], 
      'EXPDATE' => $_POST['expDateMonth'].$_POST['expDateYear'], 
      'CVV2' => $_POST['cvv2Number'], 
      //'EMAIL' => $_POST['email'], 
      'FIRSTNAME' => $_POST['firstName'], 
      'LASTNAME' => $_POST['lastName'], 
      'STREET' => $_POST['address1'], 
      'CITY' => $_POST['city'], 
      'STATE' => $_POST['state'],      
      'ZIP' => $_POST['zip'], 
      'COUNTRYCODE' => $_POST['country'], 
      'AMT' => $_POST['amount'], 
      'CURRENCYCODE' => $_POST['PayPal_pros_curency'], 
      'DESC' => $_POST['paypal_pro_desc'], 
      'NOTIFYURL' => 'https://website.com/ipn.php' 
      ); 

// Loop through $infos array to generate the NVP string. 
$nvp_string = ''; 
foreach($infos as $var=>$val) 
{ 
    $nvp_string .= '&'.$var.'='.urlencode($val);  
} 

// Send NVP string to PayPal and store response 
// Set the curl parameters. 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $strPurchaseURL); 
    curl_setopt($ch, CURLOPT_VERBOSE, 1); 
    // Turn off the server and peer verification (TrustManager Concept). 
    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, $nvp_string); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 


// Get response from the server. 
$result = curl_exec($ch); 

// Parse the API response 
parse_str($result, $output); 

    if(array_key_exists('ACK', $output)){ 

print_r($output); 

      if($output['ACK']=="Success"){ 
       //Success Email or save data in database etc... 

       } 
      elseif($output['ACK']=="Failure"){ 
       //Failure Email or send any error etc... 

       } 
      else { 
       echo 'There is any error! Please go back and try again.'; 
       } 
     } 
    else { 
     echo 'There is any error! Please go back and try again.'; 
     }