के साथ एक ही ऑर्डरिड हमें ट्रिगर.io के भुगतान मॉड्यूल में एक अजीब समस्या का सामना करना पड़ा है। प्रवाह आईओएस भुगतान के साथ पूरी तरह से काम करता है लेकिन एंड्रॉइड में, कुछ इन-ऐप भुगतान कॉलबैक को एक ही सेकंड में दो बार बुलाया जाता है। रसीद हस्ताक्षर अलग हैं लेकिन ऑर्डरिड, अधिसूचना, खरीदार और डेवलपर सभी लोड रहें। जब हम रसीद को सत्यापित करने का प्रयास करते हैं तो यह सत्य और सही साबित होता है। लेकिन जब हम वित्तीय रिपोर्ट देखते हैं, तो हम केवल दो के बजाय एक भुगतान देखते हैं (क्योंकि शायद यह सिर्फ एक भुगतान है लेकिन अलग-अलग हस्ताक्षर क्यों?)।Trigger.IO इन-ऐप भुगतान डुप्लिकेट कॉलबैक अलग हस्ताक्षर
ट्रिगर.ओओ कॉलबैक को दो बार क्यों बुला रहा है जो उत्पाद को दो बार खरीदा जाता है? एंड्रॉइड एक भुगतान के लिए 2 अलग और पुष्टि योग्य रसीद क्यों लौट रहा है? क्या यह एंड्रॉइड साइड या ट्रिगर.ओ साइड पर एक बग है, क्योंकि मेरे पास javascipt का उपयोग करके कॉलबैक को कॉल करने का कोई तरीका नहीं है? या यह एक ज्ञात हैक प्रयास है?
हमें ऐसे मामले का भी सामना करना पड़ा जहां कोई कॉलबैक नहीं कहा गया था, जबकि क्रेडिट कार्ड को सफलतापूर्वक चार्ज किया गया था। क्या यह एक बग है या इस मामले के लिए कोई कामकाज है?
if(forge.is.android())
forge.payments.purchaseProduct("someproductname", paymentSuccess, paymentError);
और यहाँ कॉलबैक फ़ंक्शन है:
function paymentCallback(data, confirm){
forge.request.ajax({
url: "someurl.php",
dataType: "json",
data:"function=logPayment&action=PaymentCallbackStart",
success: function (data) {
hideLoader();
},
error: function (error) {
hideLoader();
}
});
var productId = data.productId;
var orderId = data.orderId;
var signed_data;
if(forge.is.android())
{
var state = data.purchaseState;
var receipt = encodeURIComponent(data.receipt.signature);
signed_data = encodeURIComponent(data.receipt.data);
}
else if(forge.is.ios())
{
var state = data.PurchaseState;
var receipt = data.receipt.data;
}
forge.request.ajax({
url: "someurl.php",
dataType: "json",
data:"function=logPayment&data=" + encodeURIComponent("birthday=" + gbirthday + "&birthhour=" + gbirthhour + "&name=" + gname + "&gender=" + ggender + "&birthday2=" + gbirthday2 + "&birthhour2=" + gbirthhour2 + "&name2=" + gname2 + "&gender2=" + ggender2 + "&content=" + text + "&ProductID=" + qs.ProductID + "&userId=" + guserId + "&data=" + JSON.stringify(data)) + "&action=PaymentCallback",
success: function (data) {
hideLoader();
},
error: function (error) {
hideLoader();
}
});
if(state == "PURCHASED")
{
if(typeof gbirthday != "undefined")
{
var text = $('#imessagem').val();
forge.request.ajax({
url: "someurl.php",
dataType: "json",
data:"function=askQuestion&birthday=" + encodeURIComponent(gbirthday) + "&birthhour=" + encodeURIComponent(gbirthhour) + "&name=" + encodeURIComponent(gname) + "&gender=" + ggender + "&birthday2=" + encodeURIComponent(gbirthday2) + "&birthhour2=" + encodeURIComponent(gbirthhour2) + "&name2=" + encodeURIComponent(gname2) + "&gender2=" + ggender2 + "&content=" + encodeURIComponent(text) + "&ProductID=" + qs.ProductID + "&userId=" + guserId + "&signed_data=" + signed_data + "&receipt=" + receipt,
success: function (data) {
processPayment(productId,orderId)
hideLoader();
},
error: function (error) {
hideLoader();
forge.request.ajax({
url: "someurl.php",
dataType: "json",
data:"function=logPayment&data=" + encodeURIComponent(JSON.stringify(error)) + "&action=PaymentQuestionError",
success: function (data) {
hideLoader();
},
error: function (error) {
hideLoader();
}
});
}
});
forge.request.ajax({
url: "someurl.php",
dataType: "json",
data:"function=logPayment&data=" + encodeURIComponent(JSON.stringify(data)) + "&action=Payment",
success: function (data) {
hideLoader(); },
error: function (error) {
hideLoader();
}
});
}
if(forge.is.android())
processPayment(productId,orderId);
}
else
{
if(forge.is.ios())
processPayment(productId,orderId);
}
confirm();
}
मैं भुगतान से पहले एक सम्मिलित कर रहा हूं और हस्ताक्षर और आदेश आईडी के साथ इसे सत्य में सेट कर रहा हूं। समस्या एक ही खरीद अनुरोध के एकाधिक जमा नहीं है, लेकिन कॉलबैक की कई दीक्षा। मैंने इस मुद्दे में कुछ और खोला है और पता चला है कि एंड्रॉइड कॉलबैक भेज रहा है, यह दूसरी खरीद से पहले कुछ खरीद (कनेक्शन समस्याएं, ऐप क्रैश इत्यादि) के लिए नहीं था, नई खरीद के कॉलबैक के साथ। इसलिए गायब ऑर्डर एकाधिक कॉलबैक दीक्षा के साथ दिखाई देते हैं। –
यहां Google पर संबंधित समस्या है: https://code.google.com/p/marketbilling/issues/detail?id=14&colspec=ID%20Type%20Status%20Google%20Priority%20Milestone%20Owner%20 सारांश इसलिए प्रश्न है: क्या इस समस्या के लिए एक ज्ञात कामकाज है? चूंकि मैं खरीद से मेल नहीं खा सकता (हम कुछ प्रश्न पूछते हैं और उन्हें खरीद अनुरोध के साथ भेजते हैं) अगर इसे बाद में भेजा जाता है, तो मुझे इस मुद्दे को ठीक करने के लिए क्या करना चाहिए? –
क्या आप कुछ कोड प्रदान कर सकते हैं जहां आप कॉल और कॉलबैक फ़ंक्शन बनाते हैं? – GuyT