Heim  >  Artikel  >  Backend-Entwicklung  >  WeChat-Applet füllt Fallstricke PHP-Entwicklung IIS7

WeChat-Applet füllt Fallstricke PHP-Entwicklung IIS7

不言
不言Original
2018-04-17 11:22:131520Durchsuche

Dieser Artikel stellt hauptsächlich das WeChat-Applet vor, um die Fallstricke der PHP-Entwicklung IIS7 im Detail zu beseitigen. Es hat einen gewissen Referenzwert.

Ein Mall-Applet wurde sieben Tage lang entwickelt. Großer Kopf, aber großer Hintern, unvollständige Dokumentation, man muss alles selbst erkunden

Nachdem es online gegangen ist, muss es auf https basieren. Gleichzeitig ist die Version größer als 1.2 , was auf Alibaba Cloud möglich ist. Um ein kostenloses CA-Zertifikat zu beantragen, gibt es viele Tutorials im Internet. Sie können es durch persönliche Tests am 16.04.2018 beantragen, müssen jedoch zufällig darauf klicken Navigieren Sie zur Beantragung des Zertifikats und klicken Sie auf das kostenlose CA-Zertifikat

Windows 2008 R2 über Windows Power. Um die Version auf 1.2 oder höher zu aktualisieren, gibt es im Internet zahlreiche Tutorials

Im Folgenden geht es hauptsächlich um die Fallstricke, die während der Entwicklung auftreten

1: Melden Sie sich zuerst in der Grube an

Rufen Sie session_key und openid ab

https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html

Frontend-Code

wx.login({
  success: (loginRes) =>  
  { 
    loginRes.code
  }
})

geht über den erhaltenen Code zum Server Warum zum Server gehen und ihn nicht im Frontend vervollständigen?

Im offiziellen Dokument gibt es eine Passage:

Der Sitzungsschlüssel session_key ist der Schlüssel zum Verschlüsseln und Signieren von Benutzerdaten. Um die Datensicherheit der Anwendung selbst zu gewährleisten, sollte der Entwicklerserver den Sitzungsschlüssel weder an das Applet liefern noch diesen Schlüssel an die Außenwelt weitergeben.

Der Server-PHP erhält den Sitzungsschlüssel und die OpenID über https://api.weixin.qq.com/sns/jscode2session

Was den Avatar-Spitznamen des Benutzers usw. betrifft, ist dies möglich über das Frontend abgerufen werden. Die wx.getUserInfo-Schnittstelle erhält

Um zu verhindern, dass die Daten manipuliert werden, stellt WeChat offiziell eine verschlüsselte DatenRückgabewert, der in den verschiedenen auf der folgenden Seite bereitgestellten Sprachen zu finden ist 🎜>ServerseitigDurch Algorithmus freigeschaltet

https://developers.weixin. qq.com/miniprogram/dev/api/signature.html?t=20161122

1: Zahlungsgrube

Ich möchte loben der WeChat-Beamte dafür. Die Dokumente sind wirklich chaotisch, mit einer Seite hier und einer Seite dort, insbesondere im letzten Schritt . Beispielsweise gibt es eine AppID überall, aber sie muss hier großgeschrieben werden.

UmständeWenn Sie sich über den Code nicht sicher sind, stellt der Beamte eine Online-Verifizierung zur Verfügung https://pay.weixin.qq.com/wiki/tools/signverify/

Zahlungsschritte

Benutzer initiiert die Zahlung am Frontend -> der Server -> Der Server übermittelt Parameter und erhält sie von der WeChat-Zahlungsschnittstelle (https://api.mch.weixin.qq.com/pay/unifiedorder) prepay_id->Der Server generiert Verifizierungsparameter und sendet sie an den front-end->Das Front-End führt wx.requestPayment aus

Einheitliches Bestelldokument: https://pay.weixin.qq.com/wiki/doc/ api/wxa/wxa_api.php ?chapter=9_1

wx.requestZahlungsdokument: https://developers.weixin.qq.com/miniprogram/dev/api/api-pay.html

Nach dem Bestehen des Achten Sie bei der einheitlichen Bestellschnittstelle darauf, dass Sie auf die Groß- und Kleinschreibung achten Funktionen zum Konvertieren von Arrays und Pseudo-Abfragen

Übergeben Sie dann $params an das Frontend, um die wx.requestPayment-Schnittstelle aufzurufenDie folgenden werden auf der PHP-Seite entwickelt. Meine häufig verwendeten Kontosperrfunktionen

$params=array(
        'appId'=>'',
        'package'=>'prepay_id='.'',
        'timeStamp'=>'',
        'signType'=>'MD5',
        'nonceStr'=>''
);

$params['paySign']=md5Sign($params);
unset($params['appId']);


/*
by 醉亦逝愁
md5Sign用于小程序服务端签名校验
*/
function md5Sign($params){ 		
    	ksort($params); 
	$stringA=arr2str($params);
	$stringSignTemp=$stringA.'&key='.'商户key(mch_key)';
	$sign=strtoupper(md5($stringSignTemp));
	return $sign;
} 
/*
by 醉亦逝愁
arr2str用于小程序服务端Array转伪Query
*/
function arr2str($array){
 
    $string = [];
 
    if($array && is_array($array)){
 
        foreach ($array as $key=> $value){
            $string[] = $key.'='.$value;
        }
    }
 
    return implode('&',$string);
}
/*
by 醉亦逝愁
arr2str用于小程序服务端Array转Xml
用途https://api.mch.weixin.qq.com/pay/unifiedorder
*/
function arr2xml($arr,$item='root'){        
    $dom = new DOMDocument("1.0"); 
    $item = $dom->createElement($item); 
    $dom->appendChild($item); 
    foreach ($arr as $key=>$val){ 
        $itemx = $dom->createElement(is_string($key)?$key:"item"); 
        $item->appendChild($itemx); 
        if (!is_array($val)){ 
            $text = $dom->createCDATASection($val); 
            $itemx->appendChild($text); 
        }else { 
            arrayToXml($val,$dom,$itemx); 
        } 
    } 
    return $dom->saveXML($item); 
}




Die von der https://api.mch.weixin.qq.com/pay/unifiedorder-Schnittstelle zurückgegebene XML wird durch die folgende Funktion zum Array


. Weitere werden später hinzugefügt.

Verwandte Empfehlungen:

$xmlstring=simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA);
$data=get_object_vars($xmlstring);

PHP WeChat Public Account Development Cash Red Envelope






,


Das obige ist der detaillierte Inhalt vonWeChat-Applet füllt Fallstricke PHP-Entwicklung IIS7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn