本文整理汇总了PHP中MemberOrder::getMemberOrderByPaymentTransactionID方法的典型用法代码示例。如果您正苦于以下问题:PHP MemberOrder::getMemberOrderByPaymentTransactionID方法的具体用法?PHP MemberOrder::getMemberOrderByPaymentTransactionID怎么用?PHP MemberOrder::getMemberOrderByPaymentTransactionID使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MemberOrder
的用法示例。
在下文中一共展示了MemberOrder::getMemberOrderByPaymentTransactionID方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getOrderFromInvoiceEvent
function getOrderFromInvoiceEvent($event)
{
$invoice_id = $event->data->object->id;
$order = new MemberOrder();
$order->getMemberOrderByPaymentTransactionID($invoice_id);
if(!empty($order->id))
return $order;
else
return false;
}
示例2: getOrderFromInvoiceEvent
function getOrderFromInvoiceEvent($event)
{
//pause here to give PMPro a chance to finish checkout
sleep(PMPRO_STRIPE_WEBHOOK_DELAY);
$invoice_id = $event->data->object->id;
$order = new MemberOrder();
$order->getMemberOrderByPaymentTransactionID($invoice_id);
if (!empty($order->id)) {
return $order;
} else {
return false;
}
}
示例3: pmpro_payflow_recurring_orders
function pmpro_payflow_recurring_orders()
{
//is PMPro even active?
if (!function_exists('pmpro_hasMembershipLevel')) {
return;
}
global $wpdb;
$now = current_time('timestamp');
//between what hours should the cron run?
$cron_start = 1;
//1 AM
$cron_end = 6;
//6 AM
$current_hour = date('G', $now);
if ($current_hour > $cron_end || $current_hour < $cron_start) {
return;
}
//where did we leave off?
if (isset($_REQUEST['start'])) {
$start = intval($_REQUEST['start']);
delete_option('pmpro_pfro_paused');
} else {
$start = get_option('payflow_recurring_orders_cron_count', 0);
}
//are we paused? value is timestamp. if set wait until then
$paused = get_option('pmpro_pfro_paused', false);
if (!empty($paused) && $paused > $now) {
return;
}
//how many subscriptions to run at one time. based on your server speed and timeout limits/etc.
$nper = 50;
//next one
$end = intval($start) + intval($nper);
//get subs
$sqlQuery = "\n\t\tSELECT SQL_CALC_FOUND_ROWS user_id FROM\n\t\t(\n\t\t\tSELECT mu.user_id,\n\t\t\t\tCASE mu.cycle_period\n\t\t\t\t\tWHEN 'Day' THEN date_add(mo.timestamp, INTERVAL mu.cycle_number DAY)\n\t\t\t\t\tWHEN 'Month' THEN date_add(mo.timestamp, INTERVAL mu.cycle_number MONTH)\n\t\t\t\t\tWHEN 'Week' THEN date_add(mo.timestamp, INTERVAL mu.cycle_number WEEK)\n\t\t\t\t\tWHEN 'Year' THEN date_add(mo.timestamp, INTERVAL mu.cycle_number YEAR)\n\t\t\t\tEND as next_payment_date\n\t\t\tFROM {$wpdb->pmpro_memberships_users} mu\n\t\t\t\tLEFT JOIN {$wpdb->pmpro_membership_orders} mo\n\t\t\t\t\tON mo.id = (\n\t\t\t\t\t\tSELECT id FROM {$wpdb->pmpro_membership_orders} WHERE gateway = 'payflowpro' AND status NOT IN('review', 'token', 'pending') AND user_id = mu.user_id ORDER BY id DESC LIMIT 1\n\t\t\t\t\t)\n\t\t\tWHERE mu.status = 'active'\n\t\t\t\tAND mo.subscription_transaction_id <> ''\n\t\t) members\n\t\tWHERE DATEDIFF('" . current_time('mysql') . "', next_payment_date) >= 0\n\t\tLIMIT {$start}, {$nper}\n\t";
$sub_user_ids = $wpdb->get_col($sqlQuery);
$count = $wpdb->get_var('SELECT FOUND_ROWS()');
echo "Processing " . intval($start) . " to " . (intval($start) + intval($nper)) . " of " . $count . " subscriptions.<hr />";
//if no more subs, pause until tomorrow
if (empty($sub_user_ids)) {
echo "All done. Pausing until tomorrow.<br />";
$tomorrow = strtotime(date("Y-m-d 00:00:00", $now + 3600 * 24));
update_option('pmpro_pfro_paused', $tomorrow);
update_option('payflow_recurring_orders_cron_count', 0);
return;
}
$failed_payment_emails = array();
//loop through subs
foreach ($sub_user_ids as $user_id) {
$user = get_userdata($user_id);
if (empty($user->ID)) {
echo "Coundn't find user #" . $user_id . "...<br /><hr />";
continue;
}
echo "Checking for recurring orders for user #" . $user->ID . " " . $user->user_login . " (" . $user->user_email . ")...<br />";
$last_order = new MemberOrder();
$last_order->getLastMemberOrder($user_id);
if (!empty($last_order->id)) {
echo "- Last order found. #" . $last_order->id . ", Code: " . $last_order->code . ", SubID: " . $last_order->subscription_transaction_id . ".<br />";
} else {
echo "- No last order. Skipping.";
echo "<hr />";
continue;
}
//is it even Payflow?
if ($last_order->gateway != "payflowpro") {
echo "- Order is for '" . $last_order->gateway . "' gateway.<br />";
echo "<hr />";
continue;
}
//check subscription
if (!empty($last_order->subscription_transaction_id)) {
echo "- Checking subscription #" . $last_order->subscription_transaction_id . ".<br />";
$status = pmpropfro_getSubscriptionPayments($last_order);
//find orders
$payments = pmpropfro_processPaymentHistory($status);
if (!empty($payments)) {
foreach ($payments as $payment) {
if ($payment['P_TRANSTATE'] == 1 || $payment['P_TRANSTATE'] == 11) {
echo "- Failed payment #" . $payment['P_PNREF'] . ".";
//check if we have this one already
$old_order = new MemberOrder();
$old_order->getMemberOrderByPaymentTransactionID($payment['P_PNREF']);
if (empty($old_order->id)) {
$failed_payment_emails[] = $user->user_email;
//not there yet, add it
$morder = new MemberOrder();
$morder->user_id = $last_order->user_id;
$morder->membership_id = $last_order->membership_id;
$morder->payment_transaction_id = $payment['P_PNREF'];
$morder->subscription_transaction_id = $last_order->subscription_transaction_id;
$morder->InitialPayment = $payment['P_AMT'];
//not the initial payment, but the class is expecting that
$morder->PaymentAmount = $payment['P_AMT'];
$morder->status = "error";
//save
$morder->saveOrder();
$morder->getMemberOrderByID($morder->id);
echo " Saving order.";
//this will affect the main query, so need to roll back the "end" 1 space
//.........这里部分代码省略.........