WeChat을 통한 주소 정보 획득은 WeChat 결제와 함께 적용됩니다. WeChat 결제 신청을 통과한 후 해당 기능을 사용할 수 있습니다.
위챗몰에서는 위챗페이를 이용하여 사용자의 배송주소를 획득함으로써 사용자가 주소정보를 입력하는 복잡한 과정을 생략하고 사용자 경험을 향상시킬 수 있습니다.
단, 이는 사용자 개인 정보 보호와 관련될 수 있으므로 사용 과정에서 사용자가 이 기능을 사용하도록 적극적으로 선택해야 하며 클릭 작업을 통해서만 사용자의 배송 주소를 얻을 수 있다는 점에 유의해야 합니다. .
작업과정은 다음과 같습니다.
1. 사용자가 장바구니 페이지를 열고 결제를 클릭한 후 WeChat oauth2 페이지로 이동합니다. 주소는 https://open.weixin.qq.com/connect/oauth2/authorize
2.oauth2 페이지는 링크를 결제 페이지로 리디렉션하고 PHP를 사용하여 링크의 코드 매개변수를 얻은 다음 처리 후 accessToken 값을 얻습니다. 서명을 생성하고 이를 매개변수 배열로 조합하여 페이지에 전달합니다.
3. 정산 페이지는 사용자 클릭 이벤트를 사용하고 2에서 생성된 배열 매개변수를 결합하여 주소 획득 기능을 완성합니다. 여기에는 ajax를 사용하여 획득한 주소를 데이터베이스에 기록하는 기능이 있을 수 있으므로 고객이 다음에 구매할 때 이에 대해 걱정할 필요가 없습니다.
세부적으로 주의해야 할 점에 대해 이야기해보겠습니다.
1. WeChat oauth2로 점프하는 단계는 사용자 입장에서는 크게 다르지 않지만, 프로그램에서 해야 할 일이 많습니다. 첫 번째는 oauth2 페이지의 매개변수입니다. 여기서 appid는 WeChat appid이고,redirect_uri는 urlencode 뒤의 주문 결제 페이지 주소, response_type은 고정 코드, 범위는 고정 snsapi_base, 상태는 마음대로 입력할 수 있습니다. #wechat_redirect도 있습니다. 링크의 최종 모습은 다음과 같습니다.
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=주문 결제 주소&response_type=code&scope=snsapi_base&state=안심하세요 #wechat_redirect
2. 사용자는 이 주소에 액세스하고 코드 매개변수가 추가된 주문 결제 주소로 리디렉션됩니다. 이 페이지에서 accessToken은 사용자 정보를 얻기 위한 accessToken입니다. WeChat과 상호작용하기 위한 또 다른 액세스 토큰은 동일하지 않습니다.
GET 요청을 사용하여 accessToken을 얻을 수 있으며, 컬 또는 file_get_contents를 사용할 수 있습니다. 요청 주소는 다음과 같습니다:
여기서 한 가지 주의할 점은 때때로 WeChat이 발작을 일으키고 주문 결제 페이지를 여러 번 연속으로 요청하여 accessToken이 무효화되고 특별한 처리가 필요하다는 것입니다.
여기서 서명 생성은 WeChat 결제의 서명과 다릅니다. 형식은 accesstoken=ACCESSTOKEN&appid=APPID&noncestr=32자리 임의 문자열×tamp=timestamp&url=현재 페이지 URL입니다. 그런 다음 문자열에 대해 sha1 암호화를 수행합니다.
주소, 즉 appID, 범위(기본값은 jsapi_address), signType(기본값은 sha1), addrSign(sha1로 암호화된 문자열)을 가져오는 기능을 달성하려면 프런트 엔드 페이지에서 일련의 매개변수를 사용해야 합니다. 위), timeStamp(위의 Timestamp), nonceStr(위의 임의 문자열).
3. 프런트엔드 페이지에서 다음 js 함수를 사용하여 사용자 주소 가져오기 작업을 완료합니다.
function get_addr() { WeixinJSBridge.invoke('editAddress',{ "appId" : "<?php echo $sign['appId']?>", "scope" : "jsapi_address", "signType" : "sha1", "addrSign" : "<?php echo $sign['addrSign']?>", "timeStamp" : "<?php echo $sign['timeStamp']?>", "nonceStr" : "<?php echo $sign['nonceStr']?>", },function(res){ if(res.err_msg == 'edit_address:ok') { //将地址信息存入数据库 //将地址信息显示在当前页面 document.getElementById("address_info").innerHTML="<b>收件人:"+res.userName+"</b> <b>"+res.telNumber+"</b><br /> 收货地址:"+res.proviceFirstStageName+res.addressCitySecondStageName+res.addressCountiesThirdStageName+res.addressDetailInfo; } else{ alert("获取地址失败,请重新点击"); } }); }
이 시점에서 WeChat을 사용하여 사용자 공유 주소를 얻는 개발이 완료되었습니다.