|
|
@ -648,6 +648,7 @@ class Index extends CI_Controller {
|
|
|
|
&& strpos($post_data->event_type, 'REFUNDED') === false
|
|
|
|
&& strpos($post_data->event_type, 'REFUNDED') === false
|
|
|
|
&& strpos($post_data->event_type, 'PAYMENT.CAPTURE.DECLINED') === false
|
|
|
|
&& strpos($post_data->event_type, 'PAYMENT.CAPTURE.DECLINED') === false
|
|
|
|
&& strpos($post_data->event_type, 'PAYMENT.SALE.REVERSED') === false
|
|
|
|
&& strpos($post_data->event_type, 'PAYMENT.SALE.REVERSED') === false
|
|
|
|
|
|
|
|
&& strpos($post_data->event_type, 'CHECKOUT.ORDER.APPROVED') === false
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -671,6 +672,7 @@ class Index extends CI_Controller {
|
|
|
|
$tp_payee->merchant = "trippest";
|
|
|
|
$tp_payee->merchant = "trippest";
|
|
|
|
|
|
|
|
|
|
|
|
$pn_txn_id = $post_data->resource->id;
|
|
|
|
$pn_txn_id = $post_data->resource->id;
|
|
|
|
|
|
|
|
$save_to_pn = true;
|
|
|
|
|
|
|
|
|
|
|
|
$pn_invoice = '';
|
|
|
|
$pn_invoice = '';
|
|
|
|
$pn_custom = '';
|
|
|
|
$pn_custom = '';
|
|
|
@ -683,6 +685,15 @@ class Index extends CI_Controller {
|
|
|
|
$fund_type = 'pay';
|
|
|
|
$fund_type = 'pay';
|
|
|
|
$net_amount = '';
|
|
|
|
$net_amount = '';
|
|
|
|
$transaction_status = '';
|
|
|
|
$transaction_status = '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$payer_id = '';
|
|
|
|
|
|
|
|
$payer_name = '';
|
|
|
|
|
|
|
|
$payer_email = '';
|
|
|
|
|
|
|
|
$payer_state = '';
|
|
|
|
|
|
|
|
$payment_type = '';
|
|
|
|
|
|
|
|
$remark = '';
|
|
|
|
|
|
|
|
$notice_status = '';
|
|
|
|
|
|
|
|
|
|
|
|
switch ($post_data->event_type) {
|
|
|
|
switch ($post_data->event_type) {
|
|
|
|
case 'PAYMENT.SALE.COMPLETED': // todo: PAYMENT.SALE.DENIED
|
|
|
|
case 'PAYMENT.SALE.COMPLETED': // todo: PAYMENT.SALE.DENIED
|
|
|
|
$fund_type = 'pay';
|
|
|
|
$fund_type = 'pay';
|
|
|
@ -779,6 +790,39 @@ class Index extends CI_Controller {
|
|
|
|
// $pn_receiver_account_name = $pn_receiver_account===$default_payee->email_address ? $default_payee->merchant : $tp_payee->merchant;
|
|
|
|
// $pn_receiver_account_name = $pn_receiver_account===$default_payee->email_address ? $default_payee->merchant : $tp_payee->merchant;
|
|
|
|
$pn_receiver_account_name = $this->fundsource_map($pn_receiver_account)->merchant;
|
|
|
|
$pn_receiver_account_name = $this->fundsource_map($pn_receiver_account)->merchant;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'CHECKOUT.ORDER.APPROVED':
|
|
|
|
|
|
|
|
$save_to_pn = false;
|
|
|
|
|
|
|
|
$fund_type = 'paypal.order';
|
|
|
|
|
|
|
|
$notice_status = 'closed';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$paypal_order = $post_data->resource->purchase_units[0];
|
|
|
|
|
|
|
|
$pn_invoice = $paypal_order->invoice_id;
|
|
|
|
|
|
|
|
$pn_custom = isset($paypal_order->custom_id) ? $paypal_order->custom_id : '';
|
|
|
|
|
|
|
|
$pn_mc_gross = $paypal_order->amount->value;
|
|
|
|
|
|
|
|
$pn_mc_currency = $paypal_order->amount->currency_code;
|
|
|
|
|
|
|
|
$pn_payment_status = 'APPROVED'; // $post_data->resource->status;
|
|
|
|
|
|
|
|
$transaction_status = strtolower($pn_payment_status); // $post_data->resource->status;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$payment = isset($paypal_order->payments) ? $paypal_order->payments->captures[0] : new stdClass();
|
|
|
|
|
|
|
|
$post_data->mc_fee = isset($payment->seller_receivable_breakdown) ? $payment->seller_receivable_breakdown->paypal_fee->value : 0;
|
|
|
|
|
|
|
|
$net_amount = isset($payment->seller_receivable_breakdown) ? $payment->seller_receivable_breakdown->net_amount->value : $pn_mc_gross;
|
|
|
|
|
|
|
|
$post_data->parent_txn_id = isset($payment->id) ? $payment->id : ''; // refer_id
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$remark = $paypal_order->description;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$pn_receiver_account = $paypal_order->payee->email_address;
|
|
|
|
|
|
|
|
$pn_receiver_account_name = $this->fundsource_map($pn_receiver_account)->merchant;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$payer_id = $post_data->resource->payer->payer_id;
|
|
|
|
|
|
|
|
$payer_name = $post_data->resource->payer->name->given_name . ' ' . $post_data->resource->payer->name->surname;
|
|
|
|
|
|
|
|
$payer_email = $post_data->resource->payer->email_address;
|
|
|
|
|
|
|
|
$paymentSource = get_object_vars($post_data->resource->payment_source);
|
|
|
|
|
|
|
|
reset($paymentSource);
|
|
|
|
|
|
|
|
$payment_type = key($paymentSource);
|
|
|
|
|
|
|
|
// $payment_type = array_key_first($paymentSource);
|
|
|
|
|
|
|
|
$payer_state = $payment_type == 'paypal' ? strtolower($paymentSource[$payment_type]->account_status) : '';
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
default: // capture COMPLETED
|
|
|
|
default: // capture COMPLETED
|
|
|
@ -795,7 +839,7 @@ class Index extends CI_Controller {
|
|
|
|
// $pn_mc_gross = '-' . $post_data->resource->amount->total;
|
|
|
|
// $pn_mc_gross = '-' . $post_data->resource->amount->total;
|
|
|
|
// $post_data->parent_txn_id = $post_data->resource->sale_id;
|
|
|
|
// $post_data->parent_txn_id = $post_data->resource->sale_id;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
$pn_payment_date = $post_data->resource->update_time;
|
|
|
|
$pn_payment_date = isset($post_data->resource->update_time) ? $post_data->resource->update_time : $post_data->resource->create_time;
|
|
|
|
// $pn_payer = $post_data->resource->amount->currency;
|
|
|
|
// $pn_payer = $post_data->resource->amount->currency;
|
|
|
|
// $pn_payer_email = $post_data->resource->amount->currency;
|
|
|
|
// $pn_payer_email = $post_data->resource->amount->currency;
|
|
|
|
$post_data->notify_time = date('Y-m-d H:i:s');
|
|
|
|
$post_data->notify_time = date('Y-m-d H:i:s');
|
|
|
@ -803,23 +847,25 @@ class Index extends CI_Controller {
|
|
|
|
if (!empty($pn_txn_id)) {
|
|
|
|
if (!empty($pn_txn_id)) {
|
|
|
|
//把PDT时间转成GMT时间
|
|
|
|
//把PDT时间转成GMT时间
|
|
|
|
$pn_payment_date = gmdate('Y-m-d H:i:s', strtotime($pn_payment_date));
|
|
|
|
$pn_payment_date = gmdate('Y-m-d H:i:s', strtotime($pn_payment_date));
|
|
|
|
$this->Note_model->save_paypal_note(
|
|
|
|
if ($save_to_pn) {
|
|
|
|
$pn_txn_id,
|
|
|
|
$this->Note_model->save_paypal_note(
|
|
|
|
$pn_invoice,
|
|
|
|
$pn_txn_id,
|
|
|
|
$pn_custom,
|
|
|
|
$pn_invoice,
|
|
|
|
$pn_mc_gross,
|
|
|
|
$pn_custom,
|
|
|
|
$post_data->mc_fee,
|
|
|
|
$pn_mc_gross,
|
|
|
|
"",
|
|
|
|
$post_data->mc_fee,
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
$pn_mc_currency,
|
|
|
|
"",
|
|
|
|
$pn_payment_status,
|
|
|
|
$pn_mc_currency,
|
|
|
|
"",
|
|
|
|
$pn_payment_status,
|
|
|
|
"",
|
|
|
|
"",
|
|
|
|
$pn_payment_date,
|
|
|
|
"",
|
|
|
|
$pn_memo
|
|
|
|
$pn_payment_date,
|
|
|
|
,$pn_receiver_account
|
|
|
|
$pn_memo
|
|
|
|
,isset($post_data->parent_txn_id) ? $post_data->parent_txn_id : ''
|
|
|
|
,$pn_receiver_account
|
|
|
|
);
|
|
|
|
,isset($post_data->parent_txn_id) ? $post_data->parent_txn_id : ''
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
}
|
|
|
|
log_message('error','paypal-webhook-succeed ' . $pn_payment_status . ' ' . $pn_txn_id . ' # ' . $pn_invoice);
|
|
|
|
log_message('error','paypal-webhook-succeed ' . $pn_payment_status . ' ' . $pn_txn_id . ' # ' . $pn_invoice);
|
|
|
|
// echo 'ok';
|
|
|
|
// echo 'ok';
|
|
|
|
$to_online = [
|
|
|
|
$to_online = [
|
|
|
@ -838,6 +884,14 @@ class Index extends CI_Controller {
|
|
|
|
'event' => $post_data->event_type,
|
|
|
|
'event' => $post_data->event_type,
|
|
|
|
'event_result' => $pn_payment_status,
|
|
|
|
'event_result' => $pn_payment_status,
|
|
|
|
'referer_id' => isset($post_data->parent_txn_id) ? $post_data->parent_txn_id : '',
|
|
|
|
'referer_id' => isset($post_data->parent_txn_id) ? $post_data->parent_txn_id : '',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'payer_id' => $payer_id,
|
|
|
|
|
|
|
|
'payer_name' => $payer_name,
|
|
|
|
|
|
|
|
'payer_email' => $payer_email,
|
|
|
|
|
|
|
|
'payment_type' => $payment_type,
|
|
|
|
|
|
|
|
'payer_state' => $payer_state,
|
|
|
|
|
|
|
|
'remark' => $remark,
|
|
|
|
|
|
|
|
'notice_status' => $notice_status,
|
|
|
|
];
|
|
|
|
];
|
|
|
|
$this->online_note->add_note_paypal($to_online);
|
|
|
|
$this->online_note->add_note_paypal($to_online);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|