Heim  >  Artikel  >  WeChat-Applet  >  PHP implementiert die WeChat-Code-Scan-Zahlungsfunktion

PHP implementiert die WeChat-Code-Scan-Zahlungsfunktion

小云云
小云云Original
2018-03-20 14:20:092822Durchsuche

Dieser Artikel zeigt Ihnen hauptsächlich die Methode zur Implementierung der WeChat-Scancode-Zahlungsfunktion in PHP. Ich hoffe, dass er allen helfen kann.

Führen Sie die WeChat-Zahlung auf dem WeChat-Mobiltelefon durch und rufen Sie die JSAPI-Zahlung direkt auf. Dies kann die Zahlung auf der in WeChat geöffneten Seite ermöglichen, z. B. in der WeChat Mall. Weitere Informationen zur JSAPI-Zahlung auf WeChat : PHP implementiert WeChat-Zahlung (jsapi-Zahlung) und Rückerstattung (keine Integration des Zahlungs-SDK erforderlich); aber manchmal verfügt das Einkaufszentrum auch über eine PC-Seite, und Sie müssen die WeChat-Zahlung auf der PC-Seite verwenden, Sie müssen den Zahlungs-QR-Code generieren auf der PC-Seite und scannen Sie dann den Code auf WeChat, um die Zahlung abzuschließen. Zum Beispiel:


Hier sprechen wir hauptsächlich über die spezifische Implementierung der Scancode-Zahlung und Rückerstattung auf dem PC:

<span style="font-size: 14px;">/**<br/> * 微信支付请求接口(POST)<br/> * @param string $goods_id 	商品ID<br/> * @param string $body 		商品简单描述<br/> * @param string $order_sn  订单编号<br/> * @param string $total_fee 金额<br/> * @return  json的数据<br/> */<br/>public function wxpay($goods_id,$total_fee,$body,$order_sn){<br/>	$config = $this->config;<br/>	<br/>	//统一下单参数构造<br/>	$unifiedorder = array(<br/>		&#39;appid&#39;			=> $config[&#39;appid&#39;],<br/>		&#39;mch_id&#39;		=> $config[&#39;mch_id&#39;],<br/>		&#39;device_info&#39;	=> &#39;WEB&#39;,<br/>		&#39;nonce_str&#39;		=> self::getNonceStr(),<br/>		&#39;body&#39;			=> $body,<br/>		&#39;out_trade_no&#39;	=> $order_sn,<br/>		&#39;total_fee&#39;		=> $total_fee * 100,<br/>		&#39;spbill_create_ip&#39;	=> self::getip(),<br/>		&#39;notify_url&#39;	=> &#39;http://&#39;.$_SERVER[&#39;HTTP_HOST&#39;].&#39;/notify.php&#39;,<br/>		&#39;trade_type&#39;	=> &#39;NATIVE&#39;,<br/>		&#39;product_id&#39;	=> $goods_id<br/>	);<br/>	$unifiedorder[&#39;sign&#39;] = self::makeSign($unifiedorder);<br/>	<br/>	//return $unifiedorder;<br/>	<br/>	//请求数据,统一下单<br/>	$xmldata = self::array2xml($unifiedorder);<br/>	$url = &#39;https://api.mch.weixin.qq.com/pay/unifiedorder&#39;;<br/>	$res = self::curl_post_ssl($url, $xmldata);<br/>	if(!$res){<br/>		return array(&#39;status&#39;=>0, &#39;msg&#39;=>"Can&#39;t connect the server" );<br/>	}<br/>	// 这句file_put_contents是用来查看服务器返回的结果 测试完可以删除了<br/>	file_put_contents(&#39;./log.txt&#39;,$res,FILE_APPEND);<br/>	<br/>	$content = self::xml2array($res);<br/>	if(strval($content[&#39;result_code&#39;]) == &#39;FAIL&#39;){<br/>		return array(&#39;status&#39;=>0, &#39;msg&#39;=>strval($content[&#39;err_code&#39;]).&#39;:&#39;.strval($content[&#39;err_code_des&#39;]));<br/>	}<br/>	if(strval($content[&#39;return_code&#39;]) == &#39;FAIL&#39;){<br/>		return array(&#39;status&#39;=>0, &#39;msg&#39;=>strval($content[&#39;return_msg&#39;]));<br/>	}<br/>	<br/>	return $content;<br/>}<br/><br/>/**<br/> * 微信退款(POST)<br/> * @param string(28) $transaction_id 	在微信支付的时候,微信服务器生成的订单流水号,在支付通知中有返回<br/> * @param string $out_refund_no 		商品简单描述<br/> * @param string $total_fee 			微信支付的时候支付的总金额(单位:分)<br/> * @param string $refund_fee 			此次要退款金额(单位:分)<br/> * @return string						xml格式的数据<br/> */<br/>public function refund($transaction_id,$out_refund_no,$total_fee,$refund_fee){<br/>	$config = $this->config;<br/>	<br/>	//退款参数<br/>	$refundorder = array(<br/>		&#39;appid&#39;			=> $config[&#39;appid&#39;],<br/>		&#39;mch_id&#39;		=> $config[&#39;mch_id&#39;],<br/>		&#39;nonce_str&#39;		=> self::getNonceStr(),<br/>		&#39;transaction_id&#39;=> $transaction_id,<br/>		&#39;out_refund_no&#39;	=> $out_refund_no,<br/>		&#39;total_fee&#39;		=> $total_fee * 100,<br/>		&#39;refund_fee&#39;	=> $refund_fee * 100<br/>	);<br/>	$refundorder[&#39;sign&#39;] = self::makeSign($refundorder);<br/>	<br/>	//请求数据,进行退款<br/>	$xmldata = self::array2xml($refundorder);<br/>	$url = &#39;https://api.mch.weixin.qq.com/secapi/pay/refund&#39;;<br/>	$res = self::curl_post_ssl($url, $xmldata);<br/>	if(!$res){<br/>		return array(&#39;status&#39;=>0, &#39;msg&#39;=>"Can&#39;t connect the server" );<br/>	}<br/>	// 这句file_put_contents是用来查看服务器返回的结果 测试完可以删除了<br/>	//file_put_contents(&#39;./log3.txt&#39;,$res,FILE_APPEND);<br/>	<br/>	$content = self::xml2array($res);<br/>	if(strval($content[&#39;result_code&#39;]) == &#39;FAIL&#39;){<br/>		return array(&#39;status&#39;=>0, &#39;msg&#39;=>strval($content[&#39;err_code&#39;]).&#39;:&#39;.strval($content[&#39;err_code_des&#39;]));<br/>	}<br/>	if(strval($content[&#39;return_code&#39;]) == &#39;FAIL&#39;){<br/>		return array(&#39;status&#39;=>0, &#39;msg&#39;=>strval($content[&#39;return_msg&#39;]));<br/>	}<br/>	<br/>	return $content;<br/>}<br/></span>

Zahlung und Rückerstattung sind so einfach, und es ist nicht erforderlich, die Benutzer-OpenID zu erhalten, keine Zertifikatsdatei zu erhalten und das Zahlungsautorisierungsverzeichnis beim Bezahlen nicht zu konfigurieren der gekapselten Zahlungsklassendatei und der Aufrufmethode Einfacher:

<span style="font-size: 14px;">require_once "webwxpay.class.php";<br/><br/>$config = array(<br/>	&#39;appid&#39;			=> &#39;wx123456789876&#39;,<br/>	&#39;mch_id&#39;	 	=> &#39;123456789&#39;,<br/>	&#39;pay_apikey&#39; 	=> &#39;123456789876123456789876123456789876&#39;<br/>);<br/><br/>$wxpay = new WxPay($config);<br/>$result = $wxpay->paytest();<br/>//print_r($result);<br/>scerweima($result[&#39;code_url&#39;]);		//生成的支付二维码,用户可以扫码付款<br/></span>

Zu diesem Zeitpunkt wird der Zahlungs-QR-Code generiert und dann auf WeChat gescannt, um die Zahlung abzuschließen:


Was die Rückrufüberprüfung betrifft, werde ich hier nicht zu sehr ins Detail gehen. Wenn Sie es nicht verstehen, können Sie es tun Schauen Sie sich die Implementierung des WeChat-Zahlungsprozesses (jsapi payment) in ThinkPHP an. Hier finden Sie eine detaillierte Erklärung zum Umgang mit Rückrufen.

Verwandte Empfehlungen:

Entwicklung der WeChat-Zahlungsrückerstattungsfunktion

PHP-Implementierung des Entwicklungscodes für die WeChat-Zahlungsfunktion Teilen

10 Kursempfehlungen zur WeChat-Zahlungsentwicklung

Das obige ist der detaillierte Inhalt vonPHP implementiert die WeChat-Code-Scan-Zahlungsfunktion. 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