Stripe के लिए स्वचालित विवाद-प्रतिक्रिया प्रणाली, जिसमें साक्ष्य PDF शामिल हैं

Wikiprompt से, मुफ्त प्रॉम्प्ट विश्वकोश

@levelsio
योगदानकर्ता@levelsioXस्रोत

6 अप्रैल 2026

Stripe के लिए स्वचालित विवाद-प्रतिक्रिया प्रणाली, जिसमें साक्ष्य PDF शामिल हैं स्ट्राइप चार्जबैक-विवाद प्रणाली के लिए एक पूर्ण बिल्ड स्पेक: वेबहुक स्वचालित सबमिशन, उत्पाद स्क्रीनशॉट के साथ साक्ष्य PDF, एक CLI सिंक वर्कर, और एक मिनी एडमिन डैशबोर्ड।

संबंधित मीडिया

प्रॉम्प्ट सामग्रीसहेजें

🌐
स्ट्राइप के लिए एक ऑटो-डिस्प्यूट-रिस्पॉन्स सिस्टम बनाएं जो: 1. साझा साक्ष्य संग्रह (app/dispute_evidence.php) वेबहुक और सिंक वर्कर दोनों द्वारा उपयोग किए जाने वाले फ़ंक्शन वाली एक साझा फ़ाइल बनाएं। यह साक्ष्य तर्क की नकल से बचाता है। मुख्य फ़ंक्शन: - getDisputeUserPlan($user, $stripe) - स्ट्राइप API से उपयोगकर्ता की सदस्यता योजना खींचता है (सत्य का स्रोत, क्योंकि स्थानीय DB योजना फ़ील्ड रद्द होने पर साफ़ हो जाती है)। यदि स्ट्राइप कॉल विफल हो जाती है तो स्थानीय DB फ़ील्ड पर वापस आ जाता है। उत्पाद ID को योजना नामों में मैप करता है और मूल्य/अंतराल और रद्द स्थिति शामिल करता है। - collectDisputeEvidence($stripe, $user, $email, $charge, $photosDb) - सभी टेक्स्ट और फ़ाइल साक्ष्य एकत्र करता है, स्ट्राइप को सबमिट करने के लिए तैयार एक सरणी लौटाता है। - generateServiceDocPdf($stripe, $user, $email, $photos_done, $recent_photos, $total_amount_paid) - ग्राहक जानकारी, उपयोग सारांश, हाल की गतिविधि तालिका, और 6 तक वास्तविक उत्पाद छवियों (स्ट्राइप की 5MB फ़ाइल अपलोड सीमा के अंतर्गत रहने के लिए 500px चौड़ी / गुणवत्ता 75 पर JPEG में आकार बदली गई) के साथ एक PDF उत्पन्न करता है। स्ट्राइप फ़ाइल ID और कच्चा PDF डेटा दोनों लौटाता है। महत्वपूर्ण: स्थानीय DB पर भरोसा करने के बजाय स्ट्राइप चार्ज API से total_amount_paid खींचें (सफल, गैर-रिफंडेड चार्ज का योग) जो null/पुराना हो सकता है। 2. वेबहुक हैंडलर (stripe_webhook.php में) charge.dispute.created इवेंट पकड़ें। जब विवाद आता है: - स्ट्राइप से विवाद, चार्ज, और ग्राहक ऑब्जेक्ट प्राप्त करें - stripe_customer_id द्वारा स्थानीय डेटाबेस में उपयोगकर्ता खोजें - विवाद को disputes SQLite डेटाबेस में सहेजें (फ़ील्ड: dispute_id, charge_id, payment_intent_id, stripe_customer_id, user_id, email, amount, currency, reason, status, epoch_created, epoch_evidence_submitted, evidence_json, stripe_response, epoch_resolved, outcome) - सभी साक्ष्य एकत्र करने के लिए collectDisputeEvidence() कॉल करें (टेक्स्ट + फ़ाइल अपलोड) - $stripe->disputes->update($dispute_id, ['evidence' => $evidence]) के माध्यम से स्ट्राइप को साक्ष्य सबमिट करें - टेलीग्राम अधिसूचना भेजें कि नया विवाद आया है और साक्ष्य स्वतः सबमिट किया गया था डेटाबेस में विवाद परिणाम (जीत/हार) ट्रैक करने और परिणाम के साथ टेलीग्राम अधिसूचना भेजने के लिए charge.dispute.updated और charge.dispute.closed इवेंट भी पकड़ें। 3. स्ट्राइप को सबमिट किए गए साक्ष्य फ़ील्ड टेक्स्ट फ़ील्ड (स्ट्रिंग सीधे लिखें): - product_description - वर्णन करें कि उत्पाद/सेवा क्या है - customer_name / customer_email_address - स्ट्राइप ग्राहक ऑब्जेक्ट से - access_activity_log - विस्तृत उपयोग लॉग: साइनअप तिथि, किए गए आइटम/क्रियाओं की संख्या, अंतिम सक्रिय तिथि, सदस्यता योजना (स्ट्राइप से), प्लेटफ़ॉर्म, कुल भुगतान राशि (स्ट्राइप से), टाइमस्टैम्प के साथ हाल की गतिविधि - uncategorized_text - "हमें क्यों जीतना चाहिए" तर्क: ग्राहक ने X पर साइनअप किया, Y चीजें करते हुए सेवा का सक्रिय रूप से उपयोग किया, कुल भुगतान राशि, सेवा डिजिटल/तुरंत वितरित की गई थी, ग्राहक ने विवाद करने से पहले रिफंड के लिए हमसे कभी संपर्क नहीं किया - refund_policy_disclosure / cancellation_policy_disclosure - नीतियां कब प्रस्तुत की गईं (चेकआउट के दौरान, /legal पर हमेशा सुलभ) - refund_refusal_explanation / cancellation_rebuttal - उपयोग का प्रमाण और पूर्व संपर्क की कमी - service_date - चार्ज की तिथि (Y-m-d प्रारूप) फ़ाइल अपलोड फ़ील्ड (पहले $stripe->files->create(['purpose'=>'dispute_evidence', 'file'=>fopen($path,'r')]) के माध्यम से स्ट्राइप को फ़ाइल अपलोड करें, फिर लौटाई गई file_xxxxx ID पास करें): - receipt - इनवॉइस PDF को सीधे स्ट्राइप से खींचें ($stripe->invoices->retrieve($charge->invoice)->invoice_pdf), डाउनलोड करें और विवाद साक्ष्य के रूप में अपलोड करें - service_documentation - एक PDF उत्पन्न करें जिसमें: ग्राहक जानकारी अनुभाग, सेवा उपयोग सारांश, हाल की गतिविधि तालिका, और 6 तक वास्तविक उत्पाद छवियां/स्क्रीनशॉट जो ग्राहक को प्राप्त हुए। स्ट्राइप की 5MB सीमा के अंतर्गत रहने के लिए एम्बेड करने से पहले छवियों का आकार बदलें (500px चौड़ा, JPEG गुणवत्ता 75)। दोनों PDF को अपने फ़ाइल स्टोरेज (जैसे Cloudflare R2, S3) में हैशेड फ़ाइलनाम के साथ सहेजें ताकि वे अनुमान लगाने योग्य न हों लेकिन व्यवस्थापक डैशबोर्ड से देखने योग्य हों। स्टोरेज URL को evidence_json में _receipt_r2_url और _service_doc_r2_url के रूप में संग्रहीत करें। 4. CLI सिंक वर्कर (workers/syncDisputes.php) एक स्क्रिप्ट जो स्ट्राइप के API से सभी मौजूदा विवाद खींचती है (पेजिनेटेड $stripe->disputes->all(['limit' => 100]) और पेजिनेशन के लिए starting_after के साथ), उन्हें स्थानीय विवाद डेटाबेस में सहेजती है, और किसी भी ऐसे विवाद के लिए जिनकी स्थिति needs_response या warning_needs_response है और जिनके लिए अभी तक साक्ष्य सबमिट नहीं किया गया है, साझा collectDisputeEvidence() फ़ंक्शन का उपयोग करके स्वतः साक्ष्य सबमिट करती है। यह आवश्यक है क्योंकि वेबहुक केवल भविष्य के विवादों को पकड़ता है, मौजूदा को नहीं। केवल CLI के माध्यम से चलाएं (php workers/syncDisputes.php)। सिंक परिणामों के साथ एक JSON कैश फ़ाइल सहेजता है ताकि डैशबोर्ड अंतिम सिंक समय दिखा सके। 5. मिनी डैशबोर्ड (disputes.php with ?key= auth) ?key= क्वेरी पैरामीटर द्वारा सुरक्षित एक सरल HTML पेज जो दिखाता है: - स्टैट्स बॉक्स: कुल विवाद, लंबित, जीते, हारे, पिछले 30 दिनों में विवादित (राशि + संख्या), पिछले 12 महीनों में विवादित (राशि + संख्या), कुल $ विवादित - CLI सिंक कमांड और कैश से अंतिम सिंक समय दिखाने वाला एक नोट - एक परीक्षण फ़ॉर्म जहां आप stripe_customer_id दर्ज करते हैं यह पूर्वावलोकन करने के लिए कि कौन सा साक्ष्य सबमिट किया जाएगा (वास्तव में सबमिट किए बिना) - सभी विवादों की एक तालिका: तिथि, ईमेल, राशि, कारण, स्थिति (रंग-कोडित बैज), साक्ष्य सबमिशन स्थिति, विवरण दृश्य और स्ट्राइप डैशबोर्ड दोनों के लिंक विवरण दृश्य (action=view&id=dispute_id): सभी विवाद जानकारी, स्ट्राइप का लिंक, और एक "साक्ष्य पुनः उत्पन्न करें" बटन, PDF फ़ाइल लिंक, स्ट्राइप फ़ाइल अपलोड ID, सभी टेक्स्ट साक्ष्य फ़ील्ड दिखाता है। साक्ष्य पुनः उत्पन्न करें (action=regen&id=dispute_id): रसीद और सेवा दस्तावेज़ीकरण PDF को पुनः उत्पन्न करता है और फ़ाइल स्टोरेज पर अपलोड करता है, नए PDF URL के साथ evidence_json अपडेट करता है। फ्रंटएंड टाइमआउट को रोकने के लिए HTTP प्रतिक्रिया तुरंत भेजने के लिए fastcgi_finish_request() का उपयोग करें (विवरण पेज पर "पृष्ठभूमि में पुनः उत्पन्न हो रहा है" नोटिस के साथ रीडायरेक्ट करें), फिर पृष्ठभूमि में PDF उत्पन्न करना जारी रखें। पेज के लिए nginx रीराइट जोड़ें (जैसे rewrite ^/disputes/?$ /disputes.php)। सुनिश्चित करें कि यह सही nginx कॉन्फ़िग फ़ाइल में है (जांचें कि sites-enabled में सिमलिंक वास्तव में किस फ़ाइल की ओर इशारा करता है)। 6. टेलीग्राम अधिसूचनाएं - नया विवाद: "{साइट नाम} - {ईमेल} से ${राशि} के लिए नया विवाद ({कारण})। साक्ष्य स्वतः स्ट्राइप को सबमिट किया गया। {स्ट्राइप_डैशबोर्ड_लिंक}" - साक्ष्य विफल: "{साइट नाम} - {ईमेल} से ${राशि} के लिए नया विवाद ({कारण})। साक्ष्य सबमिशन विफल: {त्रुटि}" - परिणाम और लिंक के साथ विवाद जीता/हारा - DB अनुमति त्रुटि: "{साइट नाम} - विवाद DB त्रुटि: {त्रुटि} - data/disputes.db पर अनुमतियां जांचें" 7. सुनिश्चित करें कि ये स्ट्राइप वेबहुक इवेंट स्ट्राइप डैशबोर्ड में सक्षम हैं: charge.dispute.created, charge.dispute.updated, charge.dispute.closed 8. डेटाबेस अनुमतियां disputes.db फ़ाइल वेब सर्वर उपयोगकर्ता (जैसे www-data) द्वारा लिखने योग्य होनी चाहिए। यदि आप इसे CLI से root के रूप में बनाते हैं, तो अपनी अन्य DB फ़ाइलों से मेल खाने के लिए स्वामित्व ठीक करें। PHP-FPM root से भिन्न उपयोगकर्ता के रूप में चलता है। 9. निर्भरताएं - PDF उत्पादन के लिए FPDF (setasign/fpdf), composer require setasign/fpdf के माध्यम से स्थापित - छवि आकार बदलने के लिए GD एक्सटेंशन (आमतौर पर पहले से स्थापित) - स्ट्राइप PHP SDK (यदि आपके पास स्ट्राइप वेबहुक हैं तो पहले से स्थापित) - R2/S3 अपलोड के लिए AWS S3 SDK (यदि Cloudflare R2 का उपयोग कर रहे हैं तो पहले से स्थापित)

पूरा प्रॉम्प्ट देखने के लिए साइन इन करें

Continue with:

By logging in, you agree to our Terms of Use and Privacy Policy

उपयोग

यह प्रॉम्प्ट coding के साथ उपयोग के लिए डिज़ाइन किया गया है। ऊपर प्रॉम्प्ट सामग्री कॉपी करें और अपने पसंदीदा AI टूल में पेस्ट करें।

सर्वोत्तम परिणामों के लिए, आप अपनी विशिष्ट आवश्यकताओं के अनुसार प्लेसहोल्डर (वर्ग कोष्ठक या बड़े अक्षरों में दर्शाए गए) को अनुकूलित कर सकते हैं।

संदर्भ

श्रेणियाँ:coding| twitter| stripe| disputes

चर्चा