رفتن به مطلب

پاك نشدن 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

لینک به ارسال

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

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

  • امتیاز 1
لینک به ارسال

سلام

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

اينم آدرس كد :

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

لینک به ارسال

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

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

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


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']

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

تست کنید

  • امتیاز 1
لینک به ارسال

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

  • امتیاز 1
لینک به ارسال

نه


$_SERVER['REMOTE_ADDR']

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

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

لینک به ارسال

لطفا برای ارسال دیدگاه وارد شوید

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



ورود به حساب کاربری
×
×
  • اضافه کردن...