Heim php教程 php手册 微信支付开发当前URL未注册的解决方案

微信支付开发当前URL未注册的解决方案

Jun 07, 2016 am 11:36 AM

微信支付开发当前URL未注册的解决方案
流程实现
1. OAuth2.0授权
JSAPI 支付前需要调用 登录授权接口获取到用户的 Openid 。所以需要做一次授权,这次授权是不弹出确认框的。
其实质就是在用户访问http://www.fangbei.org/wxpay/js_api_call.php时跳转到https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://www.fangbei.org/wxpay/js_api_call.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect以此来获得code参数,并根据code来获得授权access_token及openid

其实现的详细流程可参考 微信公众平台开发(71)OAuth2.0网页授权

在微信支付的Demo中,其代码为


1 //使用jsapi接口<br>  2 $jsApi = new JsApi_pub();<br>  3 <br>  4 //=========步骤1:网页授权获取用户openid============<br>  5 //通过code获得openid<br>  6 if (!isset($_GET['code']))<br>  7 {<br>  8     //触发微信返回code码<br>  9     $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);<br> 10     Header("Location: $url"); <br> 11 }else<br> 12 {<br> 13     //获取code码,以获取openid<br> 14     $code = $_GET['code'];<br> 15     $jsApi->setCode($code);<br> 16     $openid = $jsApi->getOpenId();<br> 17 }这一步的最终结果就是获得了当前用户的openidou9dHt0L8qFLI1foP-kj5x1mDWsM

2. 统一支付
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口
统一支付中以下参数从配置中获取,或由类自动生成,不需要用户填写$this->parameters["appid"] = WxPayConf_pub::APPID;//公众账号ID<br> $this->parameters["mch_id"] = WxPayConf_pub::MCHID;//商户号<br> $this->parameters["spbill_create_ip"] = $_SERVER['REMOTE_ADDR'];//终端ip        <br> $this->parameters["nonce_str"] = $this->createNoncestr();//随机字符串<br> $this->parameters["sign"] = $this->getSign($this->parameters);//签名在JSAPI支付中,另外填写以下参数//统一支付接口中,trade_type为JSAPI时,openid为必填参数!<br> $unifiedOrder->setParameter("openid","$openid");//商品描述<br> $unifiedOrder->setParameter("body","方倍工作室");//商品描述<br> //自定义订单号,此处仅作举例<br> $timeStamp = time();<br> $out_trade_no = WxPayConf_pub::APPID."$timeStamp";<br> $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号 <br> $unifiedOrder->setParameter("total_fee","1");//总金额<br> $unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址 <br> $unifiedOrder->setParameter("trade_type","JSAPI");//交易类型其他为选填参数//非必填参数,商户可根据实际情况选填<br> //$unifiedOrder->setParameter("sub_mch_id","XXXX");//子商户号  <br> //$unifiedOrder->setParameter("device_info","XXXX");//设备号 <br> //$unifiedOrder->setParameter("attach","XXXX");//附加数据 <br> //$unifiedOrder->setParameter("time_start","XXXX");//交易起始时间<br> //$unifiedOrder->setParameter("time_expire","XXXX");//交易结束时间 <br> //$unifiedOrder->setParameter("goods_tag","XXXX");//商品标记 <br> //$unifiedOrder->setParameter("openid","XXXX");//用户标识<br> //$unifiedOrder->setParameter("product_id","XXXX");//商品ID这些参数最终组成了这样的xml数据,<xml><br>   <openid></openid><br>   <br>   <out_trade_no></out_trade_no><br>   <total_fee>1</total_fee><br>   <notify_url></notify_url><br>   <trade_type></trade_type><br>   <appid></appid><br>   <mch_id>10012345</mch_id><br>   <spbill_create_ip></spbill_create_ip><br>   <nonce_str></nonce_str><br>   <sign></sign><br> </xml>将这些数据提交给统一支付接口https://api.mch.weixin.qq.com/pay/unifiedorder将获得返回 如下数据<xml><br>   <return_code></return_code>  <br>   <return_msg></return_msg>  <br>   <appid></appid>  <br>   <mch_id></mch_id>  <br>   <nonce_str></nonce_str>  <br>   <sign></sign>  <br>   <result_code></result_code>  <br>   <prepay_id></prepay_id>  <br>   <trade_type></trade_type> <br> </xml>其中包含了最重要的预支付ID参数,prepay_id,值为 wx201410272009395522657a690389285100

3、JS API支付
前面的准备工作做好了以后,JS API根据prepay_id生成jsapi支付参数
生成代码如下

//=========步骤3:使用jsapi调起支付============$jsApi->setPrepayId($prepay_id);<br> $jsApiParameters = $jsApi->getParameters();生成的json数据如下{<br>     "appId": "wx8888888888888888",<br>     "timeStamp": "1414411784",<br>     "nonceStr": "gbwr71b5no6q6ne18c8up1u7l7he2y75",<br>     "package": "prepay_id=wx201410272009395522657a690389285100",<br>     "signType": "MD5",<br>     "paySign": "9C6747193720F851EB876299D59F6C7D"<br> }在微信浏览器中调试起js接口,代码如下<br> <br>     <meta> <br>     <title>微信安全支付</title> <br>     <script><br /> //调用微信JS api 支付<br /> function jsApiCall()<br /> {<br /> WeixinJSBridge.invoke(<br /> &#039;getBrandWCPayRequest&#039;,<br /> <?php echo $jsApiParameters; ?>,<br /> function(res){<br /> WeixinJSBridge.log(res.err_msg);<br /> //alert(res.err_code+res.err_desc+res.err_msg);<br /> }<br /> );<br /> }<br /> <br /> function callpay()<br /> {<br /> if (typeof WeixinJSBridge == "undefined"){<br /> if( document.addEventListener ){<br /> document.addEventListener(&#039;WeixinJSBridgeReady&#039;, jsApiCall, false);<br /> }else if (document.attachEvent){<br /> document.attachEvent(&#039;WeixinJSBridgeReady&#039;, jsApiCall); <br /> document.attachEvent(&#039;onWeixinJSBridgeReady&#039;, jsApiCall);<br /> }<br /> }else{<br /> jsApiCall();<br /> }<br /> }<br /> </script><br> <br> <br>     <br>     <div> <br>         <button>贡献一下</button><br>     </div> <br> <br> 当用户点击“贡献一下”按钮时,将弹出微信支付插件,用户可以开始支付。



4、支付通知
支付成功后,通知接口中也将收到支付成功的xml通知<xml><br>   <appid></appid>  <br>   <bank_type></bank_type>  <br>   <fee_type></fee_type>  <br>   <is_subscribe></is_subscribe>  <br>   <mch_id></mch_id>  <br>   <nonce_str></nonce_str>  <br>   <openid></openid>  <br>   <out_trade_no></out_trade_no>  <br>   <result_code></result_code>  <br>   <return_code></return_code>  <br>   <sign></sign>  <br>   <sub_mch_id></sub_mch_id>  <br>   <time_end></time_end>  <br>   <total_fee>1</total_fee>  <br>   <trade_type></trade_type>  <br>   <transaction_id></transaction_id> <br> </xml>当然这是所有的支付流程,我们还需要去微信公众号后台去设置。支付授权目录
这里很重要我就是在这里折腾了很久。怎么设置呢,首先要看你支付的当前页面URL
比如是:http://www.fangbei.org/wxpay/js_api_call.php你就必须填写:http://www.fangbei.org/wxpay/假如是:http://www.fangbei.org/wxpay/order/id/56.html你就必须写:http://www.fangbei.org/wxpay/order/id/看出规律了吧,就是把最后一个反斜杠后面的内容去掉就OK了。如果还有什么问题可以留言问我。

AD:真正免费,域名+虚机+企业邮箱=0元

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erfahren Sie mehr über einführende Codebeispiele für die Python-Programmierung Erfahren Sie mehr über einführende Codebeispiele für die Python-Programmierung Jan 04, 2024 am 10:50 AM

Erfahren Sie anhand einführender Codebeispiele mehr über die Python-Programmierung. Python ist eine leicht zu erlernende und dennoch leistungsstarke Programmiersprache. Für Anfänger ist es sehr wichtig, die einführenden Codebeispiele der Python-Programmierung zu verstehen. In diesem Artikel finden Sie einige konkrete Codebeispiele, die Ihnen den schnellen Einstieg erleichtern. Print HelloWorldprint("HelloWorld") Dies ist das einfachste Codebeispiel in Python. Mit der Funktion print() wird der angegebene Inhalt ausgegeben

PHP-Variablen in Aktion: 10 Anwendungsbeispiele aus der Praxis PHP-Variablen in Aktion: 10 Anwendungsbeispiele aus der Praxis Feb 19, 2024 pm 03:00 PM

PHP-Variablen speichern Werte während der Programmlaufzeit und sind für den Aufbau dynamischer und interaktiver WEB-Anwendungen von entscheidender Bedeutung. Dieser Artikel wirft einen detaillierten Blick auf PHP-Variablen und zeigt sie anhand von 10 Beispielen aus der Praxis. 1. Benutzereingaben speichern $username=$_POST["username"];$passWord=$_POST["password"]; Dieses Beispiel extrahiert den Benutzernamen und das Passwort aus der Formularübermittlung und speichert sie zur weiteren Verarbeitung in Variablen. 2. Legen Sie den Konfigurationswert $database_host="localhost";$database_username="username";$database_pa fest

Vom Anfänger bis zum Experten: Code-Implementierung häufig verwendeter Datenstrukturen in der Go-Sprache Vom Anfänger bis zum Experten: Code-Implementierung häufig verwendeter Datenstrukturen in der Go-Sprache Mar 04, 2024 pm 03:09 PM

Titel: Vom Anfänger zur Meisterschaft: Code-Implementierung häufig verwendeter Datenstrukturen in der Go-Sprache. Datenstrukturen spielen eine wichtige Rolle in der Programmierung und sind die Grundlage der Programmierung. In der Go-Sprache gibt es viele häufig verwendete Datenstrukturen, und die Beherrschung der Implementierung dieser Datenstrukturen ist entscheidend, um ein guter Programmierer zu werden. In diesem Artikel werden die häufig verwendeten Datenstrukturen in der Go-Sprache vorgestellt und entsprechende Codebeispiele gegeben, um den Lesern den Einstieg bis zur Beherrschung dieser Datenstrukturen zu erleichtern. 1. Array Array ist eine grundlegende Datenstruktur, bei der es sich um eine Gruppe desselben Typs handelt.

Beispiele für Go-Sprachprogrammierung: Codebeispiele in der Webentwicklung Beispiele für Go-Sprachprogrammierung: Codebeispiele in der Webentwicklung Mar 04, 2024 pm 04:54 PM

„Beispiele zur Go-Sprachprogrammierung: Codebeispiele in der Webentwicklung“ Mit der rasanten Entwicklung des Internets ist die Webentwicklung zu einem unverzichtbaren Bestandteil verschiedener Branchen geworden. Als Programmiersprache mit leistungsstarken Funktionen und überlegener Leistung wird die Go-Sprache von Entwicklern in der Webentwicklung zunehmend bevorzugt. In diesem Artikel wird anhand spezifischer Codebeispiele erläutert, wie die Go-Sprache für die Webentwicklung verwendet wird, damit die Leser die Go-Sprache besser verstehen und zum Erstellen ihrer eigenen Webanwendungen verwenden können. 1. Einfacher HTTP-Server Beginnen wir zunächst mit a

Java implementiert einen einfachen Blasensortierungscode Java implementiert einen einfachen Blasensortierungscode Jan 30, 2024 am 09:34 AM

Das einfachste Codebeispiel für die Blasensortierung in Java ist ein allgemeiner Sortieralgorithmus. Seine Grundidee besteht darin, die zu sortierende Reihenfolge durch Vergleich und Austausch benachbarter Elemente schrittweise anzupassen. Hier ist ein einfaches Java-Codebeispiel, das zeigt, wie die Blasensortierung implementiert wird: publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){int

So schreiben Sie mit PHP Funktionscode für die Bestandsverwaltung im Bestandsverwaltungssystem So schreiben Sie mit PHP Funktionscode für die Bestandsverwaltung im Bestandsverwaltungssystem Aug 06, 2023 pm 04:49 PM

So schreiben Sie mit PHP den Funktionscode für die Bestandsverwaltung im Bestandsverwaltungssystem. Die Bestandsverwaltung ist für viele Unternehmen ein unverzichtbarer Bestandteil. Für Unternehmen mit mehreren Lagern ist die Bestandsverwaltungsfunktion besonders wichtig. Durch die ordnungsgemäße Verwaltung und Nachverfolgung des Lagerbestands können Unternehmen den Lagerbestand auf verschiedene Lager verteilen, die Betriebskosten optimieren und die Effizienz der Zusammenarbeit verbessern. In diesem Artikel erfahren Sie, wie Sie mit PHP Code für Lagerverwaltungsfunktionen schreiben und erhalten relevante Codebeispiele. 1. Richten Sie die Datenbank ein, bevor Sie mit dem Schreiben des Codes für die Lagerverwaltungsfunktion beginnen.

Huawei Cloud Edge Computing Interconnection Guide: Java-Codebeispiele zur schnellen Implementierung von Schnittstellen Huawei Cloud Edge Computing Interconnection Guide: Java-Codebeispiele zur schnellen Implementierung von Schnittstellen Jul 05, 2023 pm 09:57 PM

Huawei Cloud Edge Computing Interconnection Guide: Java-Codebeispiele zur schnellen Implementierung von Schnittstellen Mit der rasanten Entwicklung der IoT-Technologie und dem Aufstieg des Edge Computing beginnen immer mehr Unternehmen, der Anwendung von Edge Computing Aufmerksamkeit zu schenken. Huawei Cloud bietet Edge-Computing-Dienste und stellt Unternehmen äußerst zuverlässige Computerressourcen und eine praktische Entwicklungsumgebung zur Verfügung, wodurch Edge-Computing-Anwendungen einfacher zu implementieren sind. In diesem Artikel erfahren Sie, wie Sie die Huawei Cloud Edge Computing-Schnittstelle schnell über Java-Code implementieren. Zuerst müssen wir die Entwicklungsumgebung vorbereiten. Stellen Sie sicher, dass Sie das Java Development Kit installiert haben (

Anleitung und Beispiele: Erfahren Sie, wie Sie den Auswahlsortierungsalgorithmus in Java implementieren Anleitung und Beispiele: Erfahren Sie, wie Sie den Auswahlsortierungsalgorithmus in Java implementieren Feb 18, 2024 am 10:52 AM

Code-Schreibanleitung und Beispiele für die Java-Auswahlsortierung Die Auswahlsortierung ist ein einfacher und intuitiver Sortieralgorithmus. Die Idee besteht darin, jedes Mal das kleinste (oder größte) Element aus den unsortierten Elementen auszuwählen und es auszutauschen, bis alle Elemente sortiert sind. Dieser Artikel enthält eine Anleitung zum Schreiben von Code für die Auswahlsortierung und fügt spezifischen Java-Beispielcode hinzu. Algorithmusprinzip Das Grundprinzip der Auswahlsortierung besteht darin, das zu sortierende Array in zwei Teile zu unterteilen: sortiert und unsortiert. Dabei wird jeweils das kleinste (oder größte) Element aus dem unsortierten Teil ausgewählt und am Ende des sortierten Teils platziert. Wiederholen Sie das oben Gesagte

See all articles