国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table of Contents
一. 簡(jiǎn)介
二. OAuth2.0授權(quán)
二、獲取隨機(jī)字符串
三、生成簽名
四、獲得收貨地址
五、示例
六、完整代碼
Home WeChat Applet WeChat Development WeChat Pay develops delivery address sharing interface

WeChat Pay develops delivery address sharing interface

Mar 06, 2017 am 10:10 AM
WeChat development

本文介紹微信支付下的收貨地址共享接口的開發(fā)過程。

一. 簡(jiǎn)介

微信收貨地址共享,是指用戶在微信瀏覽器內(nèi)打開網(wǎng)頁(yè),填寫過地址后,后續(xù)可以免填寫支持快速選擇,也可增加和編輯。此地址為用戶屬性,可在各商戶的網(wǎng)頁(yè)中共享使用。支持原生控件填寫地址,地址數(shù)據(jù)會(huì)傳遞到商戶。

地址共享是基于微信JavaScript API 實(shí)現(xiàn),只能在微信內(nèi)置瀏覽器中使用,其他瀏覽器調(diào)用無效。同時(shí),需要微信5.0 版本才能支持,建議通過user agent 來確定用戶當(dāng)前的版本號(hào)后再調(diào)用地址接口。以iPhone 版本為例,可以通過useragent可獲取如下微信版本示例信息:"Mozilla/5.0(iphone;CPU iphone OS 5_1_1 like Mac OS X)AppleWebKit/534.46(KHTML,like Geocko) Mobile/9B206MicroMessenger/5.0"其中5.0 為用戶安裝的微信版本號(hào),商戶可以判定版本號(hào)是否高于或者等于5.0。

地址格式
微信地址共享使用的數(shù)據(jù)字段包括:

  • 收貨人姓名

  • 地區(qū),省市區(qū)三級(jí)

  • 詳細(xì)地址

  • 郵編

  • 聯(lián)系電話

其中,地區(qū)對(duì)應(yīng)是國(guó)標(biāo)三級(jí)地區(qū)碼,如“廣東省-廣州市-天河區(qū)”,對(duì)應(yīng)的郵編是是510630。詳情參考鏈接:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201401/t20140116_501070.html

?

二. OAuth2.0授權(quán)

獲取收貨地址之前前需要調(diào)用 登錄授權(quán)接口獲取到一次OAuth2.0的Access Token 。所以需要做一次授權(quán),這次授權(quán)是不彈出確認(rèn)框的。
其實(shí)質(zhì)就是在用戶訪問

http://www.fangbei.org/wxpay/js_api_call.php

時(shí)跳轉(zhuǎn)到

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://m.miracleart.cn/

以此來獲得code參數(shù),并根據(jù)code來獲得授權(quán)access_token及openid,這個(gè)access token將用于收貨地址共享接口。

微信支付開發(fā)收貨地址共享接口

其實(shí)現(xiàn)的詳細(xì)流程可參考?微信公眾平臺(tái)開發(fā)OAuth2.0網(wǎng)頁(yè)授權(quán)

?

二、獲取隨機(jī)字符串

生成隨機(jī)字符串的方法如下

微信支付開發(fā)收貨地址共享接口

?

三、生成簽名

參與addrSign 簽名的字段包括:appId、url(調(diào)用JavaScript API的網(wǎng)頁(yè)url)、timestamp、noncestr、accessToken
對(duì)所有待簽名參數(shù)按照字段名的ASCII 碼從小到大排序(字典序)后,使用URL 鍵值對(duì)的格式(即key1=value1&key2=value2…)拼接成字符串string1。
這里需要注意的是簽名過程中所有參數(shù)名均為小寫字符,例如appId 在排序后字符串則為appid;
對(duì)string1作簽名算法,字段名和字段值都采用原始值,不進(jìn)行URL 轉(zhuǎn)義。具體簽名算法為addrSign = SHA1(string1)。這里給出生成addrSign 的具體示例如下:

appId=wx17ef1eaef46752cb
url=http://open.weixin.qq.com/
timeStamp=1384841012
nonceStr=123456
accessToken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmgh5FRA

i:經(jīng)過a過程鍵值對(duì)排序后得到string1 為:

accesstoken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmgh5FRA&appid=wx17ef1eaef46752cb&noncestr=123456&timestamp=1384841012&url=http://open.weixin.qq.com/?code=CODE&state=STATE

ii:經(jīng)過b過程簽名后可得到:

addrSign=SHA1(accesstoken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmg
h5FRA&appid=wx17ef1eaef46752cb&noncestr=123456&timestamp=1384841012&url=http://open.weixin.qq.com/?code=CODE&state=STATE)=ca604c740945587544a9cc25e58dd090f200e6fb

實(shí)現(xiàn)代碼如下

微信支付開發(fā)收貨地址共享接口

四、獲得收貨地址

編輯并獲取用戶收貨地址editAddress接口,在網(wǎng)頁(yè)前端調(diào)用。
參數(shù)列表:

參數(shù)必填說明
appId公眾號(hào)appID
scope填寫“jsapi_address”,獲得編輯地址權(quán)限
signType簽名方式,目前僅支持SHA1
addrSign簽名,由各參數(shù)一起參與簽名生成
timeStamp時(shí)間戳
nonceStr隨機(jī)字符串

調(diào)用方法如下

微信支付開發(fā)收貨地址共享接口

參數(shù)返回:

返回值說明
err_msgedit_address:ok獲取編輯收貨地址成功
edit_address:fail獲取編輯收貨地址失敗
username收貨人姓名
telNumber收貨人電話
addressPostalCode郵編
proviceFirstStageName國(guó)標(biāo)收貨地址第一級(jí)地址
addressCitySecondStageName國(guó)標(biāo)收貨地址第二級(jí)地址
addressCountiesThirdStageName國(guó)標(biāo)收貨地址第三級(jí)地址
addressDetailInfo詳細(xì)收貨地址信息
nationalCode收貨地址國(guó)家碼

五、示例

微信支付開發(fā)收貨地址共享接口 微信支付開發(fā)收貨地址共享接口 微信支付開發(fā)收貨地址共享接口 微信支付開發(fā)收貨地址共享接口 微信支付開發(fā)收貨地址共享接口

六、完整代碼

<?php

/*
    方倍工作室 http://www.fangbei.org/
    CopyRight 2014 All Rights Reserved
*/


define(&#39;APPID&#39;,         "wx—b7559b828e3c13e");
define(&#39;APPSECRET&#39;,     "2b21b42d0c497de9a691a6bb5048a601");


class class_weixin
{
    var $appid = APPID;
    var $appsecret = APPSECRET;

    //構(gòu)造函數(shù),獲取Access Token
    public function __construct($appid = NULL, $appsecret = NULL)
    {
        if($appid && $appsecret){
            $this->appid = $appid;
            $this->appsecret = $appsecret;
        }
    }

    //生成OAuth2的URL
    public function oauth2_authorize($redirect_url, $scope, $state = NULL)
    {
        $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$this->appid."&redirect_uri=".$redirect_url."&response_type=code&scope=".$scope."&state=".$state."#wechat_redirect";
        return $url;
    }

    //生成OAuth2的Access Token
    public function oauth2_access_token($code)
    {
        $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$this->appid."&secret=".$this->appsecret."&code=".$code."&grant_type=authorization_code";
        $res = $this->http_request($url);
        return json_decode($res, true);
    }

    //生成隨機(jī)字符串
    function create_noncestr($length = 16) 
    {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $str = "";
        for ($i = 0; $i < $length; $i++ ){
            $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);
        }
        return $str;
    }

    //生成簽名
    function get_biz_sign($bizObj)
    {
        //參數(shù)小寫
        foreach ($bizObj as $k => $v){
            $bizParameters[strtolower($k)] = $v;
        }
        //字典序排序
        ksort($bizParameters);
        //URL鍵值對(duì)拼成字符串
        $buff = "";
        foreach ($bizParameters as $k => $v){
            $buff .= $k."=".$v."&";
        }
        //去掉最后一個(gè)多余的&
        $buff2 = substr($buff, 0, strlen($buff) - 1);
        //sha1簽名
        return sha1($buff2);
    }

    //HTTP請(qǐng)求(支持HTTP/HTTPS,支持GET/POST)
    protected function http_request($url, $data = null)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }

}

<?php

require_once(&#39;wxaddr.class.php&#39;);
$weixin = new class_weixin();
$url = &#39;http://&#39;.$_SERVER[&#39;HTTP_HOST&#39;].$_SERVER[&#39;REQUEST_URI&#39;];

if (!isset($_GET["code"])){
    $jumpurl = $weixin->oauth2_authorize($url, "snsapi_base", "fangbei");
    Header("Location: $jumpurl");
}else{
    $oauth2_access_token = $weixin->oauth2_access_token($_GET["code"]);
    $access_token = $oauth2_access_token[&#39;access_token&#39;];
}


$timestamp = strval(time());
$noncestr = $weixin->create_noncestr();

$obj[&#39;appId&#39;]               = $weixin->appid;
$obj[&#39;url&#39;]                 = $url;
$obj[&#39;timeStamp&#39;]           = $timestamp;
$obj[&#39;noncestr&#39;]            = $noncestr;
$obj[&#39;accesstoken&#39;]         = $access_token;

$signature  = $weixin->get_biz_sign($obj);

?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>獲取共享收貨地址</title>
        <meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;">
        <script language="javascript">
            function callpay()
            {
                WeixinJSBridge.invoke(&#39;editAddress&#39;,{
                    "appId" : "<?php echo $obj[&#39;appId&#39;];?>",
                    "scope" : "jsapi_address",
                    "signType" : "sha1",
                    "addrSign" : "<?php echo $signature;?>",
                    "timeStamp" : "<?php echo $timestamp;?>",
                    "nonceStr" : "<?php echo $noncestr;?>",
                },function(res){ 
                    alert(JSON.stringify(res));  
                    document.form1.address1.value         = res.proviceFirstStageName;
                    document.form1.address2.value         = res.addressCitySecondStageName;
                    document.form1.address3.value         = res.addressCountiesThirdStageName;
                    document.form1.detail.value           = res.addressDetailInfo;
                    document.form1.national.value         = res.nationalCode;
                    document.form1.user.value            = res.userName;
                    document.form1.phone.value            = res.telNumber;
                    document.form1.postcode.value         = res.addressPostalCode;
                    document.form1.errmsg.value         = res.err_msg;
                });
            }
        </script>
    </head>
    <body>
        <form name="form1" target="_blank">
            <table border="1">
                <colgroup><col width="20%"><col width="80%"></colgroup>
                <TR><th>結(jié)果</th><th><INPUT value="" name="errmsg" id="9"></th>
                <TR><th>國(guó)家碼</th><th><INPUT value="" name="national" id="6"></th>
                <TR><th>國(guó)家</th><th><INPUT value="" name="address3" id="3"></th>
                <TR><th>省</th><th><INPUT value="" name="address1" id="1"></th>
                <tr><th>市</th><th><INPUT value="" name="address2" id="2"></th>
                <TR><th>詳細(xì)</th><th><INPUT value="" name="detail"   id="4"></th>
                <TR><th>收貨人</th><th><INPUT value="" name="user" id="7"></th>
                <TR><th>電話</th><th><INPUT value="" name="phone"    id="5"></th>
                <TR><th>郵編</th><th><INPUT value="" name="postcode" id="8"></th>
            </table>
        </form>
        <div>
            <button type="button" onclick="callpay()">獲取收貨地址</button>
        </div>

    </body>
</html>

?更多微信支付開發(fā)收貨地址共享接口?相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1488
72
PHP WeChat development: How to implement message encryption and decryption PHP WeChat development: How to implement message encryption and decryption May 13, 2023 am 11:40 AM

PHP is an open source scripting language that is widely used in web development and server-side programming, especially in WeChat development. Today, more and more companies and developers are starting to use PHP for WeChat development because it has become a truly easy-to-learn and easy-to-use development language. In WeChat development, message encryption and decryption are a very important issue because they involve data security. For messages without encryption and decryption methods, hackers can easily obtain the data, posing a threat to users.

PHP WeChat development: How to implement voting function PHP WeChat development: How to implement voting function May 14, 2023 am 11:21 AM

In the development of WeChat public accounts, the voting function is often used. The voting function is a great way for users to quickly participate in interactions, and it is also an important tool for holding events and surveying opinions. This article will introduce you how to use PHP to implement WeChat voting function. Obtain the authorization of the WeChat official account. First, you need to obtain the authorization of the WeChat official account. On the WeChat public platform, you need to configure the API address of the WeChat public account, the official account, and the token corresponding to the public account. In the process of our development using PHP language, we need to use the PH officially provided by WeChat

Using PHP to develop WeChat mass messaging tools Using PHP to develop WeChat mass messaging tools May 13, 2023 pm 05:00 PM

With the popularity of WeChat, more and more companies are beginning to use it as a marketing tool. The WeChat group messaging function is one of the important means for enterprises to conduct WeChat marketing. However, if you only rely on manual sending, it is an extremely time-consuming and laborious task for marketers. Therefore, it is particularly important to develop a WeChat mass messaging tool. This article will introduce how to use PHP to develop WeChat mass messaging tools. 1. Preparation work To develop WeChat mass messaging tools, we need to master the following technical points: Basic knowledge of PHP WeChat public platform development Development tools: Sub

PHP WeChat development: How to implement customer service chat window management PHP WeChat development: How to implement customer service chat window management May 13, 2023 pm 05:51 PM

WeChat is currently one of the social platforms with the largest user base in the world. With the popularity of mobile Internet, more and more companies are beginning to realize the importance of WeChat marketing. When conducting WeChat marketing, customer service is a crucial part. In order to better manage the customer service chat window, we can use PHP language for WeChat development. 1. Introduction to PHP WeChat development PHP is an open source server-side scripting language that is widely used in the field of Web development. Combined with the development interface provided by WeChat public platform, we can use PHP language to conduct WeChat

PHP WeChat development: How to implement user tag management PHP WeChat development: How to implement user tag management May 13, 2023 pm 04:31 PM

In the development of WeChat public accounts, user tag management is a very important function, which allows developers to better understand and manage their users. This article will introduce how to use PHP to implement the WeChat user tag management function. 1. Obtain the openid of the WeChat user. Before using the WeChat user tag management function, we first need to obtain the user's openid. In the development of WeChat public accounts, it is a common practice to obtain openid through user authorization. After the user authorization is completed, we can obtain the user through the following code

PHP WeChat development: How to implement group message sending records PHP WeChat development: How to implement group message sending records May 13, 2023 pm 04:31 PM

As WeChat becomes an increasingly important communication tool in people's lives, its agile messaging function is quickly favored by a large number of enterprises and individuals. For enterprises, developing WeChat into a marketing platform has become a trend, and the importance of WeChat development has gradually become more prominent. Among them, the group sending function is even more widely used. So, as a PHP programmer, how to implement group message sending records? The following will give you a brief introduction. 1. Understand the development knowledge related to WeChat public accounts. Before understanding how to implement group message sending records, I

Steps to implement WeChat public account development using PHP Steps to implement WeChat public account development using PHP Jun 27, 2023 pm 12:26 PM

How to use PHP to develop WeChat public accounts WeChat public accounts have become an important channel for promotion and interaction for many companies, and PHP, as a commonly used Web language, can also be used to develop WeChat public accounts. This article will introduce the specific steps to use PHP to develop WeChat public accounts. Step 1: Obtain the developer account of the WeChat official account. Before starting the development of the WeChat official account, you need to apply for a developer account of the WeChat official account. For the specific registration process, please refer to the official website of WeChat public platform

How to use PHP for WeChat development? How to use PHP for WeChat development? May 21, 2023 am 08:37 AM

With the development of the Internet and mobile smart devices, WeChat has become an indispensable part of the social and marketing fields. In this increasingly digital era, how to use PHP for WeChat development has become the focus of many developers. This article mainly introduces the relevant knowledge points on how to use PHP for WeChat development, as well as some of the tips and precautions. 1. Development environment preparation Before developing WeChat, you first need to prepare the corresponding development environment. Specifically, you need to install the PHP operating environment and the WeChat public platform

See all articles