का उपयोग कर एक पट्टी टोकन से चार्ज राशि प्राप्त करना लक्ष्य: मेरे पास एक HTML पृष्ठ है जिसमें दो अलग-अलग आइटम हैं जिन्हें आप खरीद सकते हैं। एक $ 5 है और दूसरा $ 10 है। मैं भुगतान संसाधित करने के लिए पट्टी का उपयोग कर रहा हूँ। जब पट्टी भुगतान टोकन बनाता है और मेरे process_charge.php को सबमिट करता है तो मैं POST के माध्यम से सबमिट किए गए डेटा से चार्ज राशि खींचना चाहता हूं। तो मैं Stripe_Charge::create()
पर कॉल करने के लिए उस राशि का उपयोग कर सकता हूं।पट्टी एपीआई
समस्या: राशि मेरे PHP फॉर्म में जमा नहीं की जा रही है और मुझे यकीन नहीं है कि इसे कैसे प्राप्त किया जाए।
मेरा अस्थायी समाधान: प्रत्येक आइटम के लिए एक अलग PHP फॉर्म मैं बेच रहा हूं। फिर हर नए आइटम के लिए एक नया PHP फार्म !!! नहीं आदर्श
मैं वर्तमान में यहां सूचीबद्ध एम्बेडेड प्रपत्र विधि का उपयोग कर रहा हूँ: https://stripe.com/docs/tutorials/checkout
मेरा आदेश पेज इस तरह दिखता है।
<div class="payment-options">
<form action="process_card.php" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_PUBLIC_KEY_FOR_TESTING"
data-amount="1000"
data-name="Nice Lint"
data-description="High quality belly button lint."
data-image="images/nice-lint.svg"
data-panel-label="Checkout {{amount}}"
data-label="Pay with Credit Card"
data-billing-address="true"
data-shipping-address="true">
</script>
</form>
</div>
तो यह बहुत अच्छा काम करता है। यह ग्राहक की जानकारी, उनके शिपिंग/बिलिंग पते और उनके क्रेडिट कार्ड के विवरण लेता है। फिर यह चार्ज टोकन उत्पन्न करता है और process_card.php
पर सबमिट करता है। वहाँ मैं टोकन लेने के लिए और कुछ इस तरह कर सकते हैं:
if ($_POST) {
Stripe::setApiKey("sk_test_SECRET_KEY_FOR_TESTING");
try {
if (!isset($_POST['stripeToken']))
throw new Exception("The Stripe Token was not generated correctly");
Stripe_Charge::create(array("amount" => '1000'],
"currency" => "usd",
"card" => $_POST['stripeToken']));
}
catch (Exception $e) {
$error = $e->getMessage();
}
}
यहाँ मैं टोकन कि POST
के माध्यम से प्रस्तुत की गई थी और उस बंद भेजने उनके एपीआई का उपयोग कर पट्टी करने के लिए ले लो। राशि, मुद्रा, और कार्ड टोकन आवश्यक फ़ील्ड हैं। आप देख सकते हैं कि टोकन POST
डेटा से खींचा जा रहा है लेकिन मुझे राशि के लिए एक शाब्दिक स्ट्रिंग भेजनी है। यह सब ठीक और बेवकूफ है जब तक कि मेरे पास एक से अधिक उत्पाद/सेवा नहीं है और मेरे पास अलग-अलग रूप हैं जो टोकन उत्पन्न करते हैं और उन्हें process_card.php
पर भेजते हैं। तब वह शाब्दिक स्ट्रिंग अब खुश नहीं दिख रही है। उसका बेवकूफ मुस्कुराहट उसके बेवकूफ चेहरे से मिटा दिया गया है।
तो वैसे भी, मैंने यह देखने के लिए सभी POST
डेटा की जांच की है कि सबमिट किए गए फ़ील्ड में से कोई राशि कितनी है, इसलिए मैं इसे पास कर सकता हूं। तो मैं सिर्फ देखने के लिए प्रस्तुत किया गया था एक छोटे से पाश किया:
foreach ($_POST as $key => $value) {
echo "key: " . $key . " - " . $value . "<br>";
}
और यह मुझे इस देता है:
key: stripeToken - tok_youShouldDefinitelyPostThisTokenOnAPublicWebsite
key: stripeEmail - [email protected]
key: stripeBillingName - asdf
key: stripeBillingAddressLine1 - asdf
key: stripeBillingAddressZip - 12345
key: stripeBillingAddressCity - Schenectady
key: stripeBillingAddressState - NY
key: stripeBillingAddressCountry - United States
key: stripeBillingAddressCountryCode - US
key: stripeShippingName - asdf
key: stripeShippingAddressLine1 - asdf
key: stripeShippingAddressZip - 12345
key: stripeShippingAddressCity - Schenectady
key: stripeShippingAddressState - NY
key: stripeShippingAddressCountry - United States
key: stripeShippingAddressCountryCode - US
कोई राशि। ओह। इसलिए एपीआई दस्तावेज़ों को देखने के लिए कि क्या मुझे कोई समाधान मिल सकता है या नहीं। सबसे नज़दीकी चीज़ जो मुझे मिल सकती थी वह Stripe_Charge::retrieve({CHARGE_ID});
थी जो 0 मिलीथी। हालांकि यह केवल सफलतापूर्वक संसाधित शुल्कों पर लागू होता है।
तो मैं अटक गया हूं। इसे समझ नहीं सकता। सबसे अच्छा समाधान जो मैं आ सकता था, उसमें एम्बेडेड फॉर्म के अंदर <input type="hidden" name="amt" value="1000" />
लाइन जोड़ रहा था, इसलिए मैं $_POST['amt']
के माध्यम से राशि खींच सकता था। इसके साथ समस्या यह है कि मुझे कोई जानकारी नहीं है कि यह पीसीआई अनुपालन है या नहीं। पट्टी साइट/एपीआई/डॉक्स पर कई स्थानों पर वे आपको अपने फॉर्म में नाम फ़ील्ड्स शामिल न करने के लिए कहते हैं ताकि आप अपनी साइट पर पृष्ठ से पृष्ठ पर संवेदनशील जानकारी नहीं दे रहे हैं, इसलिए मुझे "क्षमा से बेहतर सुरक्षित" लगता है। क्या इस या कुछ बेहतरीन अभ्यासों को संभालने का कोई वैकल्पिक तरीका है, मुझे पता नहीं है?
** क्षमा करें यह इतना लंबा था। मैंने वास्तव में जितना प्रयास किया उतना प्रयास किया क्योंकि मैं इसे स्वयं हल करने की कोशिश कर सकता था और मैं जितना संभव हो उतना जानकारी प्रदान करना चाहता था।
यह भी सोच रहा था, उनके चेकआउट उदाहरण में हार्डकोड की मात्रा है। राशि के साथ एक छिपे हुए क्षेत्र के साथ एक ही चीज़ करने के लिए देख रहे हैं लेकिन मदद नहीं कर सकते हैं लेकिन लगता है कि यह गलत और असुरक्षित है, लेकिन संभवतः मुझे – Carlton