Nasıl Kullanıcıların ödeme engellemeyi durdurabilirim?

3 Cevap php

Ben elektronik olarak görüntülenen veri için ödeme toplamak için paypal kullanan bir site var. Değişkenler paypal aracılığıyla URL ile geçti olamaz (ya da ben onları işe almak değil) bu yüzden öğe sayısını geçmek için çerezleri kullandık. Ancak, kurnaz kullanıcı, çerez yazma bölümünden sonra, doğrudan adres çubuğuna paypal yönlendirme URL'sini girin ve ücretsiz e-verileri alabilir. Paypal atlama. Bunu nasıl etrafında alabilirsiniz?

İşte bazı kod olduğunu. Sen Ben düz çerez yazı (pre_contact.php) ve paypal yönlendirme URL (step.php) geçerek zor kullanıcı için yapmaya çalıştım göreceksiniz.

//pre_contact.php
<?PHP
global $id;
setcookie("property", $id, time()+1800);
echo "<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=contact.php\">";
?>

//contact.php - paypal pay button
echo "<form action='https://www.paypal.com/cgi-bin/webscr' method='post'>";
echo "<input type='hidden' name='cmd' value='_s-xclick'>";
echo "<input type='hidden' name='hosted_button_id' value='156320'>";
echo "<input type='image'
src='https://www.paypal.com/en_GB/i/btn/btn_paynowCC_LG.gif' border='0' name='submit' 
alt='Click to pay'>";
echo "<img alt='' border='0' src='https://www.paypal.com/en_GB/i/scr/pixel.gif'  width='1' height='1'>";
echo "</form>";

//step.php - paypal redirect on successful payment
<?PHP
require("generate_url.php");
?>

//generate_url.php - This generates a unique URL so the info can only be accessed once
<?PHP
if (eregi("generate_url.php", $_SERVER['SCRIPT_NAME'])) {
Header("Location: index.php"); die();
}
$token = md5(uniqid(rand(),1));
setcookie("token", $token, time()+4);
$cwd = substr($_SERVER['PHP_SELF'],0,strrpos($_SERVER['PHP_SELF'],"/"));
Header("Location: $cwd/get_file.php?q=$token"); die();
?>

//get_file.php - displays the file after payment
$qtoken = $_GET['q'];
if ($qtoken===$_COOKIE["token"]){
$id=$_COOKIE["property"];
DISPLAY FILE HERE!!

Şimdiden teşekkürler

3 Cevap

Ne senin muhtemelen Paypal IPN (Anında ödeme bildirim) denir arıyor .. temelde Birisi size ne Sonra .. (sadece ve onlara bunu biliyorsun) belirlediğiniz bir script / url size .. Paypal mesajlar verilerden bir ürün satın Onlar gönderilen sonrası .. Bu noktada işlem geçerli olduğunu biliyorum gerçek ve biri tarafından sahte / taklit olmadığını onaylamak için paypal verilerinizi geri göndermek edilir.

Eğer geçerli bir ödeme haberdar olsun sonra, e-posta yoluyla bir indirme url göndermek, ya da htaccess auth gibi basit bir şey kullanarak küçük bir giriş / parola sistemi içine tüm bu şal gibi bir şey yapabilirim, ve gitmek için iyi ettik.

İyi şanslar.

Ben size kod işlem aslında başarılı ya da değil bitmiş olmadığını bilmenin bir yolu vardır, çünkü sen alıyorsun yaklaşımı ile tek bir adımda ne istediğinizi yapmak mümkün olacak sanmıyorum.

Ben otomatik olarak onlar için ödenen dosyaya yollayın yoksa yukarıdaki yaklaşım çalışacak tek yolu olduğunu düşünüyorum.

Bunun yerine, onlar Paypal yoluyla işlem doğrulamak ve daha sonra onları bir indirme linki e-posta için beklemek zorunda.


Muhtemelen tüm Paypal API kullanılarak otomatik olarak yapılabilir. Ben Paypal API aşina değilim ama böyle bir şey çalışması gerekir.

  1. Kullanıcı sizden bir şey satın karar verir
  2. Eğer Paypal üzerinden kullanıcıyı gönderir ve, muhtemelen, işlem id çeşit üreten bir hareketi başlatmak.
  3. Kullanıcı öder (veya ödeme iptal ve / veya karar)
  4. Kullanıcı sitenize geri geliyor
  5. Sen işlem id almak ve ödeme başarılı olduğunu doğrulamak
  6. Ödeme başarılı olursa, kullanıcı onlar için ödenen şeyler vermek.


Paypal API Reference

Diğer sorular Paypal IPN hakkında bilgi bol, http://stackoverflow.com/questions/1115822/setting-up-paypal-to-connect-to-script ile başlar