Pertanyaan Tombol PayPal dengan 'min_amount' AND 'set_customer_limit'


Saya telah membuat a tidak dihosting Tombol PayPal dengan input teks untuk memungkinkan pengguna menentukan jumlah yang harus dibayar. Ini adalah tombol berlangganan.

Sekarang masalahnya adalah harus ada jumlah minimum untuk membayar, katakanlah 101 (CHF - franc Swiss).

Menurut dokumen dari PayPal HTML-Variabel Saya memiliki kemungkinan untuk menambahkan vars berikut dalam masukan tersembunyi ke formulir saya untuk membuatnya bekerja.

  • set_customer_limit dengan nilai max_limit_own
  • min_amount dengan nilai 101

Itu set_customer_limit bekerja tetapi tidak min_amount. Setiap jumlah diterima.

Saya membuka tiket di dukungan teknis, tetapi tidak ada balasan sampai sekarang.

Inilah formulir saya:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <input type="hidden" name="cmd" value="_xclick-subscriptions">
    <!-- //... -->
    <input type="hidden" name="cancel_return" value="mydomain.com/cancel">
    <input type="hidden" name="return" value="mydomain.com/paid">
    <input type="hidden" name="token" value="<?php echo $token; ?>">
    <input type="hidden" name="src" value="1">
    <input type="text" name="a3" value="101.00">
    <input type="hidden" name="p3" value="1">
    <input type="hidden" name="t3" value="Y">
    <input type="hidden" name="currency_code" value="CHF">
    <input type="hidden" name="bn" value="PP-SubscriptionsBF:btn_subscribeCC_LG.gif:NonHostedGuest">
<!-- the concerned inputs -->
    <input type="hidden" name="set_customer_limit" value="max_limit_own">
    <input type="hidden" name="min_amount" value="101">
<!-- ---- -->
    <input type="image" src="https://www.paypalobjects.com/de_DE/CH/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal.">
    <img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
</form>

Untuk saat ini, saya hanya memvalidasi jumlah minimum dengan JavaScript, yang tidak benar-benar aman ...


EDIT

Sebagai ide, saya bisa mengimplementasikan formulir lain (kirimkan dengan AJAX, onchange, onkeyup, apa saja), yang menetapkan jumlah minimum yang diberikan oleh pengguna sebelum PayPal-form dan memasukkannya ke dalam input PayPal kemudian (disetel untuk disembunyikan lagi) ):

<input type="hidden" name="a3" value="<?php echo $_POST['pre_min_amount'] ?>">

Dengan begitu saya bisa memvalidasi jumlah minimum dengan PhP, sebelum mengirimkan formulir PayPal. Tapi itu bukan cara yang bersih bagiku. Sungguh Senang jika ada yang bisa memberi saya petunjuk!


32
2018-05-04 08:33


asal


Jawaban:


Jawaban dukungan teknis PayPal adalah: Tidak, itu tidak mungkin! 

(Tanggal menjawab adalah 05/02/2015) Semoga ini akan mungkin di masa depan. Jika ya, tolong posting jawaban Anda!


Saya akan sangat sarankan menggunakan API PayPal untuk hal semacam ini (termasuk membuat akun pengembang, melalui dokumen, dll).

Jadi ini "solusi" adalah solusi cepat & kotor.


Pertama, tambahkan formulir kecil (saya menyebutnya min_amount -bentuk untuk saat ini) ke halaman (memberi tahu pengguna, dia harus menetapkan jumlah terlebih dahulu):

<form id="min_amount" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
    <input type="text" id="pre_min_amount" name="pre_min_amount" value="101">
    <input type="submit" value="Set min. Amount">
</form>

Kemudian, tambahkan seluruh formulir PayPal ke variabel PHP dengan NowDoc dan tambahkan nilai yang diposting dari min_amount-bentuk ke a3 memasukkan:

$min_amount = 0;
$payPalForm = <<<SOME
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <!-- //... -->
    <input type="hidden" name="a3" value="$min_amount">
</form>
SOME;

Setelah mengirimkan, periksa apakah jumlah minimum benar dan kemudian hanya menunjukkan formulir PayPal:

if (isset($_POST['pre_min_amount']) && is_numeric($_POST['pre_min_amount']) && floatval($_POST['pre_min_amount']) >= 101) {
    $min_amount = htmlspecialchars($_POST['pre_min_amount']);
    echo $payPalForm;
}

Seperti yang saya katakan, ini cepat dan kotor (tidak ada waktu lagi untuk proyek ini), tetapi Anda memastikan untuk memvalidasi jumlah minimum di sisi server, bukan hanya dengan Javascript. Anda juga bisa mengirimkan min_amount-bentuk dengan panggilan AJAX, tetapi kemudian kembalinya panggilan ini ada di sisi klien, yang juga tidak terlalu aman. (Tentu Anda juga)

BTW, saya tidak bangga dengan solusi ini sama sekali, tapi kadang-kadang, kehidupan programmer sulit dan saya yakin semua Anda coders di luar sana harus melakukan beberapa kode q & d entah bagaimana, di suatu tempat; -) ...


Memperbarui:  08/05/2015

Semua tergantung pada negara tempat akun yang bersangkutan terdaftar. Layanan penuh yang dijamin oleh PayPal hanya di AS dan Kanada


29
2018-05-05 13:04