Maison  >  Article  >  Applet WeChat  >  Lien dynamique de développement de paiement WeChat Exemple de code de paiement natif

Lien dynamique de développement de paiement WeChat Exemple de code de paiement natif

高洛峰
高洛峰original
2017-03-27 14:12:392900parcourir

Cet article présente principalement le processus de mise en œuvre du paiement natif basé sur le code QR de lien dynamique sous le paiement WeChat, dans l'espoir d'apporter une aide aux partenaires qui développent le paiement WeChat

Remarque :

WeChat Pay est désormais divisé en version v2 et version v3. Ceux qui ont postulé avant le 10 septembre 2014 sont la version v2, et ceux qui ont postulé après cela sont la version v3. La version V3 de WeChat Pay n'a pas le paramètre paySignKey. Cet article présente WeChat Pay v3.

1. Générer des informations sur le produit

Pendant le processus de paiement par lien dynamique, la transaction du produit est d'abord générée, puis la transaction de paiement est effectuée.

1. 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","贡献一分钱");//商品描述
  $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","NATIVE");//交易类型
  //非必填参数,商户可根据实际情况选填
  $unifiedOrder->setParameter("device_info","100001");//设备号

Les paramètres ci-dessus sont finalement encapsulés dans des paramètres XML similaires aux suivants

<xml>
 <body><![CDATA[贡献一分钱]]></body>
 <out_trade_no><![CDATA[100001_1433009089]]></out_trade_no>
 <total_fee>1</total_fee>
 <notify_url><![CDATA[http://www.doucube.com/weixin/demo/notify_url.php]]></notify_url>
 <trade_type><![CDATA[NATIVE]]></trade_type>
 <device_info>100001</device_info>
 <appid><![CDATA[wx1d065b0628e21103]]></appid>
 <mch_id>1237905502</mch_id>
 <spbill_create_ip><![CDATA[61.129.47.79]]></spbill_create_ip>
 <nonce_str><![CDATA[gwpdlnn0zlfih21gipjj5z53i7vea8e8]]></nonce_str>
 <sign><![CDATA[C5A1E210F9B4402D8254F731882F41AC]]></sign>
</xml>

2. Appelez la demande de paiement unifiée

. pour envoyer 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><![CDATA[SUCCESS]]></return_code> 
 <return_msg><![CDATA[OK]]></return_msg> 
 <appid><![CDATA[wx1d065b0628e21103]]></appid> 
 <mch_id><![CDATA[1237905502]]></mch_id> 
 <device_info><![CDATA[100001]]></device_info> 
 <nonce_str><![CDATA[6u8ovTtFupTagsiY]]></nonce_str> 
 <sign><![CDATA[E84D8BC2331766DD685591F908367FF1]]></sign> 
 <result_code><![CDATA[SUCCESS]]></result_code> 
 <prepay_id><![CDATA[wx20150531020450bb586eb2f70717331240]]></prepay_id> 
 <trade_type><![CDATA[NATIVE]]></trade_type> 
 <code_url><![CDATA[weixin://wxpay/bizpayurl?pr=dNp7omD]]></code_url> 
</xml>

De cette façon, vous obtenez un code_url

Le programme génère un code QR à partir du code_url, puis le fournit à l'utilisateur pour qu'il le scanne

Paiement de l'utilisateur

1. Paiement de l'utilisateur

Une fois le paiement de l'utilisateur réussi, WeChat enverra une notification XML à notify_url avec le contenu suivant

<xml>
 <appid><![CDATA[wx1d065b0628e21103]]></appid> 
 <bank_type><![CDATA[CFT]]></bank_type> 
 <cash_fee><![CDATA[1]]></cash_fee> 
 <device_info><![CDATA[100001]]></device_info> 
 <fee_type><![CDATA[CNY]]></fee_type> 
 <is_subscribe><![CDATA[N]]></is_subscribe> 
 <mch_id><![CDATA[1237905502]]></mch_id> 
 <nonce_str><![CDATA[gwpdlnn0zlfih21gipjj5z53i7vea8e8]]></nonce_str> 
 <openid><![CDATA[oMNKHuBTW4YWgNGAVQW00tWK6auM]]></openid> 
 <out_trade_no><![CDATA[100001_1433009089]]></out_trade_no> 
 <result_code><![CDATA[SUCCESS]]></result_code> 
 <return_code><![CDATA[SUCCESS]]></return_code> 
 <sign><![CDATA[03EEDE7ADE2ABB7916795F37F19A3D13]]></sign> 
 <time_end><![CDATA[20150531020838]]></time_end> 
 <total_fee>1</total_fee> 
 <trade_type><![CDATA[NATIVE]]></trade_type> 
 <transaction_id><![CDATA[1002750205201505310187709542]]></transaction_id> 
</xml>

Après réception de notification_url, une confirmation le message de réussite sera renvoyé au serveur WeChat

<xml>
 <return_code><![CDATA[SUCCESS]]></return_code>
</xml>

De cette manière, un lien dynamique natif est complété.

Utilisez l'interface de requête de commande pour interroger la commande et renvoyer ce qui suit

Statut de la transaction : SUCCÈS
Numéro d'appareil : 100001
ID utilisateur : oMNKHuBTW4YWgNGAVQW00tWK6auM
S'il faut suivre le compte public : N
Type de transaction : NATIVE
Banque de paiement : CFT
Montant total : 1
Montant du coupon de trésorerie :
Type de devise : CNY
Numéro d'ordre de paiement WeChat : 1002750205201505310187709542
Numéro de commande du marchand : 100001_1433009089
Ensemble de données du marchand : Array
Délai d'achèvement du paiement : 20150531020837

Ce qui précède est la collecte d'informations sur le lien dynamique de paiement WeChat Paiement natif. J'espère que cela pourra aider les amis qui. développer le paiement 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!

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