PDA

View Full Version : ایمن سازی درگاه پرداخت



hno2005
شنبه 08 آبان 1395, 10:19 صبح
باسلام و خسته نباشید
من یکم مشکل امنیتی با درگاه پرداختم دارم . خیلی سفارشها برام میاد بدون اینکه کاربری پرداخت کرده باشه . اینها کدهاییه ست که استفاده کردم :


mHelper = new IabHelper(this, base64EncodedPublicKey);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
Log.d(TAG, "Setup finished.");

if (!result.isSuccess()) {
// Oh noes, there was a problem.
Log.d(TAG, "Problem setting up In-app Billing: " + result);
}
}
});

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);

// Pass on the activity result to the helper for handling
if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
} else {
Log.d(TAG, "onActivityResult handled by IABUtil.");
}
}

موقع خرید :

skuUser = sku[position];
mHelper.launchPurchaseFlow(BuySeke.this, sku[position], 10001,
mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");



IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
= new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
if (result.isFailure()) {
Log.d(TAG, "Error purchasing: " + result);
return;
} else if (purchase.getSku().equals(skuUser)) {
MasrafSeke(purchase);
}
}
};

mHelper.consumeAsync(kala, new IabHelper.OnConsumeFinishedListener() {
@Override
public void onConsumeFinished(Purchase purchase, IabResult result) {
if (result.isSuccess()) {
long number = (long) Math.floor(Math.random() * 9000000000L) + 1000000000L;
new Html(new OnTaskFinished() {
@Override
public void onFeedRetrieved(String body) {
Log.v("this", body);
if (body.equals("errordade")) {
MyToast.makeText(getApplicationContext(), "اشکالی پیش آمده است");
}else if (body.contains("ok#")) {
MyToast.makeText(BuySeke.this, "تعداد " + body.replace("ok#","")+
"سکه به موجودی شما افزوده شد \n با تشکر از خرید شما");
getMojudi();
}
}
}, true, BuySeke.this, "").execute(getString(R.string.url) + "/sharjMe.php?uid=" + Func.getUid(BuySeke.this) + "&n=bought&m=" + number + "&p=" + skuUser + "&p3=MIHNMA0GCSqGSIb3DQEBAQ");
Log.v("this",getString(R.string.url) + "/sharjMe.php?uid=" + Func.getUid(BuySeke.this) + "&n=bought&m=" + number + "&p=" + skuUser + "&p3=MIHNMA0GCSqGSIb3DQEBAQ&ch="+id[5]);
}
}
});



چطوری میشه به طور قطعی مطمئن شد که کاربر خرید کرده و بعد بفرستم برای تایید . در مرحله اخر که مصرف میکنه ، درخواست ارسال میشه سمت سرور که هیچ روشی برای تایید اینکه کاربر خرید کرده از سمت سایت نمیتونم انجام بدم .

ممنون میشم راهنمایی کنید
با تشکر

hno2005
شنبه 08 آبان 1395, 15:35 عصر
دوستان ممنون میشم راهنمایی کنید . قطعا خیلی از کاربران دیگر هم با این مشکل امنیتی مواجه میشن و به ضررشون تمام میشه .