修复支付状态问题
This commit is contained in:
1 parent
406fb8d6a6
commit
85a124b886
21 files changed
+198
-308
No files matched your search
+19
-29
@@ -57,26 +57,16 @@ trait PayOrders {
|
||||
if (is_wp_error($side_effects)) {
|
||||
return $side_effects;
|
||||
}
|
||||
if (class_exists('\AKSRT\Payment\OrderRepository')) {
|
||||
$completed = \AKSRT\Payment\OrderRepository::get_instance()->update_status(
|
||||
$order_number,
|
||||
\AKSRT\Payment\Order::STATUS_COMPLETED,
|
||||
['note' => __('内容权益已发放。', 'aksrt')]
|
||||
);
|
||||
if (!$completed) {
|
||||
return new \WP_Error('aksrt_content_fulfillment_failed', __('内容权益发放失败。', 'aksrt'), ['status' => 500]);
|
||||
if (class_exists('\AKSRT\Payment\CreatorRevenue')) {
|
||||
$revenue_order = array_merge($paid_order, [
|
||||
'order_number' => $order_number,
|
||||
'status' => \AKSRT\Payment\Order::STATUS_PAID,
|
||||
]);
|
||||
$revenue_id = \AKSRT\Payment\CreatorRevenue::get_instance()->create_from_paid_order($revenue_order);
|
||||
if ($revenue_id < 0) {
|
||||
return new \WP_Error('aksrt_creator_revenue_conflict', __('同一订单的收益载荷不一致。', 'aksrt'), ['status' => 409]);
|
||||
}
|
||||
if (class_exists('\AKSRT\Payment\CreatorRevenue')) {
|
||||
$completed_order = array_merge($paid_order, [
|
||||
'order_number' => $order_number,
|
||||
'status' => \AKSRT\Payment\Order::STATUS_COMPLETED,
|
||||
]);
|
||||
$revenue_id = \AKSRT\Payment\CreatorRevenue::get_instance()->create_from_paid_order($completed_order);
|
||||
if ($revenue_id < 0) {
|
||||
return new \WP_Error('aksrt_creator_revenue_conflict', __('同一订单的收益载荷不一致。', 'aksrt'), ['status' => 409]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -217,7 +207,7 @@ trait PayOrders {
|
||||
|| (int) ($current['product_id'] ?? 0) !== $post_id
|
||||
|| (int) ($current['amount'] ?? 0) !== $amount
|
||||
|| (string) ($current['currency'] ?? '') !== 'points'
|
||||
|| !in_array((string) ($current['status'] ?? ''), [\AKSRT\Payment\Order::STATUS_CREATED, \AKSRT\Payment\Order::STATUS_PENDING], true)
|
||||
|| (string) ($current['status'] ?? '') !== \AKSRT\Payment\Order::STATUS_PENDING
|
||||
) {
|
||||
return new \WP_Error('aksrt_order_confirm_failed', __('订单状态或金额已变化。', 'aksrt'), ['status' => 409]);
|
||||
}
|
||||
@@ -253,13 +243,13 @@ trait PayOrders {
|
||||
return new \WP_Error('aksrt_order_create_failed', __('创建订单失败。', 'aksrt'), ['status' => 500]);
|
||||
}
|
||||
}
|
||||
$paid = \AKSRT\Payment\Order::get_instance()->update_status($order_number, \AKSRT\Payment\Order::STATUS_PAID, [
|
||||
'payment_method' => 'points',
|
||||
'payment_transaction_id' => 'points_' . $order_number,
|
||||
'note' => sprintf(__('积分支付 %d 积分。', 'aksrt'), $amount),
|
||||
'require_transition' => true,
|
||||
]);
|
||||
return $paid ? true : new \WP_Error('aksrt_order_confirm_failed', __('订单确认失败。', 'aksrt'), ['status' => 500]);
|
||||
$paid = \AKSRT\Payment\Order::get_instance()->update_status($order_number, \AKSRT\Payment\Order::STATUS_PAID, [
|
||||
'payment_method' => 'points',
|
||||
'payment_transaction_id' => 'points_' . $order_number,
|
||||
'note' => sprintf(__('积分支付 %d 积分。', 'aksrt'), $amount),
|
||||
'require_transition' => true,
|
||||
]);
|
||||
return $paid ? true : new \WP_Error('aksrt_order_confirm_failed', __('订单确认失败。', 'aksrt'), ['status' => 500]);
|
||||
},
|
||||
$guard
|
||||
);
|
||||
@@ -390,7 +380,7 @@ trait PayOrders {
|
||||
return new \WP_Error('aksrt_order_create_failed', __('创建订单失败。', 'aksrt'), ['status' => 500]);
|
||||
}
|
||||
$status = is_array($existing) ? (string) ($existing['status'] ?? '') : '';
|
||||
if (!in_array($status, [\AKSRT\Payment\Order::STATUS_PAID, \AKSRT\Payment\Order::STATUS_DELIVERED, \AKSRT\Payment\Order::STATUS_COMPLETED], true)) {
|
||||
if ($status !== \AKSRT\Payment\Order::STATUS_PAID) {
|
||||
$paid = \AKSRT\Payment\Order::get_instance()->update_status($order_number, \AKSRT\Payment\Order::STATUS_PAID, [
|
||||
'payment_method' => 'free',
|
||||
'payment_transaction_id' => 'free_' . $order_number,
|
||||
@@ -503,7 +493,7 @@ trait PayOrders {
|
||||
if ($payment_method === '') {
|
||||
$payment_method = $user_id > 0 ? 'balance' : 'alipay';
|
||||
}
|
||||
if ($can_resume && in_array((string) ($order['status'] ?? ''), [\AKSRT\Payment\Order::STATUS_PAID, \AKSRT\Payment\Order::STATUS_DELIVERED, \AKSRT\Payment\Order::STATUS_COMPLETED], true)) {
|
||||
if ($can_resume && (string) ($order['status'] ?? '') === \AKSRT\Payment\Order::STATUS_PAID) {
|
||||
$ledger_key = \AKSRT\Ledger\OperationKey::deterministic('order-payment', [$order_number]);
|
||||
$history = \AKSRT\Ledger\LedgerQuery::get_instance()->history(['operation_key' => $ledger_key, 'page' => 1, 'per_page' => 1]);
|
||||
return [
|
||||
|
||||
Reference in new issue
Block a user