AntiAdditionCheck(); # 防沉迷金额校验 if ($resp->err != 0) { exit($resp); # 返回 } if ($req->InserDataBase()) { # 订单数据入库 CLog::pay($tag . ' 创建订单' . $req); $input = new WxPayUnifiedOrder(); # 微信下单参数 $input->SetBody($req->product_name); # 商品描述,格式: 应用名称-商品WxPayConfig::APPID . "-" . $input->SetAttach($req->callbackInfo); # 透传参数 $input->SetOut_trade_no($req->cpOrderId); # cporderidd $input->SetTotal_fee($req->amount * 100); # 正式: 总价格,单位:分 // $input->SetTotal_fee($req->amount); //*100 # 测试: 总价格,单位:分 $input->SetTime_start(date("YmdHis")); # 开始时间 $input->SetTime_expire(date("YmdHis", time() + 600)); # 过期时间 $input->SetGoods_tag("test"); # 活动标记,不管 $input->SetNotify_url($req->notifyUrl); # 支付回调地址 $input->SetTrade_type("APP"); # 交易类型, // $input->SetTrade_type("JSAPI"); // $input->SetOpenid($openId); # jsapi需要,其他非必需 CLog::pay("[weixin]统一下单"); CLog::pay(var_export($input->GetValues(), true)); $order = WxPayApi::unifiedOrder($input); # 向微信后台发起统一订单请求, 返回值是asoc_array if (isset($order['return_code']) && $order['return_code'] == 'SUCCESS') { # 推送订单请求 if (isset($order["result_code"]) && $order["result_code"] == 'SUCCESS') {# 操作成功 $platPayParams = array(# # 客户端需要的参数 'appid' => WxPayConfig::APPID, # # 微信开平分配的appid 'partnerid' => WxPayConfig::MCHID, # # 微信支付平台分配的商户id 'prepayid' => $order["prepay_id"], # # 预支付交易会话id (微信返回的支付交易会话ID) 'package' => 'Sign=WXPay', # # 扩展字段, 固定值Sign=WXPay 'noncestr' => WxPayApi::getNonceStr(), # # 随机字符串 'timestamp' => \loyalsoft\now(), # # 时间戳 ); $_sign = WxPayConfig::MakeSign($platPayParams); # 计算下签名 $platPayParams["sign"] = $_sign; # 附加签名 $platPayParams['extData'] = $req->callbackInfo; # 透传参数 $ret = array(# # 返回值 'err' => 0, # # 错误码 'platformCode' => 'wx', # # 平台 wx/zfbs 'cpOrderId' => $req->cpOrderId, # # 渠道订单号 'platformInfo' => $platPayParams # 微信所需参数 ); echo json_encode($ret); # 返回客户端 CLog::pay("[$tag.pay]向$tag 后台推送订单成功" . $req); } else { CLog::pay("[$tag.pay]向$tag 后台推送订单操作失败." . $order['err_code_des']); echo payResp::err($order['err_code'], $order['err_code_des']); } } else { CLog::pay($order); CLog::pay("[$tag.pay]向$tag 后台推送订单失败, 通讯失败."); echo payResp::err(1, "微信统一下单请求,通讯失败!"); } // echo Resp::ok($req->retData()); # 返回值 } else { CLog::pay($tag . ' 创建订单失败' . $req); echo payResp::err(1, '后台创建订单失败'); # 返回值 }