微信JSAPI支付接口GET不到参数问题解决
2016-09-25 10:40
525 查看
<?php /** * JS_API支付demo * ==================================================== * 在微信浏览器里面打开H5网页中执行JS调起支付。接口输入输出数据格式为JSON。 * 成功调起支付需要三个步骤: * 步骤1:网页授权获取用户openid * 步骤2:使用统一支付接口,获取prepay_id * 步骤3:使用jsapi调起支付 */ include_once("../WxPayPubHelper/WxPayPubHelper.php"); if($_SERVER['REQUEST_METHOD']=='POST'){ $amount=$_POST['jine']; }else{ $amount=$_GET['jine']; } $total = floatval($amount); $total = round($total*100); // 将元转成分 if(empty($total)){ $total = 100; } //使用jsapi接口 $jsApi = new JsApi_pub(); //=========步骤1:网页授权获取用户openid============ //通过code获得openid if (!isset($_GET['code'])) { //触发微信返回code码 $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL); $state = json_encode(array( "total_fee" => $total, )); $url = str_replace("STATE", $state, $url); //echo $url;die; Header("Location: $url"); }else { //获取code码,以获取openid $code = $_GET['code']; $jsApi->setCode($code); $openid = $jsApi->getOpenId(); $state = $_GET['state']; $state = str_replace("\\", "", $state); $param = json_decode($state, true); $total = $param['total_fee']; } //=========步骤2:使用统一支付接口,获取prepay_id============ //使用统一支付接口 $unifiedOrder = new UnifiedOrder_pub(); //设置统一支付接口参数 //设置必填参数 //appid已填,商户无需重复填写 //mch_id已填,商户无需重复填写 //noncestr已填,商户无需重复填写 //spbill_create_ip已填,商户无需重复填写 //sign已填,商户无需重复填写 $unifiedOrder->setParameter("openid","$openid");//商品描述 $unifiedOrder->setParameter("body","贡献一分钱");//商品描述 //自定义订单号,此处仅作举例 $timeStamp = time(); $out_trade_no = WxPayConf_pub::APPID."$timeStamp"; $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号 $unifiedOrder->setParameter("total_fee",$total);//总金额 $unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址 $unifiedOrder->setParameter("trade_type","JSAPI");//交易类型 //非必填参数,商户可根据实际情况选填 //$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号 //$unifiedOrder->setParameter("device_info","XXXX");//设备号 //$unifiedOrder->setParameter("attach","XXXX");//附加数据 //$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间 //$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间 //$unifiedOrder->setParameter("goods_tag","XXXX");//商品标记 //$unifiedOrder->setParameter("openid","XXXX");//用户标识 //$unifiedOrder->setParameter("product_id","XXXX");//商品ID $prepay_id = $unifiedOrder->getPrepayId(); //=========步骤3:使用jsapi调起支付========= 4000 === $jsApi->setPrepayId($prepay_id); $jsApiParameters = $jsApi->getParameters(); //echo $jsApiParameters; ?> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <title>微信安全支付</title> <script type="text/javascript"> //调用微信JS api 支付 function jsApiCall() { WeixinJSBridge.invoke( 'getBrandWCPayRequest', <?php echo $jsApiParameters; ?>, function(res){ WeixinJSBridge.log(res.err_msg); //alert(res.err_code+res.err_desc+res.err_msg); } ); } function callpay() { if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', jsApiCall, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', jsApiCall); document.attachEvent('onWeixinJSBridgeReady', jsApiCall); } }else{ jsApiCall(); } } callpay(); </script> </head> <body> </body> </html>
相关文章推荐
- 微信 chooseWXPay fail问题解决(非支付目录配置问题),支付接口参数问题
- 11.23关于微信JSAPI缺少参数的问题解决
- 【Android】解决微信调起支付接口没反应,调不起来微信的问题
- 微信接口出现“调用支付jsapi缺少参数appid”
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- 微信h5支付接口开发,出现错误‘商家参数格式有误,请联系商家解决’,访问无法mweb_url
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- url里含有中文参数,已get方式提交到接口,中文编码后有乱码问题的一种解决
- 解决asp服务器端接收不到中文参数的问题
- Spring中ApplicationContextAware接口用法-->解决AppicationContext.getBean('xxxx')时初始化多次数据库连接池问题
- C#开发微信公众号.NET平台MVC微信开发Demo解决收不到消息的问题
- 解决WCF接口无法传递object参数的问题
- Android 访问Webservice接口,参数对象不能串行化问题解决(java.lang.RuntimeException: Cannot serialize)
- tomcat服务器使用get方式请求时参数乱码问题解决
- webservice不能序列化接口问题,返回值为IList或者参数为接口的解决办法。
- 解决jQuery $.getJSON() 传递参数中文乱码问题
- 【java】怎样解决tomcat中get提交中文参数为乱码的问题
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- jsp get方式请求参数中包含中文乱码问题解决