php微信刷卡支付mvc,PHP微信支付

本文目錄一覽:

你好 !! PHP如何實現微信支付 求指教 新手!說清楚一點

通知機制的實現,官方只有文檔沒有demo代碼,對沒搞過的人來說,需要花大量時間來做測試。

從文檔上說的來看,微信每次通知過來的數據,結構比較複雜,是一個多段數據,除了要取出POST數據外,還要取其它的數據。

這裡首先涉及到一個關於php://input與$_POST取值的問題,簡單列幾點如下:

1,Content- Type取值為application/x-www-form-urlencoded時,php會將http請求body相應數據會填入到數組$_POST,填入到$_POST數組中的數據是進行urldecode()解析的結果。(其實,除了該Content-Type,還有 multipart/form-data表示數據是表單數據,稍後我們介紹)

2,php://input數據,只要Content-Type不為 multipart/form-data(該條件限制稍後會介紹)。那麼php://input數據與http entity body部分數據是一致的。該部分相一致的數據的長度由Content-Length指定。

3,僅當Content-Type為application/x-www-form-urlencoded且提交方法是POST方法時,$_POST數據與php://input數據才是”一致”(打上引號,表示它們格式不一致,內容一致)的。其它情況,它們都不一致。

4,php://input讀取不到$_GET數據。是因為$_GET數據作為query_path寫在http請求頭部(header)的PATH字段,而不是寫在http請求的body部分。

幫助我們了解了為什麼xml_rpc服務端讀取數據都是通過file_get_contents(‘php://input’, ‘r’)。

而不是從$_POST中讀取,正是因為xml_rpc數據規格是xml,它的Content-Type是text/xml。

5. php://input碰到了multipart/form-data,請查閱RFC1867對它的描述。multipart/form-data也表示以POST方法提交表單數據,它還伴隨了文件上傳,所以會跟application/x- www-form-urlencoded數據格式不一樣。它會以一更種更合理的,更高效的數據格式傳遞給服務端。當Content-Type為multipart/form-data的時候,即便http請求body中存在數據,php://input也為空,PHP此時,不會把數據填入php://input流。所以,可以確定: php://input不能用於讀取enctype=multipart/form-data數據。

6. 當Content-Type為application/x- www-form-urlencoded時,php://input和$_POST數據是“一致”的,為其它Content-Type的時候,php: //input和$_POST數據數據是不一致的。因為只有在Content-Type為application/x-www-form- urlencoded或者為multipart/form-data的時候,PHP才會將http請求數據包中的body相應部分數據填入$_POST全局變量中,其它情況PHP都忽略。而php://input除了在數據類型為multipart/form-data之外為空外,其它情況都可能不為空

以上轉述這麼多文字的意思,就是說,得用到這兩種方式來讀取微信傳過來的數據。 ..

php為什麼支付成功了返回fail

php支付成功了返回fail是因為後台處理成功了,但是頁面報錯導致提示錯誤。

?php

$service = isset( $_GET [ ‘service’ ]) ? $_GET [ ‘service’ ] : ‘create_direct_pay_by_user’ ;

$services = array( //交易類型

‘create_direct_pay_by_user’ = ‘即時到賬’ ,

‘create_partner_trade_by_buyer’ = ‘擔保交易’ ,

);

if(! array_key_exists ( $service , $services )) exit( ‘錯誤的交易類型’ );

?

p style=”border:2px dotted blue;width:auto;”

label請選擇交易類型:/label

?php foreach ( $services as $key = $val ): ?

?php if( $service == $key ): ?

b style=”color:red”?php echo $val ; ? /b

?php else: ?

ba href=”?php echo url (array( ‘service’ = $key )); ? “?php echo $val ; ? /a/b

?php endif; ?

?php endforeach; ?

/p

?php

//php支付寶支付接口參數 主要如下

//(合作商戶編號,加密串,返回url, 默認編碼,商品名稱,商品簡介,商戶訂單號,物流配送費用)

function getRequestUrl ( $partner , $scode , $return_url , $charset , $subject , $body , $order , $lfee ) {

global $data , $service ;

# 支付寶交易類型

$data [ ‘service’ ] = $service ; //create_partner_trade_by_buyer[擔保交易]create_direct_pay_by_user[即時到賬]

# 合作商戶編號

$data [ ‘partner’ ] = $partner ;

# 請求返回地址

$data [ ‘return_url’ ] = $return_url ;

# 默認編碼

$data [ ‘_input_charset’ ] = $charset ;

# 默認支付渠道

$data [ ‘paymenthod’ ] = ‘bankPay’ ;

# 默認的網銀

$data [ ‘defaultbank’ ] = ‘ICBCB2C’ ;

# 商品名稱

$data [ ‘subject’ ] = $subject ;

# 商品展示URL

$data [ ‘show_url’ ] = ’‘ ;

# 異步通知返回

$data [ ‘notify_url’ ] = ’‘ ;

# 商品簡介

$data [ ‘body’ ] = $body ;

# 商戶訂單號

$data [ ‘out_trade_no’ ] = $order ;

# 物流配送費用

$data [ ‘logistics_fee’ ] = $lfee ;

# 物流費用付款方式

$data [ ‘logistics_payment’ ] = ‘SELLER_PAY’ ; //SELLER_PAY(賣家支付)、BUYER_PAY(買家支付)、BUYER_PAY_AFTER_RECEIVE(貨到付款)

# 物流配送方式

$data [ ‘logistics_type’ ] = ‘POST’ ; //物流配送方式:POST(平郵)、EMS(EMS)、EXPRESS(其他快遞)

# 價格

$data [ ‘price’ ] = ‘10.00’ ;

#$data[‘total_fee’] = ‘10.00’;

# 付款方式

$data [ ‘payment_type’ ] = ‘1’ ;

# 商品數量

$data [ ‘quantity’ ] = ‘1’ ;

# 賣家email

$data [ ‘seller_email’ ] = ‘chen@sjolzy.cn’ ;

$data = array_filter ( $data );

ksort ( $data ); reset ( $data );

$data [ ‘sign’ ] = md5 ( urldecode ( http_build_query ( $data )). $scode );

$data [ ‘sign_type’ ] = ‘MD5’ ;

$url = ‘?’ . http_build_query ( $data );

return $url ;

}

//把支付寶接口的參數 帶入進去測試

$url = getRequestUrl ( ‘2010101908738750’ , ‘ma0werwert6s2bsd1frg7hisaiaz5xjr’ , ” , ‘UTF-8’ , ‘測試商品’ , ‘測試內容’ , uniqid (), ‘0.00’ );

如何用PHP實現微信支付,求教。新手!說明詳細點

以PHP語言為例,對微信支付的開發流程進行一下說明:

1.獲取訂單信息。

2.根據訂單信息和支付相關的賬號生成sign,並且生成支付參數。

3.將支付參數信息POST到微信服務器,獲取返回信息。

4.根據返回信息生成相應的支付代碼(微信內部)或是支付二維碼(非微信內),完成支付。

微信支付開發:發起一個支付點擊支付提示 get_brand_wcpay_request:fail_invalid appid錯誤

說一下我的解決辦法,供大家參考。這個問題的原因還是在微信支付-開發配置的授權目錄設定上,我使用的官方php demo(普通公眾號微信支付),微信支付的調用腳本getBrandWCPayRequest所在的頁面需要是普通的php項目結構,如果是mvc就會報出上面的invalid appid錯誤。所以,我把微信支付的js調用頁面單獨拿出作為一個新的項目就ok了。為了避免mvc到普通php項目結構轉移的麻煩,只需要把getBrandWCPayRequest 的js代碼塊拿到新項目中即可,至於js中使用的動態參數,可以在mvc中整理好以參數的形式傳遞到新項目的微信支付調用頁面即可,支付成功後的異步通知頁面也仍可以寫在mvc項目中。目前該辦法解決了我的微信支付問題,如果有網友解決了mvc的授權問題,可以補充一下。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/184844.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-26 05:02
下一篇 2024-11-26 05:02

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • Spring MVC主要組件

    Spring MVC是一個基於Java語言的Web框架,是Spring Framework的一部分。它提供了用於構建Web應用程序的基本架構,通過與其他Spring框架組件集成,使…

    編程 2025-04-27
  • Python語言的MVC框架

    本文將從以下幾個方面詳細闡述Python語言的MVC框架: 一、MVC框架的基本概念 一般而言,MVC框架被分為Model,View,Controller三部分。Model代表數據…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台服務器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • PHP數組去重詳解

    一、array_unique函數 array_unique是php中常用的數組去重函數,它基於值來判斷元素是否重複,具體使用方法如下: $array = array(‘a’, ‘b…

    編程 2025-04-24

發表回復

登錄後才能評論