"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > इन-ऐप खरीदारी रसीद सत्यापन की समस्या का निवारण: \"अमान्य स्थिति\" प्रतिक्रियाओं को कैसे संभालें?

इन-ऐप खरीदारी रसीद सत्यापन की समस्या का निवारण: \"अमान्य स्थिति\" प्रतिक्रियाओं को कैसे संभालें?

2024-11-09 को प्रकाशित
ब्राउज़ करें:600

Troubleshooting In-App Purchase Receipt Validation: How to Handle \

इन-ऐप खरीदारी रसीदों को सत्यापित करना

इन-ऐप खरीदारी सत्यापन यह सुनिश्चित करने के लिए महत्वपूर्ण है कि उपयोगकर्ताओं ने वैध खरीदारी की है और उन्हें पहुंच प्रदान की है प्रीमियम सामग्री या कार्यक्षमता। दस्तावेज़ीकरण की उपलब्धता के बावजूद, प्रभावी रसीद सत्यापन को लागू करना चुनौतीपूर्ण हो सकता है।

एक दृष्टिकोण में रसीद डेटा को PHP सर्वर पर भेजना शामिल है, जो सत्यापन के लिए इसे ऐप्पल ऐप स्टोर पर भेजता है। एक सफल प्रतिक्रिया खरीदारी की वैधता की पुष्टि करती है, जिससे आप अपने सर्वर पर लेनदेन को रिकॉर्ड करने के लिए आगे बढ़ सकते हैं।

हालांकि, यदि रसीद सत्यापन के दौरान आपको "अमान्य स्थिति" प्रतिक्रिया मिलती है, तो इसमें किसी भी टाइपो की जांच करना आवश्यक है आपका कोड. निम्नलिखित नमूना कोड एक समाधान प्रदान करता है:

- (BOOL)verifyReceipt:(SKPaymentTransaction *)transaction {
    NSString *jsonObjectString = [self encode:(uint8_t *)transaction.transactionReceipt.bytes length:transaction.transactionReceipt.length];      
    NSString *completeString = [NSString stringWithFormat:@"http://url-for-your-php?receipt=%@", jsonObjectString];               
    NSURL *urlForValidation = [NSURL URLWithString:completeString];       
    NSMutableURLRequest *validationRequest = [[NSMutableURLRequest alloc] initWithURL:urlForValidation];              
    [validationRequest setHTTPMethod:@"GET"];         
    NSData *responseData = [NSURLConnection sendSynchronousRequest:validationRequest returningResponse:nil error:nil];  
    [validationRequest release];
    NSString *responseString = [[NSString alloc] initWithData:responseData encoding: NSUTF8StringEncoding];
    NSInteger response = [responseString integerValue];
    [responseString release];
    return (response == 0);
}

- (NSString *)encode:(const uint8_t *)input length:(NSInteger)length {
    static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 /=";

    NSMutableData *data = [NSMutableData dataWithLength:((length   2) / 3) * 4];
    uint8_t *output = (uint8_t *)data.mutableBytes;

    for (NSInteger i = 0; i > 18) & 0x3F];
        output[index   1] =                    table[(value >> 12) & 0x3F];
        output[index   2] = (i   1) > 6)  & 0x3F] : '=';
        output[index   3] = (i   2) > 0)  & 0x3F] : '=';
    }

    return [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease];
}

इसके अतिरिक्त, रसीद सत्यापन को संभालने और लेनदेन को रिकॉर्ड करने के लिए आपके सर्वर पर निम्नलिखित PHP कोड का उपयोग किया जा सकता है:

$receipt = json_encode(array("receipt-data" => $_GET["receipt"]));
// NOTE: use "buy" vs "sandbox" in production.
$url = "https://sandbox.itunes.apple.com/verifyReceipt";
$response_json = call-your-http-post-here($url, $receipt);
$response = json_decode($response_json);

// Save the data here!

echo $response->status;

"call-your-http-post-here" को अपने पसंदीदा HTTP पोस्ट मैकेनिज्म से बदलना याद रखें। इस कोड को लागू करके और इसकी सटीकता सुनिश्चित करके, आप रसीद खरीद को प्रभावी ढंग से सत्यापित कर सकते हैं और विश्वास के साथ इन-ऐप लेनदेन का प्रबंधन कर सकते हैं।

विज्ञप्ति वक्तव्य यह आलेख यहां पुनर्मुद्रित है: 1729166962 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3