программирование PayPal - PullRequest
       7

программирование PayPal

4 голосов
/ 15 февраля 2011

Прежде всего, я опытный в PHP:)

Но я новичок в Paypal :) Итак ... Как я могу заставить отдельные предметы покупать кнопки автоматически? Примерно так: я сделал CMS, чтобы я мог добавлять новые предметы для продажи. Но каждый раз, когда я добавляю предмет, я должен идти в Paypal, чтобы создать этот предмет, чтобы его можно было купить ... Есть ли способ сделать это автоматически? Таким образом, когда я добавляю новый товар, его можно просто купить ... Есть ли для этого решение Paypal? Что-то в API?

Спасибо!

1 Ответ

3 голосов
/ 15 февраля 2011

Если у вас есть учетная запись продавца, вы можете использовать API PayPal NVP для полной обработки платежей с сервера.Я разработал несколько таких систем.Документация в порядке, но есть некоторые важные моменты, где вы можете просто потеряться.

Это пример одного из моих методов платежного объекта, он использует API PayPal и возвращает код ответа:

// this line gets a query string out of the posted payment data
$details = $this->___prepare_for_paypal($details);
if (!$details)
    return false;

$API_USERNAME = 'USERNAMEHERE';
$API_PASSWORD = 'PASSWORDHERE';
$API_CERTIFICATE = '/usr/web/paypal/cert_key_pem';
$API_SIGNATURE = '';
$API_ENDPOINT = 'https://api.paypal.com/nvp';
$PAYPAL_URL = 'https://www.paypal.com/webscr&cmd=_express-checkout&token=';
$VERSION = '51.0';

//setting the curl parameters.
$ch = curl_init();

curl_setopt($ch, CURLOPT_SSLCERT, $API_CERTIFICATE);
curl_setopt($ch, CURLOPT_URL,$API_ENDPOINT);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
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);

//NVPRequest for submitting to server
$nvpreq="METHOD=doDirectPayment&VERSION=".urlencode($VERSION)."&PWD=".urlencode($API_PASSWORD)."&USER=".urlencode($API_USERNAME).$details; 

//setting the nvpreq as POST FIELD to curl
curl_setopt($ch,CURLOPT_POSTFIELDS,$nvpreq);
//getting response from server
$response = curl_exec($ch);
//convrting NVPResponse to an Associative Array
$nvpResArray=$this->___deformat_NVP($response);
// check the API response array.  ACK will contain the word 'Success' if everything went through ok
$ack = strtoupper($nvpResArray["ACK"]);
// if we get no love from paypal, stick the transaction into the DB for reference 
if($ack=="FAILURE") {
    $err_details = addslashes(serialize($nvpResArray));
    $err_details .= '||||'.addslashes($nvpreq);
    $sql = 'INSERT INTO payment_errors (time, user_id, details) VALUES ('.time().','.(user::export()->id ? user::export()->id : '0').',"'.$err_details.'")';
    db::update($sql);
    if (isset($nvpResArray['L_LONGMESSAGE0']))
        $this->_data['error_message'] = $nvpResArray['L_LONGMESSAGE0'];
    if (isset($nvpResArray['L_LONGMESSAGE0']))
        $this->_data['error_code'] = $nvpResArray['L_ERRORCODE0'];
    return false;
}

return $nvpResArray['TRANSACTIONID'];
...