मैं एक इन-ऐप खरीदारी बना रही हूँ द्वारा कई बार कहा जाता SKPaymentTransactionStatePurchased, लेकिन मैं एक बग है कि मैं नहीं मिल सकता है वह कहाँ से आता है ...त्रुटि
सबसे पहले है, मैं एक बटन है और जब आप इसे क्लिक करते हैं, तो मेरा ऐप उत्पाद का अनुरोध करता है, प्रतिक्रिया देता है, आप भुगतान करते हैं, और आपको उत्पाद मिलता है (सब कुछ ठीक काम करता है)। लेकिन यहां मेरी समस्या आती है। अगर मैं फिर से कुछ भी खरीदने के लिए बटन पर क्लिक करता हूं, तो मुझे दो अलर्ट मिलते हैं जिन्हें मैंने दो बार खरीदा था। यहां तक कि यदि मैं तीसरे बार क्लिक करता हूं, तो मुझे तीन अलर्ट मिलते हैं जिन्हें मैंने तीन बार खरीदा, और चार और पांच मैंने क्लिक किए गए समय के अनुसार।
तो ऐसा लगता है कुछ चर की तरह अनुरोध भंडारण रहता है .. यहाँ मेरी कोड है:
इस उत्पाद आईडी
- (void) validateProductIdentifiers
{
NSString *monedas = @" ID FROM PRODUCT ";
NSSet *product = [NSSet setWithObject:monedas];
productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:product];
productsRequest.delegate = self;
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[productsRequest start];
NSLog(@"STARTED REQUEST");
}
यह एप्पल से
- (void)productsRequest:(SKProductsRequest *)request
didReceiveResponse:(SKProductsResponse *)response
{
productsRequest=nil;
int found=0;
SKProduct *paraPagar;
skProducts = response.products;
for (SKProduct * skProduct in skProducts) {
NSLog(@"Found product: %@ %@ %0.2f",
skProduct.productIdentifier,
skProduct.localizedTitle,
skProduct.price.floatValue);
found=1;
paraPagar = skProduct;
}
if (found==1){
payment = [SKMutablePayment paymentWithProduct:paraPagar];
payment.quantity = 1;
[[SKPaymentQueue defaultQueue]addPayment:payment];
}else{
//error (not relevant code)
}
}
प्रतिक्रिया संभालती है सत्यापित करता है
भुगतान स्वीकार करना और समाप्त करना आईएनजी लेनदेन
- (void)paymentQueue:(SKPaymentQueue *)queue
updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
NSLog(@"BOUGHT");
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
NSLog(@"FAILED");
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
[self failedTransaction];
break;
case SKPaymentTransactionStateRestored:
NSLog(@"RESTORED");
//[self restoreTransaction:transaction];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
case SKPaymentTransactionStatePurchasing:
NSLog(@"PURCHASING");
default:
break;
}
}
}
आपके समय के लिए बहुत बहुत धन्यवाद!
ऐप्पल के दस्तावेज़ों के अनुसार, * "आपके आवेदन को एप्लिकेशन प्रारंभिकरण के दौरान भुगतान कतार में पर्यवेक्षक जोड़ना चाहिए।"* तो आपका समाधान काम करता है, लेकिन आपके ऐप लॉन्च होने के तुरंत बाद लेन-देन के लिए देखना शुरू करना बेहतर होता है। – smileyborg