mOpenId = $openid; } public function gen_pay($pay_sn,$fee,$order_sn,$subject) { Log::record(__FUNCTION__,Log::DEBUG); $input = new WxPayUnifiedOrder(); $input->SetBody($subject); //商品或支付单简要描述 $input->SetAttach($pay_sn); //附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 $out_trade_no = $pay_sn . sprintf("%03d",mt_rand(0,999)); //给微信用的每次重新生成的商户订单SN, 避免二次支付, 数额修改导致支付失败 $input->SetOut_trade_no($out_trade_no);//商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号 $input->SetTotal_fee("{$fee}");//订单总金额,单位为分,详见支付金额 $input->SetTime_start(date("YmdHis")); //订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则 $input->SetTime_expire(date("YmdHis", time() + 600));//订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则 $input->SetNotify_url(self::wx_notifyurl); $input->SetTrade_type("JSAPI"); $input->SetOpenid($this->mOpenId); $input->SetSpbill_create_ip(util::real_ip()); Log::record("1",Log::DEBUG); $order = WxPayApi::unifiedOrder($input); Log::record(json_encode($order),Log::DEBUG); if(!array_key_exists("appid", $order) || !array_key_exists("prepay_id", $order) || $order['prepay_id'] == "") { Log::record("3",Log::DEBUG); throw new WxPayException("参数错误"); } $jsapi = new WxPayJsApiPay(); $jsapi->SetAppid($order["appid"]); $timeStamp = time(); $jsapi->SetTimeStamp("$timeStamp"); $jsapi->SetNonceStr(WxPayApi::getNonceStr()); $jsapi->SetPackage("prepay_id=" . $order['prepay_id']); $jsapi->SetSignType("MD5"); $jsapi->SetPaySign($jsapi->MakeSign()); Log::record("4",Log::DEBUG); return array("data" => $jsapi->GetValues()); } public function on_notify($post) { } }