微信支付開發流程,信支付開發流程_PHP教程

來源:互聯網
上載者:User

支付開發流程,信支付開發流程


授人以魚不如授人以漁

支付開發流程

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

1.擷取訂單資訊

2.根據訂單資訊和支付相關的帳號產生sign,並且產生支付參數

3.將支付參數資訊POST到伺服器,擷取返回資訊

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

下面分步驟的講一下:

1.支付中相關的必須的訂單參數有三個,分別是:body(商品名或訂單描述),out_trade_no(一般為訂單號)和total_fee(訂單金額,單位“分”,要注意單位問題),在不同的應用中,首先要做的就是擷取訂單中的相關資訊,為支付參數產生做準備。

2.其他必須的支付參數有 appid(appid),mch_id(申請成功後告知),device_info(web端和端該參數都是統一的,為大寫的”WEB“),trade_type(根據使用情境不同,該值也是不同的,外部為”NATIVE“,內部為”JSAPI“),nonce_str(32位隨機字串),spbill_create_ip(發起支付的終端IP,即伺服器IP),notify_url(支付回調地址,伺服器通知網站支付完成與否,修改訂單狀態),sign(簽名),還有一個需要說明的地方,如果trade_type為JSAPI的話,openid為必填的參數。

簽名演算法是比較容易出錯的地方,在於簽名步驟繁瑣,其實很關鍵的是,sign不參與簽名

A:將1、2中提到的除sign外的參數賦值,放到一個數組array裡面,按照字典順序排序,其實就是索引值按照A—Z的順序進行排序。

B:將數群組轉換成字串string,格式為 k1=v1&k2=v2&...kN=vN

C:在此string後加上KEY值(在支付商戶後台使用者自己設定的)現在string = k1=v1&k2=v2&...kN=vN&key=KEY。

D:string = md5(string)

E: sign = strtoupper(string)

至此,sign產生完畢。

將sign添加到array數組裡面產生新的數組。將該數群組轉換為XML。至此,支付的參數準備工作完成。

3.將2中產生的XML,使用POST的方式發送請求到(https://api.mch.weixin.qq.com/pay/unifiedorder),擷取返回的XML資訊,將該資訊轉換成數組格式方便操作。返回的XML資訊如下:

   SUCCESS   OK   wx2421b1c4370ec43b   10000100   IITRi8Iabbblz1Jc   7921E432F65EB8ED0CE9755F0E86D72F   SUCCESS   wx201411101639507cbf6ffd8b0779950874   JSAPI

如果是trade_type==native支付的話,還會多一個參數code_url,該URL為掃碼支付的地址。

4.下面就是支付的過程了。

如果trade_type==native,那麼使用一些方式將code_url轉換成二維碼,使用掃碼就可以了,如果是內部點擊支付的話,需要調用js-sdk中的相關東西,這一步中最關鍵是產生一個json格式的字串。

首先要產生轉換json字串的數組array_jsapi。

A:該數組的參數包括:appId,timeStamp,nonceStr,package,signType(預設為”MD5“),要注意大小寫和上面的數組裡面是不一樣的。

B:使用該數組產生paySign參數,簽名方式同上。

C:將paySign參數追加到array_jsapi數組中。

D:將該數組使用json_encode格式化為字串js_string。

完成上面的工作,就可以在內部進行支付了。

下面為相關支付的範例程式碼:


代碼中js_string即為我們產生的字串。

HTML代碼中調用callpay()函數發起支付。

這樣支付的支付工作就完成了。

下面是回調工作,該功能確保訂單支付成功後,有正確的狀態顯示給使用者。

支付完成後,使用POST請求,將支付結果反饋給網站伺服器,網站伺服器擷取POST資訊,根據支付成功與否,來確定是否修改訂單資訊。

A:將POST參數中的sign去除,並且記錄下來該值。

B:對剩餘的參數進行簽名

C:將簽名結果和POST中的sign進行比對,相同說明簽名正確,根據支付結果修改訂單狀態。

E:返回XML資訊給,確保知道網站已經收到該通知,避免再次推送POST,樣本如下:

  SUCCESS  OK

如果失敗,則返回

  FAIL  失敗原因

至此,支付的整個開發介紹完畢。

有任何疑問,請聯絡QQ:97695870

http://www.bkjia.com/PHPjc/1059477.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1059477.htmlTechArticle支付開發流程,信支付開發流程 授人以魚不如授人以漁 支付開發流程 下面以PHP語言為例,對支付的開發流程進行一下說明。...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.