Commit 839a2016 authored by wanjilong's avatar wanjilong

add: 支持wx_pub 支付

parent 32fd971a
......@@ -12,6 +12,8 @@ class PayException extends BaseException
protected $cus = [
0 => '系统错误,请稍收重试',
1 => '订单服务获取订单信息失败。',
2 => '请确认订单信息及用户是否一致。',
3 => '该订单已经支付,请刷新确认',
4 => '费率计算错误,费率分母为0',
5 => '支付回调失败,请核对订单',
......@@ -25,5 +27,6 @@ class PayException extends BaseException
13 => '生活号获取管理员ID失败,请联系管理员',
14 => '支付订单预结算失败,结算资金不能负数,请核对配置',
15 => '支付订单金额与实际支付金额不等,请管理员关注',
16 => '支付订单创建失败,请管理员关注',
];
}
......@@ -3,6 +3,7 @@ namespace Helpers;
use Api\PhpUtils\Log\FileLog;
use Api\PhpUtils\Http\Request;
use App\Exception\BaseException;
/**
* Sdk 获取接口
......@@ -27,7 +28,6 @@ class Sdk {
$headers = array_merge($headers, $header);
*/
$data = (new Request())->post($url, $params,2000, 'json');
/*
[
"http_code"=> 200,
......@@ -41,7 +41,7 @@ class Sdk {
*/
if(!empty($data['response']['code'])) {
throw new \Exception($data['response']['reason'], $data['response']['code']);
throw new BaseException(['msg'=>$data['response']['reason'], 'code'=>$data['response']['code']]);
}
return $data['response'];
......
......@@ -21,8 +21,15 @@ class OrderController extends Base
$order_id = $params['order_id'];
$pay_method_id = $params['pay_method_id'] ?? 106;
$extra = [];
if(!empty($params['extra'])) {
if(is_string($params['extra'])) {
$extra = json_decode($params['extra'], true);
}
}
$paySrv = new PayService();
$ret = $paySrv->do_pay($order_id, $user_id, $pay_method_id);
$ret = $paySrv->do_pay($order_id, $user_id, $pay_method_id, $extra);
//兼容C端客户端支付,调整返回结构,ping++ 返回 order,原生:微信、支付宝返回charge
$result = [];
......
......@@ -13,14 +13,14 @@ class OrderService
* @param $userId
* 调用内部服务获取用户订单、子单、分润信息
*/
public static function getFullOrderData($order_id, $user_id) {
public static function getFullOrderData($order_id) {
$url = config('interface', 'order.order.pay_order');
if (!$url) {
throw new CodeSpecialException("failed" . __METHOD__ );
}
$params = ['user_id'=>$user_id, 'order_id'=>$order_id];
$params = ['order_id'=>$order_id];
return Sdk::call($url, $params);
}
......@@ -42,14 +42,14 @@ class OrderService
* @throws CodeSpecialException
* 获取订单子单信息
*/
public static function getOrderItemData($order_item_id, $user_id) {
public static function getOrderItemData($order_item_id) {
//merchant.account.get_role_list
$url = config('interface', 'order.order.pay_order_item');
if (!$url) {
throw new CodeSpecialException("failed" . __METHOD__ );
}
$params = ['user_id'=>$user_id, 'order_item_id'=>$order_item_id];
$params = ['order_item_id'=>$order_item_id];
return Sdk::call($url, $params);
}
}
\ No newline at end of file
......@@ -20,6 +20,7 @@ use Helpers\Sdk;
use Yaf\Application;
use App\Exception\custom\PayException;
use App\Exception\BaseException;
class PayService
{
......@@ -32,17 +33,17 @@ class PayService
private $clear_list = [];
private $clear_items_list = [];
public function do_pay($order_id, $user_id, $pay_method_id = 106)
public function do_pay($order_id, $user_id, $pay_method_id = 105, $extra = [])
{
// 获取订单信息
$data = OrderService::getFullOrderData($order_id, $user_id);
$data = OrderService::getFullOrderData($order_id);
if (empty($data['result']['order_info'])) {
throw new PayException(['cus' => 1]);
}
$order_info = $data['result']['order_info'];
if ($order_info['user_id'] != $user_id) {
throw new PayException(['cus' => 1]);
throw new PayException(['cus' => 2]);
}
$metadata = [
......@@ -80,7 +81,7 @@ class PayService
//获取或创建支付订单
$pay_order = PayOrder::get_valid_order($order_id, $new_pay_order);
if (empty($pay_order)) {
throw new PayException(['cus' => 10]);
throw new PayException(['cus' => 16]);
}
if ($pay_order['pay_order_status'] == Dictionary::O_PAY_STATUS_PAYED) {
......@@ -95,7 +96,7 @@ class PayService
}
if (!empty($ret['error'])) {
throw new \Exception($ret['error']['message'], '2301');
throw new BaseException(['msg'=>$ret['error']['message'], 'code'=>'2301']);
}
if ($ret["status"] == 'paid' || $ret['status'] == 'refunded') {
......@@ -136,11 +137,12 @@ class PayService
'charge_order_no'=> $pay_order['pay_order_id'],
'charge_amount'=> $pay_order['pay_amount'],
'channel'=> $this->getChannel($pay_method_id),
'extra'=> $extra,
];
$pay = PingxxService::getInstance()->pay($ret['id'], $payment);
if (!empty($pay['error'])) {
throw new \Exception($pay['error']['message'], '2002');
throw new BaseException(['msg'=>$pay['error']['message'], 'code'=>'2002']);
}
return $pay;
......@@ -148,8 +150,6 @@ class PayService
} else {
return $ret;
}
}
/**
......@@ -429,7 +429,7 @@ class PayService
$account = [
'account_id' => '100020003201',
'amount' => 0,
'rate' => 3000,
'rate' => 0,
'title' => '平台收益',
];
......
......@@ -4,6 +4,7 @@
namespace App\Services\refund;
use Api\PhpServices\Idgen\Idgen;
use App\Exception\BaseException;
use App\Models\Dictionary;
use App\Models\order\mysql\PayOrder;
use App\Models\order\mysql\PayOrderClearing;
......@@ -33,7 +34,7 @@ class RefundService
public function do_refund($order_item_id, $user_id) {
// 获取子单信息
$ret = OrderService::getOrderItemData($order_item_id, $user_id);
$ret = OrderService::getOrderItemData($order_item_id);
if(empty($ret['result'])) {
throw new RefundException(['cus' => 1]);
}
......@@ -72,7 +73,7 @@ class RefundService
$edit = ['request_pingxx_success_time'=>date('Y-m-d H:i:s')];
RefundOrder::update($edit, ['refund_order_id'=>$data['refund_order']['refund_order_id']]);
} else {
throw new \Exception($ret['error']['message'], '2011');
throw new BaseException(['msg'=>$ret['error']['message'], 'code'=>'2011']);
}
return ['order_item_id'=>$order_item_id];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment