...
|
...
|
@@ -7,6 +7,7 @@ use addons\epay\library\Service; |
|
|
use app\admin\model\Porder;
|
|
|
use think\Db;
|
|
|
use Yansongda\Pay\Pay;
|
|
|
use app\admin\model\Account;
|
|
|
use think\Log;
|
|
|
use fast\Http;
|
|
|
use think\Validate;
|
...
|
...
|
@@ -16,8 +17,8 @@ use Exception; |
|
|
*/
|
|
|
class Wxpay extends Api
|
|
|
{
|
|
|
protected $noNeedLogin = ['notify','wechatReturn'];
|
|
|
protected $noNeedRight = ['notify','wechatReturn'];
|
|
|
protected $noNeedLogin = ['notify','wechatReturn','notifyCharge'];
|
|
|
protected $noNeedRight = ['notify','wechatReturn','notifyCharge'];
|
|
|
protected $user_id = '';//token存贮user_id
|
|
|
protected $order_status = [];//订单状态
|
|
|
public function _initialize()
|
...
|
...
|
@@ -85,7 +86,46 @@ class Wxpay extends Api |
|
|
}
|
|
|
}
|
|
|
|
|
|
//支付成功回调
|
|
|
/**
|
|
|
* @ApiTitle (商品订单去付款)
|
|
|
* @ApiSummary (商品订单去付款)
|
|
|
* @ApiMethod (POST)
|
|
|
* @ApiRoute (/api/wxpay/toPay)
|
|
|
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
|
|
|
* @ApiParams (name="o_id", type="integer", required=true, description="订单id")
|
|
|
* @ApiReturn ({
|
|
|
"code": 1,
|
|
|
"msg": "成功",
|
|
|
"time": "1554184134",
|
|
|
"data": {
|
|
|
"pay_order_sn": "155418413436253500503"
|
|
|
}
|
|
|
})
|
|
|
*/
|
|
|
public function toPay(){
|
|
|
if($this->request->isGet()){
|
|
|
$o_id = $this->request->get('o_id');//订单id
|
|
|
$pay = $this->auth->genPayOrderSn();//支付订单号
|
|
|
$rule = config('site.orders');
|
|
|
$validate = new Validate($rule['rule'],$rule['msg']);
|
|
|
if (!$validate->check(['o_id'=>$o_id])) {
|
|
|
$this->error($validate->getError());
|
|
|
}
|
|
|
$p_order = new Porder();
|
|
|
$res = $p_order->where(['id'=>$o_id,'uid'=>$this->user_id])->update(['pay_order_sn'=>$pay]);
|
|
|
if($res){
|
|
|
$this->success('成功',['pay_order_sn'=>$pay]);
|
|
|
}else{
|
|
|
$this->error('失败');
|
|
|
}
|
|
|
}else{
|
|
|
$this->error('请求方式错误');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 支付成功回调
|
|
|
*/
|
|
|
public function notify(){
|
|
|
$pay = Service::checkNotify('wechat');
|
|
|
if (!$pay) {
|
...
|
...
|
@@ -102,7 +142,9 @@ class Wxpay extends Api |
|
|
return;
|
|
|
}
|
|
|
|
|
|
//微信异步通知
|
|
|
/**
|
|
|
* 微信异步通知
|
|
|
*/
|
|
|
public function wechatReturn(){
|
|
|
$pay = Service::checkReturn('wechat');
|
|
|
if (!$pay) {
|
...
|
...
|
@@ -113,4 +155,53 @@ class Wxpay extends Api |
|
|
return;
|
|
|
}
|
|
|
|
|
|
public function payCharge(){
|
|
|
if($this->request->isPost()){
|
|
|
$amount = $this->request->request('amount');
|
|
|
$openid = $this->request->post('openid');//小程序传递openid
|
|
|
if(empty($openid)){
|
|
|
$this->error("openid必填");
|
|
|
}
|
|
|
$pay = Pay::wechat(Service::getConfig('wechat'));
|
|
|
if (!$amount || $amount < 0) {
|
|
|
$this->error("充值金额必须大于0");
|
|
|
}
|
|
|
$pay_order_sn = $this->auth->genPayOrderSn();//支付订单号
|
|
|
//构建订单信息
|
|
|
$order = [
|
|
|
'out_trade_no' => $pay_order_sn,//支付订单号
|
|
|
'body' => '广西小纸皮再生资源回收有限公司',
|
|
|
// 'total_fee' => 1,
|
|
|
'total_fee' => floatval($amount)*100,//单位:分
|
|
|
'openid' => $openid,
|
|
|
'notify_url' => url('api/Wxpay/notifyCharge','','',true),
|
|
|
'return_url' => url('api/Wxpay/wechatReturn','','',true),
|
|
|
];
|
|
|
//跳转或输出
|
|
|
$this->success('成功',$pay->miniapp($order));
|
|
|
}else{
|
|
|
$this->error('请求方式错误');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 充值成功回调
|
|
|
*/
|
|
|
public function notifyCharge(){
|
|
|
$pay = Service::checkNotify('wechat');
|
|
|
if (!$pay) {
|
|
|
$this->error('签名错误');
|
|
|
}
|
|
|
//你可以在这里你的业务处理逻辑,比如处理你的订单状态、给会员加余额等等功能
|
|
|
$data = $pay->verify();
|
|
|
if($data['return_code'] == 'SUCCESS' && $data['result_code'] == 'SUCCESS') {
|
|
|
$accountModel = new Account();
|
|
|
Log::info($data);
|
|
|
Log::info('充值回调');
|
|
|
//下面这句必须要执行,且在此之前不能有任何输出
|
|
|
echo $pay->success();
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
} |
...
|
...
|
|