Maison >Applet WeChat >Développement WeChat >WeChat Pay développe une interface de partage d'adresses de livraison

WeChat Pay développe une interface de partage d'adresses de livraison

高洛峰
高洛峰original
2017-03-06 10:10:004517parcourir

Cet article présente le processus de développement de l'interface de partage d'adresse de livraison sous paiement WeChat.

1. Introduction

Le partage de l'adresse de livraison WeChat signifie que l'utilisateur ouvre une page Web dans le navigateur WeChat et ne remplit pas l'adresse ultérieurement pour prendre en charge une sélection rapide, et peut le faire. également être ajouté et modifié. Cette adresse est un attribut utilisateur et peut être partagée sur les pages web de différents commerçants. Prend en charge les contrôles natifs pour remplir les adresses, et les données d'adresse seront transmises au commerçant.

Le partage d'adresses est basé sur l'API JavaScript WeChat et ne peut être utilisé que dans le navigateur intégré WeChat, et les appels provenant d'autres navigateurs ne sont pas valides. Dans le même temps, la version 5.0 de WeChat est requise pour le prendre en charge. Il est recommandé d'utiliser l'agent utilisateur pour déterminer le numéro de version actuel de l'utilisateur avant d'appeler l'interface d'adresse. En prenant la version iPhone comme exemple, vous pouvez obtenir les informations d'exemple de version WeChat suivantes via useragent : "Mozilla/5.0(iphone;CPU iphone OS 5_1_1 comme Mac OS Pour le numéro de version de WeChat installé par l'utilisateur, le commerçant peut déterminer si le numéro de version est supérieur ou égal à 5.0.

Format de l'adresse
Les champs de données utilisés pour le partage d'adresse WeChat incluent :

  • Nom du destinataire

  • Région, Provincial et niveau municipal trois

  • Adresse détaillée

  • Code postal

  • Numéro de contact

Parmi eux, la région correspond à l'indicatif régional standard national à trois niveaux, tel que « Province du Guangdong-Ville de Guangzhou-District de Tianhe », le code postal correspondant est 510630. Lien de référence pour plus de détails : http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201401/t20140116_501070.html

2. Autorisation OAuth2.0

Avant d'obtenir l'adresse de livraison, vous devez appeler l'interface d'autorisation de connexion pour obtenir un jeton d'accès OAuth2.0. Par conséquent, l’autorisation doit être effectuée une seule fois et la boîte de confirmation n’apparaîtra pas pour cette autorisation.
L'essence est de passer à

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

🎜>
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://www.php.cn/

Utilisez ceci pour obtenir le paramètre code, et obtenez le access_token et l'openid autorisés en fonction du code. Ce jeton d'accès sera utilisé pour l'interface de partage d'adresse de livraison.

微信支付开发收货地址共享接口

Pour le processus détaillé de sa mise en œuvre, veuillez vous référer à l'autorisation Web OAuth2.0 de développement de la plateforme publique WeChat

2. chaîne aléatoire

La méthode de génération d'une chaîne aléatoire est la suivante

微信支付开发收货地址共享接口

Générer la signature

La les champs participant à la signature addrSign incluent : appId, url (url de la page web qui appelle l'API JavaScript), timestamp, noncestr, accessToken

Après avoir trié tous les paramètres à signer selon le code ASCII du nom du champ du petit au grand (lexicographique ordre), utilisez le format de paire clé-valeur d'URL (c'est-à-dire clé1=valeur1&clé2=valeur2...) sont concaténés dans une chaîne chaîne1.
Il convient de noter ici que tous les noms de paramètres lors du processus de signature sont en caractères minuscules. Par exemple, la chaîne appId après le tri est appid
Pour l'algorithme de signature sur string1, les noms de champs et les valeurs des champs ; ​​utilisez les valeurs d'origine et ne procédez pas à l'échappement d'URL. L'algorithme de signature spécifique est addrSign = SHA1(string1). L'exemple spécifique de génération d'addrSign est donné ici comme suit :

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

i : Après avoir trié les paires clé-valeur via le processus a, string1 est obtenu :

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

ii : Après avoir signé via le processus b, vous pouvez obtenir :

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

Le code d'implémentation est le suivant

微信支付开发收货地址共享接口

4 Obtenir l'adresse de livraison

Modifier et obtenir l'interface editAddress. de l'adresse de livraison de l'utilisateur et appelez-la sur le front-end de la page Web.

Liste des paramètres :

调用方法如下

微信支付开发收货地址共享接口

参数返回:

返回值 说明
err_msg edit_address:ok获取编辑收货地址成功
edit_address:fail获取编辑收货地址失败
username 收货人姓名
telNumber 收货人电话
addressPostalCode 邮编
proviceFirstStageName 国标收货地址第一级地址
addressCitySecondStageName 国标收货地址第二级地址
addressCountiesThirdStageName 国标收货地址第三级地址
addressDetailInfo 详细收货地址信息
nationalCode 收货地址国家码

 

 

五、示例

微信支付开发收货地址共享接口  微信支付开发收货地址共享接口  微信支付开发收货地址共享接口  微信支付开发收货地址共享接口  微信支付开发收货地址共享接口

 

六、完整代码

0ab009c1c6d980c0253937acfceafa69appid = $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);
    }

    //生成随机字符串
    function create_noncestr($length = 16) 
    {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $str = "";
        for ($i = 0; $i 91031963a914a1b7ad87b66e6af1c857 $v){
            $bizParameters[strtolower($k)] = $v;
        }
        //字典序排序
        ksort($bizParameters);
        //URL键值对拼成字符串
        $buff = "";
        foreach ($bizParameters as $k => $v){
            $buff .= $k."=".$v."&";
        }
        //去掉最后一个多余的&
        $buff2 = substr($buff, 0, strlen($buff) - 1);
        //sha1签名
        return sha1($buff2);
    }

    //HTTP请求(支持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;
    }

}

76249c644544e2723b673f512ec3ca64oauth2_authorize($url, "snsapi_base", "fangbei");
    Header("Location: $jumpurl");
}else{
    $oauth2_access_token = $weixin->oauth2_access_token($_GET["code"]);
    $access_token = $oauth2_access_token['access_token'];
}


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

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

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

?>
76c82f278ac045591c9159d381de2c57
100db36a723c770d327fc0aef2ce13b1
    93f0f5c25f18dab9d176bd4f6de5d30e
        a71ddd814d1e6bfc91cd420de31796d5
        b2386ffb911b14667cb8f0f91ea547a7获取共享收货地址6e916e0f7d1e588d4f442bf645aedb2f
        5a9b9ad0f88600bf5b6691a4ccfdc587
        5e18004130b03fd4aaa01fe61a84ebb1
            function callpay()
            {
                WeixinJSBridge.invoke('editAddress',{
                    "appId" : "cc07cc36e588017f83a75f3858bb8b40",
                    "scope" : "jsapi_address",
                    "signType" : "sha1",
                    "addrSign" : "1d3d1c7e9759d351642d39a10497f992",
                    "timeStamp" : "03882a4ce45308c35874272e3b57511d",
                    "nonceStr" : "7b41e26f1ec98d9091c9d3f4ffb4253e",
                },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;
                });
            }
        2cacc6d41bbb37262a98f745aa00fbf0
    9c3bca370b5104690d9ef395f2c5f8d1
    6c04bd5ca3fcae76e30b72ad730ca86d
        6d9483dab1de84c6f6bdd44f695e3158
            c684e25378608a0aa02c2e4b83206e6f
                879b49175114808d868f5fe5e24c4e0b5de06d44a19d3566e996d5b6826f61ad256dedeae30dbd1452c2575fb192a8234b4a09fdb935961d48b7bd6517f5757f
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e结果01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38e0e0f2ed3d0c19f42385c923e27fc6c9701c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e国家码01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38e8792275d6589524c351b58a284fab79301c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e国家01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38ecbb728e5bdd4f595980245b17dd3775e01c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e省01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38e33910a441ee46ebda4a7c3f5cbe59f6301c3ce868d2b3d9bce8da5c1b7e41e5b
                a34de1251f0d9fe1e645927f19a896e8b4d429308760b6c2d20d6300079ed38e市01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38e4c751d017c1077dfbc998d326a6cc75801c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e详细01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38e43f17b3bca69dd70c6c6331a09dad3ab01c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e收货人01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38e3a8fb09ff3825288ec29e7aa04c405b901c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e电话01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38ea07580e7f67acefbd8d7a09498dbedee01c3ce868d2b3d9bce8da5c1b7e41e5b
                f70d0ebff76a19226909a4a79919b5e8b4d429308760b6c2d20d6300079ed38e邮编01c3ce868d2b3d9bce8da5c1b7e41e5bb4d429308760b6c2d20d6300079ed38eb5ec44fb979e70a3b1ecf0b7c9d4d23501c3ce868d2b3d9bce8da5c1b7e41e5b
            f16b1740fad44fb09bfe928bcc527e08
        f5a47148e367a6035fd7a2faa965022e
        dc6dce4a544fdca2df29d5ac0ea9906b
            44e8bc14140e4029c4c8663c9eed246f获取收货地址65281c5ac262bf6d81768915a4a77ac0
        16b28748ea4df4d9c2150843fecfba68

    36cc49f0c466276486e50c850b7e4956
73a6ac4ed44ffec12cee46588e518a5e

 更多微信支付开发收货地址共享接口 相关文章请关注PHP中文网!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn