賬戶(hù)中心-->API安全-->設(shè)置API密鑰 自行設(shè)置一個(gè)32位的密鑰" />

国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 微信小程序 微信開(kāi)發(fā) 使用EasyWechat快速開(kāi)發(fā)微信公眾號(hào)支付

使用EasyWechat快速開(kāi)發(fā)微信公眾號(hào)支付

Sep 14, 2017 am 09:58 AM
easywechat 開(kāi)發(fā)

前期準(zhǔn)備:

申請(qǐng)微信支付后, 會(huì)收到2個(gè)參數(shù), 商戶(hù)id,和商戶(hù)key.
注意,這2個(gè)參數(shù),不要和微信的參數(shù)混淆.
微信參數(shù): appid, appkey, token
支付參數(shù): merchant_id(商戶(hù)號(hào)), key(支付密鑰)
支付密鑰怎么得到?
到 https://pay.weixin.qq.com -->賬戶(hù)中心-->API安全-->設(shè)置API密鑰
自行設(shè)置一個(gè)32位的密鑰

微信支付流程:

1、composer安裝EasyWechat包

環(huán)境要求:

  • PHP >= 5.5.9

  • PHP cURL 擴(kuò)展

  • PHP OpenSSL 擴(kuò)展

安裝:

composer require overtrue/wechat:~3.1 -vvv

?2、公眾號(hào)配置

2.1、配置支付目錄及授權(quán)域名

2.2、配置網(wǎng)頁(yè)授權(quán)

?

?3、初始化SDK,創(chuàng)建一個(gè)?EasyWeChat\Foundation\Application?實(shí)例

<?php
use EasyWeChat\Foundation\Application;protected $app=null;public function construct(){   
$options = [   /**
     * Debug 模式,bool 值:true/false
     *
     * 當(dāng)值為 false 時(shí),所有的日志都不會(huì)記錄     */
    &#39;debug&#39;  => true,    /**
     * 賬號(hào)基本信息,請(qǐng)從微信公眾平臺(tái)/開(kāi)放平臺(tái)獲取     */
    &#39;app_id&#39;  => &#39;your-app-id&#39;,         // AppID
    &#39;secret&#39;  => &#39;your-app-secret&#39;,     // AppSecret
    &#39;token&#39;   => &#39;your-token&#39;,          // Token
    &#39;aes_key&#39; => &#39;&#39;,                    // EncodingAESKey,安全模式下請(qǐng)一定要填寫(xiě)!?。?

    /**
     * 日志配置
     *
     * level: 日志級(jí)別, 可選為:
     *         debug/info/notice/warning/error/critical/alert/emergency
     * permission:日志文件權(quán)限(可選),默認(rèn)為null(若為null值,monolog會(huì)取0644)
     * file:日志文件位置(絕對(duì)路徑!!!),要求可寫(xiě)權(quán)限     */
    &#39;log&#39; => [        &#39;level&#39;      => &#39;debug&#39;,
        &#39;permission&#39; => 0777,
        &#39;file&#39;       => &#39;/tmp/easywechat.log&#39;,
    ],    /**
     * OAuth 配置
     *
     * scopes:公眾平臺(tái)(snsapi_userinfo / snsapi_base),開(kāi)放平臺(tái):snsapi_login
     * callback:OAuth授權(quán)完成后的回調(diào)頁(yè)地址     */
    &#39;oauth&#39; => [        
            &#39;scopes&#39;   => [&#39;snsapi_userinfo&#39;],
        &#39;callback&#39; => &#39;/examples/oauth_callback.php&#39;,
    ],    /**
     * 微信支付     */
    &#39;payment&#39; => [        &#39;merchant_id&#39;        => &#39;your-mch-id&#39;,
        &#39;key&#39;                => &#39;key-for-signature&#39;,
        &#39;cert_path&#39;          => &#39;path/to/your/cert.pem&#39;, // XXX: 絕對(duì)路徑!?。?!
        &#39;key_path&#39;           => &#39;path/to/your/key&#39;,      // XXX: 絕對(duì)路徑?。。?!
        &#39;notify_url&#39;         => &#39;默認(rèn)的訂單回調(diào)地址&#39;,       // 你也可以在下單時(shí)單獨(dú)設(shè)置來(lái)想覆蓋它
        // &#39;device_info&#39;     => &#39;013467007045764&#39;,
        // &#39;sub_app_id&#39;      => &#39;&#39;,
        // &#39;sub_merchant_id&#39; => &#39;&#39;,
        // ...
    ],];$this->$app = new Application($options);
}

4. 得到支付對(duì)象payment

$payment =$this->$app->payment;

5、把訂單對(duì)象order(訂單號(hào),金額,openid)以參數(shù)傳入

<?phpuse EasyWeChat\Foundation\Application;use EasyWeChat\Payment\Order; 

$attributes = [ &#39;trade_type&#39; => &#39;JSAPI&#39;, // JSAPI,NATIVE,APP... &#39;body&#39; => &#39;iPad mini 16G 白色&#39;, &#39;detail&#39; => &#39;iPad mini 16G 白色&#39;,
&#39;out_trade_no&#39; => &#39;1217752501201407033233368018&#39;,//訂單號(hào) &#39;total_fee&#39; => 5388, // 單位:分 &#39;notify_url&#39; => &#39;http://xxx.com/order-notify&#39;, // 支付結(jié)果通知網(wǎng)址,如果不設(shè)置則會(huì)使用配置里的默認(rèn)地址 &#39;openid&#39; => &#39;當(dāng)前用戶(hù)的 openid&#39;, // trade_type=JSAPI,此參數(shù)必傳,用戶(hù)在商戶(hù)appid下的唯一標(biāo)識(shí), // ... ]; $order = new Order($attributes);

6.、預(yù)處理,得到一個(gè)預(yù)處理id, payment->prepare(order);

$result = $payment->prepare($order);
if ($result->return_code == &#39;SUCCESS&#39; && $result->result_code == &#39;SUCCESS&#39;){    
$prepayId = $result->prepay_id;
}

7、生成支付JS配置

$json = $payment->configForPayment($prepayId); // 返回 json 字符串,如果想返回?cái)?shù)組,傳第二個(gè)參數(shù) false

8、將把訂單號(hào)和json寫(xiě)入用戶(hù)確認(rèn)支付的模板中,觸發(fā)js,調(diào)起支付

return view(&#39;done&#39;,[&#39;order&#39;=>$ordersn,&#39;json&#39;=>$json]);
<script>$(&#39;form&#39;).submit (function() {
WeixinJSBridge.invoke(&#39;getBrandWCPayRequest&#39;, {!!$json!!},function(res){if(res.err_msg == "get_brand_wcpay_request:ok" ) {// 使用以上方式判斷前端返回,微信團(tuán)隊(duì)鄭重提示:
// res.err_msg將在用戶(hù)支付成功后返回
// ok,但并不保證它絕對(duì)可靠。          }
      }
);return false;
});</script>

9、成功回調(diào)

在用戶(hù)成功支付后,微信服務(wù)器會(huì)向該 訂單中設(shè)置的回調(diào)URL 發(fā)起一個(gè) POST 請(qǐng)求,請(qǐng)求的內(nèi)容為一個(gè) XML。

先在中間件VerifyCsrfToken中配置paid方法無(wú)需走CSRF驗(yàn)證

   public function paid(){$response =$this->$app->payment->handleNotify(function($notify, $successful){    // 使用通知里的 "微信支付訂單號(hào)" 或者 "商戶(hù)訂單號(hào)" 去自己的數(shù)據(jù)庫(kù)找到訂單
    $order = 查詢(xún)訂單($notify->out_trade_no); 
    if (!$order) { // 如果訂單不存在
        return &#39;Order not exist.&#39;; // 告訴微信,我已經(jīng)處理完了,訂單沒(méi)找到,別再通知我了    }    // 如果訂單存在
    // 檢查訂單是否已經(jīng)更新過(guò)支付狀態(tài)
    if ($order->paid_at) { // 假設(shè)訂單字段“支付時(shí)間”不為空代表已經(jīng)支付
        return true; // 已經(jīng)支付成功了就不再更新了    }    // 用戶(hù)是否支付成功
    if ($successful) {        // 不是已經(jīng)支付狀態(tài)則修改為已經(jīng)支付狀態(tài)
        $order->paid_at = time(); // 更新支付時(shí)間為當(dāng)前時(shí)間
        $order->status = &#39;paid&#39;;
    } else { // 用戶(hù)支付失敗
        $order->status = &#39;paid_fail&#39;;
    }    $order->save(); // 保存訂單
    return true; // 返回處理完成});
    return $response;
}

以上是使用EasyWechat快速開(kāi)發(fā)微信公眾號(hào)支付 的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線(xiàn)人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話(huà)題

Laravel 教程
1600
29
PHP教程
1502
276
四款值得推薦的AI輔助編程工具 四款值得推薦的AI輔助編程工具 Apr 22, 2024 pm 05:34 PM

這個(gè)AI輔助編程工具在這個(gè)AI迅速發(fā)展的階段,挖掘出了一大批好用的AI輔助編程工具。AI輔助編程工具能夠提高開(kāi)發(fā)效率、改善代碼質(zhì)量、降低bug率,是現(xiàn)代軟件開(kāi)發(fā)過(guò)程中的重要助手。今天大姚給大家分享4款A(yù)I輔助編程工具(并且都支持C#語(yǔ)言),希望對(duì)大家有所幫助。https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot是一款A(yù)I編碼助手,可幫助你更快、更省力地編寫(xiě)代碼,從而將更多精力集中在問(wèn)題解決和協(xié)作上。Git

AI程序員哪家強(qiáng)?探索Devin、通義靈碼和SWE-agent的潛力 AI程序員哪家強(qiáng)?探索Devin、通義靈碼和SWE-agent的潛力 Apr 07, 2024 am 09:10 AM

2022年3月3日,距世界首個(gè)AI程序員Devin誕生不足一個(gè)月,普林斯頓大學(xué)的NLP團(tuán)隊(duì)開(kāi)發(fā)了一個(gè)開(kāi)源AI程序員SWE-agent。它利用GPT-4模型在GitHub存儲(chǔ)庫(kù)中自動(dòng)解決問(wèn)題。SWE-agent在SWE-bench測(cè)試集上的表現(xiàn)與Devin相似,平均耗時(shí)93秒,解決了12.29%的問(wèn)題。SWE-agent通過(guò)與專(zhuān)用終端交互,可以打開(kāi)、搜索文件內(nèi)容,使用自動(dòng)語(yǔ)法檢查、編輯特定行,以及編寫(xiě)和執(zhí)行測(cè)試。(注:以上內(nèi)容為原內(nèi)容微調(diào),但保留了原文中的關(guān)鍵信息,未超過(guò)指定字?jǐn)?shù)限制。)SWE-A

學(xué)習(xí)如何利用Go語(yǔ)言開(kāi)發(fā)移動(dòng)應(yīng)用程序 學(xué)習(xí)如何利用Go語(yǔ)言開(kāi)發(fā)移動(dòng)應(yīng)用程序 Mar 28, 2024 pm 10:00 PM

Go語(yǔ)言開(kāi)發(fā)移動(dòng)應(yīng)用程序教程隨著移動(dòng)應(yīng)用市場(chǎng)的不斷蓬勃發(fā)展,越來(lái)越多的開(kāi)發(fā)者開(kāi)始探索如何利用Go語(yǔ)言開(kāi)發(fā)移動(dòng)應(yīng)用程序。作為一種簡(jiǎn)潔高效的編程語(yǔ)言,Go語(yǔ)言在移動(dòng)應(yīng)用開(kāi)發(fā)中也展現(xiàn)出了強(qiáng)大的潛力。本文將詳細(xì)介紹如何利用Go語(yǔ)言開(kāi)發(fā)移動(dòng)應(yīng)用程序,并附上具體的代碼示例,幫助讀者快速入門(mén)并開(kāi)始開(kāi)發(fā)自己的移動(dòng)應(yīng)用。一、準(zhǔn)備工作在開(kāi)始之前,我們需要準(zhǔn)備好開(kāi)發(fā)環(huán)境和工具。首

Go語(yǔ)言前端技術(shù)探秘:前端開(kāi)發(fā)新視野 Go語(yǔ)言前端技術(shù)探秘:前端開(kāi)發(fā)新視野 Mar 28, 2024 pm 01:06 PM

Go語(yǔ)言作為一種快速、高效的編程語(yǔ)言,在后端開(kāi)發(fā)領(lǐng)域廣受歡迎。然而,很少有人將Go語(yǔ)言與前端開(kāi)發(fā)聯(lián)系起來(lái)。事實(shí)上,使用Go語(yǔ)言進(jìn)行前端開(kāi)發(fā)不僅可以提高效率,還能為開(kāi)發(fā)者帶來(lái)全新的視野。本文將探討使用Go語(yǔ)言進(jìn)行前端開(kāi)發(fā)的可能性,并提供具體的代碼示例,幫助讀者更好地了解這一領(lǐng)域。在傳統(tǒng)的前端開(kāi)發(fā)中,通常會(huì)使用JavaScript、HTML和CSS來(lái)構(gòu)建用戶(hù)界面

五大熱門(mén)Go語(yǔ)言庫(kù)匯總:開(kāi)發(fā)必備利器 五大熱門(mén)Go語(yǔ)言庫(kù)匯總:開(kāi)發(fā)必備利器 Feb 22, 2024 pm 02:33 PM

五大熱門(mén)Go語(yǔ)言庫(kù)匯總:開(kāi)發(fā)必備利器,需要具體代碼示例Go語(yǔ)言自從誕生以來(lái),受到了廣泛的關(guān)注和應(yīng)用。作為一門(mén)新興的高效、簡(jiǎn)潔的編程語(yǔ)言,Go的快速發(fā)展離不開(kāi)豐富的開(kāi)源庫(kù)的支持。本文將介紹五大熱門(mén)的Go語(yǔ)言庫(kù),這些庫(kù)在Go開(kāi)發(fā)中扮演了至關(guān)重要的角色,為開(kāi)發(fā)者提供了強(qiáng)大的功能和便捷的開(kāi)發(fā)體驗(yàn)。同時(shí),為了更好地理解這些庫(kù)的用途和功能,我們會(huì)結(jié)合具體的代碼示例進(jìn)行講

Android開(kāi)發(fā)最適合的Linux發(fā)行版是哪個(gè)? Android開(kāi)發(fā)最適合的Linux發(fā)行版是哪個(gè)? Mar 14, 2024 pm 12:30 PM

Android開(kāi)發(fā)是一項(xiàng)繁忙而又令人興奮的工作,而選擇一個(gè)適合的Linux發(fā)行版來(lái)進(jìn)行開(kāi)發(fā)則顯得尤為重要。在眾多的Linux發(fā)行版中,究竟哪一個(gè)最適合Android開(kāi)發(fā)呢?本文將從幾個(gè)方面來(lái)探討這一問(wèn)題,并給出具體的代碼示例。首先,我們來(lái)看一下目前流行的幾個(gè)Linux發(fā)行版:Ubuntu、Fedora、Debian、CentOS等,它們都有各自的優(yōu)點(diǎn)和特點(diǎn)。

VSCode最適合哪種框架開(kāi)發(fā)? VSCode最適合哪種框架開(kāi)發(fā)? Mar 25, 2024 pm 02:03 PM

VSCode是一款功能強(qiáng)大、靈活性高、易于擴(kuò)展的開(kāi)源代碼編輯器,廣受開(kāi)發(fā)者青睞。它支持眾多編程語(yǔ)言和框架,能夠滿(mǎn)足不同項(xiàng)目需求。但是,針對(duì)不同的框架,VSCode的優(yōu)勢(shì)可能有所不同。本文將討論VSCode在不同框架開(kāi)發(fā)中的適用性,并提供具體的代碼示例。1.ReactReact是一款流行的JavaScript庫(kù),用于構(gòu)建用戶(hù)界面。在使用React開(kāi)發(fā)項(xiàng)目時(shí),

全面指南:詳解Java虛擬機(jī)安裝過(guò)程 全面指南:詳解Java虛擬機(jī)安裝過(guò)程 Jan 24, 2024 am 09:02 AM

Java開(kāi)發(fā)必備:詳細(xì)解讀Java虛擬機(jī)安裝步驟,需要具體代碼示例隨著計(jì)算機(jī)科學(xué)和技術(shù)的發(fā)展,Java語(yǔ)言已成為廣泛使用的編程語(yǔ)言之一。它具有跨平臺(tái)、面向?qū)ο蟮葍?yōu)點(diǎn),逐漸成為開(kāi)發(fā)人員的首選語(yǔ)言。在使用Java進(jìn)行開(kāi)發(fā)之前,首先需要安裝Java虛擬機(jī)(JavaVirtualMachine,JVM)。本文將詳細(xì)解讀Java虛擬機(jī)的安裝步驟,并提供具體的代碼示

See all articles