Mots clés : Paiement WeChat Paiement WeChat v3 Paiement jsapi Paiement unifié Paiement natif prepay_id
Cet article présente le processus de mise en œuvre de jsapi sous le paiement WeChat
Avant-propos
WeChat Le paiement est désormais divisé en version v2 et version v3. Ceux qui ont postulé avant le 10 septembre 2014 seront en version v2, et ceux qui ont postulé après cela seront en version v3. La version V3 de WeChat Pay n'a pas le paramètre paySignKey. Pour une introduction pertinente à la v2, veuillez vous référer à d'autres articles de Fangbei Studio. Cet article présente WeChat Pay v3.
Mise en œuvre du processus
1. Autorisation OAuth2.0
JSAPI doit appeler l'interface d'autorisation de connexion pour obtenir l'Openid de l'utilisateur avant le paiement. 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 à
Copier après la connexion
lorsque l'utilisateur accède à
Copier après la connexion
pour obtenir le paramètre de code et obtenir l'autorisation access_token et openid en fonction du code
Pour le processus détaillé de sa mise en œuvre, veuillez vous référer à WeChat Public Platform Development (71) OAuth2.0 Web Authorization
Dans la démo de WeChat Pay, le code est
Copier après la connexion
pour cette étape Le résultat final est d'obtenir l'openid de l'utilisateur actuel
1 | ou9dHt0L8qFLI1foP-kj5x1mDWsM
|
Copier après la connexion
2 Paiement unifié
Le paiement unifié consiste à générer des ordres de paiement sous différents scénarios de paiement de JSAPI/NATIVE. /APP et renvoie l'interface du numéro de commande de pré-paiement, actuellement tous les scénarios de paiement WeChat utilisent cette interface
Dans le paiement unifié, les paramètres suivants sont obtenus à partir de la configuration, ou générés automatiquement par la classe, et n'ont pas besoin d'être renseignés par l'utilisateur
1 | $this ->parameters[ "appid" ] = WxPayConf_pub::APPID;
|
Copier après la connexion
Dans le paiement JSAPI, De plus, renseignez les paramètres suivants
Copier après la connexion
Les autres sont des paramètres facultatifs
Copier après la connexion
Ces paramètres enfin former de telles données XML,
1 2 3 4 5 6 7 8 9 10 11 12 | <xml>
<openid><![CDATA[ou9dHt0L8qFLI1foP-kj5x1mDWsM]]></openid>
<body><![CDATA[方倍工作室]]></body>
<out_trade_no><![CDATA[wx88888888888888881414411779]]></out_trade_no>
<total_fee>1</total_fee>
<notify_url><![CDATA[http:
<trade_type><![CDATA[JSAPI]]></trade_type>
<appid><![CDATA[wx8888888888888888]]></appid>
<mch_id>10012345</mch_id>
<spbill_create_ip><![CDATA[61.50.221.43]]></spbill_create_ip>
<nonce_str><![CDATA[60uf9sh6nmppr9azveb2bn7arhy79izk]]></nonce_str>
<sign><![CDATA[2D8A96553672D56BB2908CE4B0A23D0F]]></sign></xml>
|
Copier après la connexion
Soumettre ces données Les données suivantes seront renvoyées à l'interface de paiement unifiée
Copier après la connexion
1 2 3 4 5 6 7 8 9 10 | <xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wx8888888888888888]]></appid>
<mch_id><![CDATA[10012345]]></mch_id>
<nonce_str><![CDATA[Be8YX7gjCdtCT7cr]]></nonce_str>
<sign><![CDATA[885B6D84635AE6C020EF753A00C8EEDB]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<prepay_id><![CDATA[wx201410272009395522657a690389285100]]></prepay_id>
<trade_type><![CDATA[JSAPI]]></trade_type> </xml>
|
Copier après la connexion
, qui contient le Paramètre d'ID de prépaiement le plus important, prepay_id, avec une valeur de
1 | wx201410272009395522657a690389285100
|
Copier après la connexion
3 Paiement API JS
Une fois les préparations précédentes terminées, l'API JS génère des paramètres de paiement jsapi basés sur prepay_id<. 🎜>Le code généré est le suivant
Copier après la connexion
Les données json générées sont les suivantes
1 2 3 4 5 6 7 8 | {
"appId" : "wx8888888888888888" ,
"timeStamp" : "1414411784" ,
"nonceStr" : "gbwr71b5no6q6ne18c8up1u7l7he2y75" ,
"package" : "prepay_id=wx201410272009395522657a690389285100" ,
"signType" : "MD5" ,
"paySign" : "9C6747193720F851EB876299D59F6C7D"
}
|
Copier après la connexion
Déboguer l'interface js dans le navigateur WeChat, le code est le suivant
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <html><head>
<meta http-equiv= "content-type" content= "text/html;charset=utf-8" />
<title>微信安全支付</title>
<script type= "text/javascript" >
function jsApiCall()
{
WeixinJSBridge.invoke( 'getBrandWCPayRequest', <?php echo $jsApiParameters ; ?>, function (res){
WeixinJSBridge.log(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>
<p 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>
</p></body></html>
|
Copier après la connexion
Lorsque l'utilisateur clique sur le bouton « Contribuer », le plug-in de paiement WeChat apparaîtra et l'utilisateur peut commencer le paiement.
4. Notification de paiement
Une fois le paiement réussi, l'interface de notification recevra également une notification XML de paiement réussi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <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>
|
Copier après la connexion
Après réception de notification_url, revenez à confirmez le succès. Message au serveur WeChat
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!