摘要:項(xiàng)目版本微信的支付邏輯與支付寶的支付有一些差別。調(diào)用微信支付不同接口需要的參數(shù)會(huì)有差別。調(diào)用客戶(hù)端的方式查看微信文檔掃碼支付返回了一個(gè)地址。可直接放入微信的完成調(diào)用。
payment 項(xiàng)目2.0版本
微信的支付邏輯與支付寶的支付有一些差別。為了讓客戶(hù)端忽略這些差別,統(tǒng)一調(diào)用。本sdk做了對(duì)應(yīng)處理。
# SDK調(diào)用
微信支付不同接口需要的參數(shù)會(huì)有差別。請(qǐng)大家在使用接口時(shí),仔細(xì)查看文檔。
use PaymentChargeContext; use PaymentConfig; use PaymentCommonPayException; // 微信支付,必須設(shè)置時(shí)區(qū),否則發(fā)生錯(cuò)誤 date_default_timezone_set("Asia/Shanghai"); // 生成訂單號(hào) 便于測(cè)試 function createPayid() { return date("Ymdhis", time()).substr(floor(microtime()*1000),0,1).rand(0,9); } // 訂單信息 $payData = [ "order_no" => createPayid(), "amount" => "0.01",// 單位為元 ,最小為0.01 "client_ip" => "127.0.0.1", "subject" => "測(cè)試支付", "body" => "支付接口測(cè)試", "extra_param" => "", ]; // 微信掃碼支付,需要設(shè)置的參數(shù) $payData["product_id"] = "123456"; // 微信公眾號(hào)支付,需要的參數(shù) $payData["openid"] = "otijfvr2oMz3tXnaQdKKbQeeBmhM";// 需要通過(guò)微信提供的api獲取該openid /** * 包含客戶(hù)的配置文件 * 本次 2.0 版本,主要的改變是將配置文件獨(dú)立出來(lái),便于客戶(hù)多個(gè)賬號(hào)的情況 * 已經(jīng)使用不同方式讀取配置文件,如:db file cache等 */ $wxconfig = [ "app_id" => "wxxxx", // 公眾賬號(hào)ID "mch_id" => "xxxx",// 商戶(hù)id "md5_key" => "xxxxxx",// md5 秘鑰 "notify_url" => "http://test.helei.com/pay-notify.html", "time_expire" => "14", // 涉及資金流動(dòng)時(shí),需要提供該文件 "cert_path" => dirname(__FILE__) . DIRECTORY_SEPARATOR . "wx" . DIRECTORY_SEPARATOR . "apiclient_cert.pem", "key_path" => dirname(__FILE__) . DIRECTORY_SEPARATOR . "wx" . DIRECTORY_SEPARATOR . "apiclient_key.pem", ]; /** * 實(shí)例化支付環(huán)境類(lèi),進(jìn)行支付創(chuàng)建 */ $charge = new ChargeContext(); try { // 微信 掃碼支付 $type = Config::WX_CHANNEL_QR; // 微信 APP支付 //$type = Config::WX_CHANNEL_APP; // 微信 公眾號(hào)支付 //$type = Config::WX_CHANNEL_PUB; $charge->initCharge($type, $wxconfig); $ret = $charge->charge($payData); } catch (PayException $e) { echo $e->errorMessage();exit; } if ($type === Config::WX_CHANNEL_QR) { $url = urlencode($ret); echo ""; } elseif ($type === Config::WX_CHANNEL_PUB) { $json = $ret; var_dump($json);exit; } elseif (stripos($type, "wx") !== false) { var_dump($ret); } ?>
這里掃碼支付與公眾號(hào)支付分別需要提供不同的參數(shù)。請(qǐng)一定注意進(jìn)行區(qū)分。否則調(diào)用相應(yīng)端口會(huì)拋出異常。
配置文件參數(shù) | 參數(shù)名 | 參數(shù)說(shuō)明 | 是否必須 |
---|---|---|---|
app_id | 公眾賬號(hào)ID/應(yīng)用id | 微信分配的公眾賬號(hào)ID | 是 |
mch_id | 商戶(hù)號(hào) | 微信支付分配的商戶(hù)號(hào) | 是 |
md5_key | 加密的key | 在商戶(hù)中心設(shè)置 | 是 |
notify_url | 通知地址 | 接收微信支付異步通知回調(diào)地址,通知url必須為直接可訪(fǎng)問(wèn)的url,不能攜帶參數(shù)。 | 是 |
time_expire | 交易過(guò)期時(shí)間 | 單位為分鐘,過(guò)期后無(wú)法再次支付 | 是 |
cert_path | 密鑰文件 | 可在微信商戶(hù)后臺(tái)中下載 | 否,退款需要 |
key_path | 密鑰文件 | 可在商戶(hù)中心下載 | 否,退款需要 |
這里需要注意的是,app_id,由于微信的三個(gè)支付接口,需要對(duì)應(yīng)兩個(gè)不同的app_id。因此再開(kāi)發(fā)中一定要注意。
請(qǐng)求參數(shù)參數(shù) | 參數(shù)名 | 參數(shù)說(shuō)明 | 是否必須 |
---|---|---|---|
order_no | 訂單號(hào) | 平臺(tái)根據(jù)規(guī)則生成的訂單號(hào),最長(zhǎng)64位,要在商戶(hù)數(shù)據(jù)庫(kù)中唯一 | 必須 |
amount | 交易總金額 | 該筆訂單的資金總額,單位為RMB-Yuan。取值范圍為[0.01,100000000.00],精確到小數(shù)點(diǎn)后兩位。 | 必須 |
client_ip | 客戶(hù)端IP | 用戶(hù)在創(chuàng)建交易時(shí),該用戶(hù)當(dāng)前所使用機(jī)器的IP。 | 必須 |
subject | 商品名稱(chēng) | 商品的標(biāo)題/交易標(biāo)題/訂單標(biāo)題/訂單關(guān)鍵字等。該參數(shù)最長(zhǎng)為128個(gè)漢字。 | 必須 |
body | 商品描述 | 對(duì)一筆交易的具體描述信息。如果是多種商品,請(qǐng)將商品描述字符串累加傳給body。 | 必須 |
extra_param | 公用回傳參數(shù) | 如果用戶(hù)請(qǐng)求時(shí)傳遞了該參數(shù),則返回給商戶(hù)時(shí)會(huì)回傳該參數(shù)。 | 可選 |
product_id | 商品ID | 掃碼支付,此參數(shù)必傳。此id為二維碼中包含的商品ID,商戶(hù)自行定義。 | 可選 |
openid | 用戶(hù)標(biāo)識(shí) | 公眾號(hào)支付,此參數(shù)必傳,用戶(hù)在商戶(hù)appid下的唯一標(biāo)識(shí)。 | 可選 |
三種支付方式返回值因?yàn)樘幚矸绞讲煌?,微信方面返回了不同的?lèi)型。
app支付返回了需要調(diào)用的數(shù)組。調(diào)用客戶(hù)端的方式 查看微信文檔
掃碼支付返回了一個(gè)地址??缮梢粋€(gè)二維碼,完成支付。
公眾號(hào)支付,返回的是一個(gè)json數(shù)據(jù)??芍苯臃湃胛⑿诺膕dk完成jsapi調(diào)用。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/21900.html
摘要:項(xiàng)目版本微信的退款操作,通過(guò)封裝與前面支付寶退款除了配置文件,基本一樣。微信僅能每次退款筆如果想要實(shí)現(xiàn)一次退訂多筆訂單,可在客戶(hù)端通過(guò)循環(huán)來(lái)處理。 payment 項(xiàng)目2.0版本 微信的退款操作,通過(guò)封裝與前面支付寶退款除了配置文件,基本一樣。 退款代碼如下: use PaymentRefundContext; use PaymentCommonPayException; use P...
摘要:本文是淺析微信支付系列文章的第二篇,主要講解一下普通商戶(hù)接入的支付方式以及其中的不同之處。淺析微信支付前篇大綱微信支付是集成在微信客戶(hù)端的支付功能,用戶(hù)可以通過(guò)手機(jī)完成快速的支付流程。目前微信支付支持手機(jī)系統(tǒng)有蘋(píng)果安卓和。 本文是【淺析微信支付】系列文章的第二篇,主要講解一下普通商戶(hù)接入的支付方式以及其中的不同之處。 上篇文章講了本系列的大綱,沒(méi)有看過(guò)的朋友們可以看一下。 淺析微信支...
摘要:支持的付款方式主打銀聯(lián)信用卡等,付款可以及時(shí)到賬。支持的付款方式主要是微信支付寶和京東支付。支持微信支付寶掃碼支付。 最近在開(kāi)發(fā)自己的網(wǎng)站,想要接入一個(gè)第三方的支付平臺(tái),但是處在創(chuàng)業(yè)初期,還沒(méi)能成立公司,所以沒(méi)有企業(yè)資質(zhì),想接入一款安全且性?xún)r(jià)比高的收款產(chǎn)品。以本人選擇困難癥再加點(diǎn)小糾結(jié)的個(gè)性,對(duì)現(xiàn)有的一些第三方支付接口做了一個(gè)對(duì)比,希望能給有相同需要的和正在尋求相關(guān)解決方案的朋友提供一...
摘要:支付寶支持網(wǎng)站支付,支付,支付和當(dāng)面付,但是要想接入網(wǎng)站,需要網(wǎng)站備案,并且還要有營(yíng)業(yè)執(zhí)照??墒?,這個(gè)途徑后來(lái)經(jīng)過(guò)證實(shí),支付寶已經(jīng)停用。缺點(diǎn)也是相當(dāng)?shù)拿黠@只有支付寶可以用這種方式,因?yàn)槲⑿攀窃趦?nèi)部有一個(gè)公眾號(hào)形式的提示。 0.背景 前段時(shí)間準(zhǔn)備把自己的博客做成付費(fèi)閱讀或者訂閱的形式,雖然沒(méi)想著要贏(yíng)利多少錢(qián),但是起碼養(yǎng)的起自己站點(diǎn)域名服務(wù)器費(fèi)用即可。但是大家都懂,草根站長(zhǎng),又沒(méi)公司,想...
閱讀 3193·2020-01-08 12:17
閱讀 2050·2019-08-30 15:54
閱讀 1207·2019-08-30 15:52
閱讀 2101·2019-08-29 17:18
閱讀 1092·2019-08-29 15:34
閱讀 2517·2019-08-27 10:58
閱讀 1928·2019-08-26 12:24
閱讀 437·2019-08-23 18:23