2019-08-09 14:28:12 4290瀏覽
本篇文章扣丁學(xué)堂PHP培訓(xùn)小編給讀者們分享一下PHP實(shí)現(xiàn)微信對(duì)賬單處理,支付對(duì)賬涉及到微信對(duì)賬單的處理,成功時(shí),微信賬單接口返回?cái)?shù)據(jù)以文本表格的方式返回,下面就隨小編來了解一下PHP如何實(shí)現(xiàn)微信對(duì)賬單處理吧。
Ps:至于如何調(diào)用微信接口下載對(duì)賬單,在微信的官方SDK包中就有現(xiàn)成的方法,直接調(diào)用即可。注意對(duì)賬單接口一次只能查詢一天的數(shù)據(jù)。代碼大致如下:
// 引入微信sdk文件 require_once APP_DIR . '/ome/lib/wxpay/lib/WxPay.Api.php'; require_once APP_DIR . '/ome/lib/wxpay/log.php'; // 實(shí)列化下載對(duì)賬單對(duì)象 $input = new WxPayDownloadBill(); // 對(duì)賬單日期 $input->SetBill_date(date("Ymd", strtotime("-1 day"))); // 對(duì)賬單類型 $input->SetBill_type('ALL'); // 獲取賬單信息 $downloadBillResult = WxPayApi::downloadBill($input);
打印$downloadBillResult就會(huì)發(fā)現(xiàn)他是一個(gè)數(shù)據(jù)文本(string),本文程序需要實(shí)現(xiàn)的功能就是從這個(gè)字符串從提取每一筆訂單中的有效信息,參考代碼如下:
/** * 微信對(duì)賬單數(shù)據(jù)處理 * @param $response 對(duì)賬單數(shù)據(jù) * @return array 返回結(jié)果 */ public function deal_WeChat_response($response){ $result = array(); $response = str_replace(","," ",$response); $response = explode(PHP_EOL, $response); foreach ($response as $key=>$val){ if(strpos($val, '`') !== false){ $data = explode('`', $val); array_shift($data); // 刪除第一個(gè)元素并下標(biāo)從0開始 if(count($data) == 24){ // 處理賬單數(shù)據(jù) $result['bill'][] = array( 'pay_time' => $data[0], // 支付時(shí)間 'APP_ID' => $data[1], // app_id 'MCH_ID' => $data[2], // 商戶id 'IMEI' => $data[4], // 設(shè)備號(hào) 'order_sn_wx' => $data[5], // 微信訂單號(hào) 'order_sn_sh' => $data[6], // 商戶訂單號(hào) 'user_tag' => $data[7], // 用戶標(biāo)識(shí) 'pay_type' => $data[8], // 交易類型 'pay_status' => $data[9], // 交易狀態(tài) 'bank' => $data[10], // 付款銀行 'money_type' => $data[11], // 貨幣種類 'total_amount' => $data[12], // 總金額 'coupon_amount' => $data[13], // 代金券或立減優(yōu)惠金額 'refund_number_wx' => $data[14], // 微信退款單號(hào) 'refund_number_sh' => $data[15], // 商戶退款單號(hào) 'refund_amount' => $data[16], // 退款金額 'coupon_refund_amount' => $data[17], // 代金券或立減優(yōu)惠退款金額 'refund_type' => $data[18], // 退款類型 'refund_status' => $data[19], // 退款狀態(tài) 'goods_name' => $data[20], // 商品名稱 'service_charge' => $data[22], // 手續(xù)費(fèi) 'rate' => $data[23], // 費(fèi)率 ); } if(count($data) == 5){ // 統(tǒng)計(jì)數(shù)據(jù) $result['summary'] = array( 'order_num' => $data[0], // 總交易單數(shù) 'turnover' => $data[1], // 總交易額 'refund_turnover' => $data[2], // 總退款金額 'coupon_turnover' => $data[3], // 總代金券或立減優(yōu)惠退款金額 'rate_turnover' => $data[4], // 手續(xù)費(fèi)總金額 ); } } } return $result; }
返回的數(shù)據(jù)分為2部分,bill節(jié)點(diǎn)下存放的是具體流水?dāng)?shù)據(jù),summary節(jié)點(diǎn)下存放的是統(tǒng)計(jì)數(shù)據(jù)。
主要的思路是微信賬單返回的結(jié)果格式是固定的,可以用 '`',換行符(PHP_EOL)實(shí)現(xiàn)字符串的分割,然后每24個(gè)字段為一個(gè)訂單的描述信息,最后6個(gè)字段為賬單的匯總信息。因此通過循環(huán)就可以遍歷整個(gè)賬單。
想要了解更多關(guān)于PHP開發(fā)方面內(nèi)容的小伙伴,請(qǐng)關(guān)注扣丁學(xué)堂PHP培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的PHP講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的PHP視頻教程定能讓你快速掌握PHP從入門到精通開發(fā)實(shí)戰(zhàn)技能。扣丁學(xué)堂PHP技術(shù)交流群:374332265。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入JavaEE/微服務(wù)VIP免費(fèi)公開課】
查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>