@ -643,25 +643,15 @@ class Index extends CI_Controller {
log_message('error',"paypal_webhook" . var_export($raw_post, 1));
$post_data = json_decode($raw_post);
log_message('error','paypal_webhook: ' . $post_data->event_type);
if (
strpos($post_data->event_type, 'COMPLETED') === false
& & strpos($post_data->event_type, 'REFUNDED') === false
& & strpos($post_data->event_type, 'PAYMENT.CAPTURE.REVERSED') === false
& & strpos($post_data->event_type, 'PAYMENT.CAPTURE.DECLINED') === false
& & strpos($post_data->event_type, 'PAYMENT.CAPTURE.PENDING') === false
& & strpos($post_data->event_type, 'PAYMENT.SALE.REVERSED') === false
& & strpos($post_data->event_type, 'CHECKOUT.ORDER.APPROVED') === false
) {
if ( ! in_array($post_data->event_type, [
'PAYMENT.CAPTURE.REVERSED','PAYMENT.CAPTURE.DECLINED','PAYMENT.CAPTURE.PENDING',
'PAYMENT.CAPTURE.COMPLETED','PAYMENT.CAPTURE.REFUNDED',
'CHECKOUT.ORDER.APPROVED',
'CUSTOMER.DISPUTE.UPDATED','CUSTOMER.DISPUTE.RESOLVED',
'PAYMENT.SALE.COMPLETED','PAYMENT.SALE.REFUNDED','PAYMENT.SALE.REVERSED',
])) {
return;
}
if ($post_data->event_type === 'PAYMENT-NETWORKS.ALTERNATIVE-PAYMENT.COMPLETED') {
return ;
}
// todo: CUSTOMER.DISPUTE.CREATED
// if ($post_data->event_type != 'PAYMENT.SALE.COMPLETED' & & $post_data->event_type != 'PAYMENT.SALE.REFUNDED') {
// log_message('error',"paypal_webhook" . var_export($raw_post, 1));
// return;
// }
$default_payee = new stdClass();
$default_payee->email_address = "pays@chinahighlights.com";
@ -673,7 +663,7 @@ class Index extends CI_Controller {
$tp_payee->merchant_id = "5FUTQ9SU5P7CJ";
$tp_payee->merchant = "trippest";
$pn_txn_id = $post_data->resource->id;
$pn_txn_id = isset( $post_data->resource->id) ? $post_data->resource->id : '' ;
$save_to_pn = true;
$pn_invoice = '';
@ -827,6 +817,36 @@ class Index extends CI_Controller {
// $payment_type = array_key_first($paymentSource);
$payer_state = $payment_type == 'paypal' ? strtolower($paymentSource[$payment_type]->account_status) : '';
break;
case 'CUSTOMER.DISPUTE.UPDATED':
case 'CUSTOMER.DISPUTE.RESOLVED':
$save_to_pn = false;
$fund_type = 'paypal.dispute';
$notice_status = $post_data->event_type === 'CUSTOMER.DISPUTE.UPDATED' ? 'sendfail' : 'closed';
$pn_txn_id = $post_data->resource->dispute_id;
$transactions = $post_data->resource->disputed_transactions[0];
$transaction_id = $transactions->seller_transaction_id;
$post_data->parent_txn_id = !empty($transaction_id) ? $transaction_id : ''; // refer_id
$pn_invoice = isset($transactions->invoice_number) ? $transactions->invoice_number : '';
// $pn_custom = isset($transactions->custom) ? $transactions->custom : '';
$dispute_amount = $post_data->resource->dispute_amount;
$pn_mc_gross = $dispute_amount->value;
$pn_mc_currency = $dispute_amount->currency_code;
$net_amount = $pn_mc_gross;
$pn_payment_status = $post_data->resource->status;
$transaction_status = strtolower($pn_payment_status);
// subject
$pn_custom = $post_data->resource->dispute_life_cycle_stage . "." . $post_data->resource->reason;
$remark = "[{$pn_custom}] " . (isset($post_data->resource->messages[0]) ? $post_data->resource->messages[0]->content : '');
$pn_receiver_account_id = $transactions->seller->merchant_id;
$seller = $this->fundsource_map('', $pn_receiver_account_id);
$pn_receiver_account_name = $seller->merchant;
$pn_receiver_account = $seller->email_address;
break;
default: // capture COMPLETED
@ -880,13 +900,13 @@ class Index extends CI_Controller {
'pay_amount' => $pn_mc_gross,
'pay_currency' => $pn_mc_currency,
'net_amount' => $net_amount,
'pay_fee' => $post_data->mc_fee,
'transaction_status' => $transaction_status, // $pn_payment_status,
'pay_fee' => isset( $post_data->mc_fee) ? $post_data->mc_fee : 0 ,
'transaction_status' => $transaction_status, // $pn_payment_status, OPN_transactionResult
'payment_date' => $pn_payment_date,
'fund_source' => $pn_receiver_account_name,
'fund_type' => $fund_type,
'event' => $post_data->event_type,
'event_result' => $pn_payment_status,
'event_result' => $pn_payment_status, // OPN_resultCode
'referer_id' => isset($post_data->parent_txn_id) ? $post_data->parent_txn_id : '',
'payer_id' => $payer_id,
@ -2254,7 +2274,7 @@ class Index extends CI_Controller {
}
private function fundsource_map($pn_receiver_account) {
private function fundsource_map($pn_receiver_account, $pn_receiver_account_id = null ) {
$default_payee = new stdClass();
$default_payee->email_address = "pays@chinahighlights.com";
$default_payee->merchant_id = "JE4VX9SSVGTVN";
@ -2278,7 +2298,20 @@ class Index extends CI_Controller {
"ycc@hainatravel.com" => "dev",
"0" => "unknown",
);
$find = isset($fundsource[$pn_receiver_account]) ? $fundsource[$pn_receiver_account] : $default_payee;
$fundsource_id = array(
"BUTDAQXCYBPTA" => $htravel_payee, // business":"pay@trippest.com"
"5FUTQ9SU5P7CJ" => $tp_payee, // business":"pay@trippest.com"
"JE4VX9SSVGTVN" => $default_payee, // "CHT",
"JE4VX9SSVGTVN" => $default_payee, // "CHT",
// "ycc@hainatravel.com" => "dev",
// "0" => "unknown",
);
if ($pn_receiver_account_id) {
$find = isset($fundsource_id[$pn_receiver_account_id]) ? $fundsource_id[$pn_receiver_account_id] : $default_payee;
}
if ($pn_receiver_account) {
$find = isset($fundsource[$pn_receiver_account]) ? $fundsource[$pn_receiver_account] : $default_payee;
}
return $find;
}
}