Cet article présente le processus de mise en œuvre du paiement H5 sous le paiement WeChat.
Le paiement H5 est une méthode de paiement par navigateur non WeChat développée sur la base de comptes publics (vous devez demander une autorisation de paiement séparément), qui peut satisfaire la page mobile H5 en dehors de WeChat. . Conditions requises pour le paiement WeChat. .
Adresse test
http://wxpay.weixin.qq.com/pub_v2/pay/wap.v2.php
http://wxpay.weixin.qq .com/mch/pay/h5.v2.php
Rendu
Organigramme
Définir principalement le nom et le prix du produit, ainsi que le numéro de transaction. Le code est le suivant.
include_once("../WxPayPubHelper/WxPayPubHelper.php"); //使用统一支付接口 $unifiedOrder = new UnifiedOrder_pub(); //设置统一支付接口参数 //设置必填参数 //appid已填,商户无需重复填写 //mch_id已填,商户无需重复填写 //noncestr已填,商户无需重复填写 //spbill_create_ip已填,商户无需重复填写 //sign已填,商户无需重复填写 $unifiedOrder->setParameter("body","H5支付测试");//商品描述 $timeStamp = time(); $out_trade_no = WxPayConf_pub::APPID."$timeStamp"; $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号 $unifiedOrder->setParameter("total_fee","1");//总金额 //$unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址 $unifiedOrder->setParameter("trade_type","WAP");//交易类型 //非必填参数,商户可根据实际情况选填 $unifiedOrder->setParameter("device_info","100001");//设备号
Les paramètres ci-dessus sont finalement encapsulés dans des paramètres XML similaires aux suivants
<xml> <out_trade_no></out_trade_no> <total_fee>1</total_fee> //<notify_url></notify_url> <trade_type></trade_type> <device_info>100001</device_info> <appid></appid> <mch_id>1237905502</mch_id> <spbill_create_ip></spbill_create_ip> <nonce_str></nonce_str> <sign></sign></xml>
et envoyez le XML ci-dessus à l'interface de paiement unifiée
https://api.mch.weixin.qq.com/pay/unifiedorder
à obtenez les données XML suivantes
<xml> <return_code></return_code> <return_msg></return_msg> <appid></appid> <mch_id></mch_id> <device_info></device_info> <nonce_str></nonce_str> <sign></sign> <result_code></result_code> <prepay_id></prepay_id> <trade_type></trade_type> </xml>
De cette façon, vous obtiendrez un identifiant prépayé
Le serveur marchand appelle l'interface de commande unifiée. Pour demander une commande, veuillez vous référer à l'API publique [Unified Order] (le trade_type dans l'interface doit être défini comme WAP renverra le prepayid au). marchand. Le commerçant génère un lien profond dans un format fixe et l'utilisateur clique sur le lien profond pour activer le paiement WeChat.
Format du lien profond :
weixin://wap/pay?appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3D123%26prepayid%3Dwx20141203201153d7bac0d2e10889028866%26sign%3D6AF4B69CCC30926F85770F900D098D64%26timestamp%3D1417511263
Les étapes pour générer un lien profond sont les suivantes :
Étape 1 : Assembler les paramètres selon le format de l'URL, $ partie de valeur pour l'encodage d'URL, générez la chaîne 1 :
string1 : key1=Urlencode($value1)&key2=Urlencode($value2, &...
Étape 2 : effectuez l'Urlencode global sur la chaîne1, générez la chaîne2 :
String2=Urlencode (string1);
Étape 3 : Épisser les préfixes pour générer le lien profond final
Par exemple :
String1 :
appid=wxf5b5e87a6a0fde94&noncestr=123&package=WAP&prepayid=wx201412101630480281750c890475924233&sign=53D411FB74FE0B0C79CC94F2AB0E2333×tamp=1417511263
Réconcilier Do URLEncode
string2 une fois pour la chaîne entière1 :
appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3DWAP%26prepayid%3Dwx201412101630480281750c890475924233%26sign%3D53D411FB74FE0B0C79CC94F2AB0E2333%26timestamp%3D1417511263
plus l'en-tête du protocole weixin://wap/pay ? pour obtenir le résultat final deeplink
weixin://wap/pay?appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3DWAP%26prepayid%3Dwx201412101630480281750c890475924233%26sign%3D53D411FB74FE0B0C79CC94F2AB0E2333%26timestamp%3D1417511263
Nom de la variable | Obligatoire | Type | Exemple de valeur | Description | |||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ID de compte public | appid | Oui | String(32) | wx8888888888888888 | L'ID de compte public attribué par WeChat | ||||||||||||||||||||||||||||||||||||||||||
Chaîne de caractères aléatoires | noncestr | est | Chaîne(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | A chaîne aléatoire, ne dépassant pas 32 bits. Algorithme de génération de nombres aléatoires recommandé | ||||||||||||||||||||||||||||||||||||||||||
Chaîne d'extension des détails de la commande | package | Oui td> | Chaîne (32) | WAP | Champ d'extension, remplissez de manière fixe WAP | ||||||||||||||||||||||||||||||||||||||||||
ID de session de transaction prépayée | l'ID de prépaiement | est | String(64) | wx201410272009395522657a690389285100 | L'ID de réponse de prépaiement renvoyé par le WeChat unifié interface de commande pour une utilisation ultérieure Utilisée dans les appels d'interface, cette valeur est valable 2 heures | ||||||||||||||||||||||||||||||||||||||||||
Signature | signe | Oui td> | Chaîne (32) | C380BEC2BFD727A4B6845133519F3AD6 | Signature, voir l'algorithme de génération de signature pour plus de détails | ||||||||||||||||||||||||||||||||||||||||||
Horodatage | horodatage | est | String(32) | 1414561699 |
|
Documentation de développement : https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1
1. L'utilisateur termine la commande côté commerçant et utilise WeChat Pay pour payer
2. à WeChat Pay. Demande (appelez l'interface de commande unifiée) Remarque : Type de transaction trade_type=MWEB
3. WeChat Pay vérifie les autorisations du commerçant
4. le backend du marchand, tel que l'URL de saut de paiement (nom du paramètre "mweb_url", qui est l'adresse de la page de transfert WeChat dans l'organigramme)
5 Le backend du marchand reçoit les paramètres de retour de l'interface de commande unifiée et renvoie les retours. mweb_url vers le front-end
6. Le commerçant accède à la page de transfert WeChat mweb_url via la page front-end (dans cette étape, WeChat Pay vérifiera la référence pour déterminer si la source de la demande est légale)
7. La page de transfert mweb_url réveille activement le caissier de paiement WeChat
8. La page de transfert WeChat Pay est réveillée et la page de transfert mweb_url est fermée en même temps
9. effectue le paiement à la caisse de WeChat Pay
Pour plus d'articles liés au paiement H5 du développement de WeChat Pay, veuillez faire attention au site Web chinois PHP !