Quantcast
Channel: IT社区推荐资讯 - ITIndex.net
Viewing all articles
Browse latest Browse all 11810

微信支付js api

$
0
0

       JSAPI 支付前需要调用 登录授权接口获取到用户的 Openid 。所以需要做一次授权,这次授权是不弹出确认框的。
其实质就是在用户访问:

//使用jsapi接口
$jsApi = new JsApi_pub();

//=========步骤1:网页授权获取用户openid============
//通过code获得openid
if (!isset($_GET['code']))
{
    //触发微信返回code码
    $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);
     Header("Location: $url"); 
 }else
 {
     //获取code码,以获取openid
     $code = $_GET['code'];
     $jsApi->setCode($code);
     $openid = $jsApi->getOpenId();
}

 这一步的最终结果就是获得了当前用户的openid

JS API支付

前面的准备工作做好了以后,JS API根据prepay_id生成jsapi支付参数
生成代码如下:

//=========步骤3:使用jsapi调起支付============
$jsApi->setPrepayId($prepay_id);
$jsApiParameters = $jsApi->getParameters();

 生成的json数据如下

 

 

 

{"appId": "wx8888888888888888","timeStamp": "1414411784","nonceStr": "gbwr71b5no6q6ne18c8up1u7l7he2y75","package": "prepay_id=wx201410272009395522657a690389285100","signType": "MD5","paySign": "9C6747193720F851EB876299D59F6C7D"
}

 

在微信浏览器中调试起js接口,代码如下

<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();
            }
        }</script></head><body></br></br></br></br><div align="center"><button style="width:210px; height:30px; background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer;  color:white;  font-size:16px;" type="button" onclick="callpay()" >贡献一下</button></div></body></html>

 当用户点击“贡献一下”按钮时,将弹出微信支付插件,用户可以开始支付。

 

支付通知
支付成功后,通知接口中也将收到支付成功的xml通知 :

<xml><appid><![CDATA[wx8888888888888888]]></appid>  <bank_type><![CDATA[CFT]]></bank_type>  <fee_type><![CDATA[CNY]]></fee_type>  <is_subscribe><![CDATA[Y]]></is_subscribe>  <mch_id><![CDATA[10012345]]></mch_id>  <nonce_str><![CDATA[60uf9sh6nmppr9azveb2bn7arhy79izk]]></nonce_str>  <openid><![CDATA[ou9dHt0L8qFLI1foP-kj5x1mDWsM]]></openid>  <out_trade_no><![CDATA[wx88888888888888881414411779]]></out_trade_no>  <result_code><![CDATA[SUCCESS]]></result_code>  <return_code><![CDATA[SUCCESS]]></return_code>  <sign><![CDATA[0C1D7F2534F1473247550A5A138F0CEB]]></sign>  <sub_mch_id><![CDATA[10012345]]></sub_mch_id>  <time_end><![CDATA[20141027200958]]></time_end>  <total_fee>1</total_fee>  <trade_type><![CDATA[JSAPI]]></trade_type>  <transaction_id><![CDATA[1002750185201410270005514026]]></transaction_id> </xml>

 

 

 

 

 

 

 

 

 



已有 0人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐




Viewing all articles
Browse latest Browse all 11810

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>