Maison >Applet WeChat >Développement WeChat >WeChat Pay développe le paiement H5

WeChat Pay développe le paiement H5

高洛峰
高洛峰original
2017-03-01 09:55:055490parcourir

Cet article présente le processus de mise en œuvre du paiement H5 sous le paiement WeChat.

1. Introduction

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

WeChat Pay développe le paiement H5 WeChat Pay développe le paiement H5

Organigramme

WeChat Pay développe le paiement H5

2. Préparation des informations sur le produit

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>

2. Appelez la demande de paiement unifiée

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é

2. DeepLink

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&timestamp=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 du champ
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
字段名 变量名 必填 类型 示例值 描述
公众账号ID appid String(32) wx8888888888888888 微信分配的公众账号ID
随机字符串 noncestr String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,不长于32位。推荐随机数生成算法
订单详情扩展字符串 package String(32) WAP 扩展字段,固定填写WAP
预支付交易会话标识 prepayid String(64) wx201410272009395522657a690389285100 微信统一下单接口返回的预支付回话标识,用于后续接口调用中使用,该值有效期为2小时
签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 签名,详见签名生成算法
时间戳 timestamp String(32) 1414561699

当前的时间,其他详见时间戳规则

L'heure actuelle, pour d'autres détails, veuillez consulter les règles d'horodatage

Documentation de développement : https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1

Trois , Processus de nouvelle version

WeChat Pay développe le paiement H5

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 !

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