رفتن به مطلب

پاك نشدن options بعد از اتمام تراكنش


پست های پیشنهاد شده

سلام

من افزونه پرداخت EDD براي جهان پي رو نوشتم

چون جهان پي براي تاييد يك تراكنش نياز به چك كردن مبلغ تراكنش دارد

من در اول ثبت تراكنش مبلغ انرا به همراه شناسه سفارش به صورت زير ذخيره كردم:


$getamount = $purchase_data['price']/10;
add_option('purchaseamount'.$_SERVER['REMOTE_ADDR'], $getamount);

$getorderid = $purchase_data['purchase_key'];
add_option('getorderid'.$_SERVER['REMOTE_ADDR'], $getorderid);

تا اينجا مشكلي نيست

بعد از اينه كاربر به سايت بانك منتقل شد و پرداخت رو انجام داد

به دو آپشن بالا ديگه نيازي ندارم و با كد زير اون ها رو هذف كردم:



delete_option('purchaseamount'.$_SERVER['REMOTE_ADDR']);
delete_option('getorderid'.$_SERVER['REMOTE_ADDR']);

اما وقتي ليست اپشن هاي وردپرس رو ميبينم ،‌ براي هر تراكنشي كه ثبت شده اين 2 آپشن بالا در ليست آپشن ها وجود دارند و حذف نشدند

مشكل كجاست؟

اين هم لينك پروژه در git hub : :D

https://github.com/Abolfazln/Jahanpay-EDD/blob/master/edd-jahanpay.php

لینک به ارسال

کد حذف رو در کدام متد فراخوانی میکنید؟

باید در تابعی باشد که در هنگام برگشت فراخوانی میشود

لینک به ارسال

سلام

در متد jp_verfiy فراخواني ميكنم

اينم آدرس كد :

https://github.com/Abolfazln/Jahanpay-EDD/blob/master/edd-jahanpay.php#L92

لینک به ارسال

موقعه ی ارسال به بانک و موقعه ی برگشت از یانک این مقدار رو اکو بگیرید

'purchaseamount'.$_SERVER['REMOTE_ADDR']

لینک به ارسال

هر كاري ميكنم آپشن هاي ساخته شده پاك نميشند

مشكل از كجاست؟

كد زير رو ببينيد:


function jp_verify() {
global $edd_options;
if ($_GET['order'] == 'jahanpay' and $_GET['au']) {
$payment = $_SESSION['jahanpay_payment'];
$au = $_GET['au'];
$api = $edd_options['jahanpay_api'];
$amount = get_option('purchaseamount'.$_SERVER['REMOTE_ADDR']);
$client = new jahanpay ;
$result = $client->verification($api,$amount,$au);

// delete saved data
delete_option('purchaseamount'.$_SERVER['REMOTE_ADDR']);
delete_option('getorderid'.$_SERVER['REMOTE_ADDR']);

// empty EDD cart
edd_empty_cart();

if( ! empty($result) and $result == 1){
edd_update_payment_status($payment, 'publish');

delete_option('purchaseamount'.$_SERVER['REMOTE_ADDR']);
delete_option('getorderid'.$_SERVER['REMOTE_ADDR']);

edd_send_to_success_page();
}
else{
edd_update_payment_status($payment, 'failed');

delete_option('purchaseamount'.$_SERVER['REMOTE_ADDR']);
delete_option('getorderid'.$_SERVER['REMOTE_ADDR']);

$failed_page = get_permalink($edd_options['failure_page']);
wp_redirect( $failed_page );
exit;
}
}
}

حتي كد حذف كردن رو در 3 جا قرار دادم باز هم پاك نشد

لینک به ارسال

قربان این مقدار رو اول بریزید در سشن :

'purchaseamount'.$_SERVER['REMOTE_ADDR']

بعد بریزید در آپشن . هنگام دیلیت هم از سشن بخوانید . شاید مقدارشون در هنگام رفت و برگشت متفاوت است برای همین چون آپشن آیدی که اول اختصاص دادید به آپشن رو پیدا نمیکنه برای همین پاک نمیشه

تست کنید

لینک به ارسال

خیر , بیشتر به $_SERVER['REMOTE_ADDR'] مشکوک بودم . واسعه همین گفتم اکو بگیرید و مطمئن شید . چون شاید ip سرور بانک رو می گرفت نه کاربر

لینک به ارسال

نه


$_SERVER['REMOTE_ADDR']

آي پي كاربر رو ميگيره

باز هم سپاس كه وقت گذاشتيد و مشكلم رو حل كرديد

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...