微信对账单 java_微信支付对账,你是如何处理的?
支付對賬,即檢查第三方支付與數(shù)據(jù)庫中賬單是否一一對應(yīng),涉及到微信對賬單的處理,成功時,微信賬單接口返回數(shù)據(jù)以文本表格的方式返回,第一行為表頭,后面各行為對應(yīng)的字段內(nèi)容,字段內(nèi)容跟查詢訂單或退款結(jié)果一致,具體字段說明可查閱相應(yīng)接口。
Ps:至于如何調(diào)用微信接口下載對賬單,在微信的官方SDK包中就有現(xiàn)成的方法,直接調(diào)用即可。注意對賬單接口一次只能查詢一天的數(shù)據(jù)。
代碼大致如下:
// 引入微信sdk文件
require_once APP_DIR . '/ome/lib/wxpay/lib/WxPay.Api.php';
require_once APP_DIR . '/ome/lib/wxpay/log.php';
// 實列化下載對賬單對象
$input = new WxPayDownloadBill();
// 對賬單日期
$input->SetBill_date(date("Ymd", strtotime("-1 day")));
// 對賬單類型
$input->SetBill_type('ALL');
// 獲取賬單信息
$downloadBillResult = WxPayApi::downloadBill($input);
復(fù)制代碼
打印$downloadBillResult就會發(fā)現(xiàn)他是一個數(shù)據(jù)文本(string),本文程序需要實現(xiàn)的功能就是從這個字符串從提取每一筆訂單中的有效信息,參考代碼如下:
/**
* 微信對賬單數(shù)據(jù)處理
* @param $response 對賬單數(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); // 刪除第一個元素并下標(biāo)從0開始
if(count($data) == 24){ // 處理賬單數(shù)據(jù)
$result['bill'][] = array(
'pay_time' => $data[0], // 支付時間
'APP_ID' => $data[1], // app_id
'MCH_ID' => $data[2], // 商戶id
'IMEI' => $data[4], // 設(shè)備號
'order_sn_wx' => $data[5], // 微信訂單號
'order_sn_sh' => $data[6], // 商戶訂單號
'user_tag' => $data[7], // 用戶標(biāo)識
'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], // 微信退款單號
'refund_number_sh' => $data[15], // 商戶退款單號
'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)計數(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;
}
復(fù)制代碼
返回的數(shù)據(jù)分為2部分,bill節(jié)點(diǎn)下存放的是具體流水?dāng)?shù)據(jù),summary節(jié)點(diǎn)下存放的是統(tǒng)計數(shù)據(jù)
主要的思路是微信賬單返回的結(jié)果格式是固定的,可以用 '`',換行符(PHP_EOL)實現(xiàn)字符串的分割,然后每 24 個 字段為一個訂單的描述信息,最后 6 個字段為賬單的匯總信息。因此通過循環(huán)就可以遍歷整個賬單。
關(guān)于找一找教程網(wǎng)
本站文章僅代表作者觀點(diǎn),不代表本站立場,所有文章非營利性免費(fèi)分享。
本站提供了軟件編程、網(wǎng)站開發(fā)技術(shù)、服務(wù)器運(yùn)維、人工智能等等IT技術(shù)文章,希望廣大程序員努力學(xué)習(xí),讓我們用科技改變世界。
[微信支付對賬,你是如何處理的?]http://www.zyiz.net/tech/detail-140097.html
總結(jié)
以上是生活随笔為你收集整理的微信对账单 java_微信支付对账,你是如何处理的?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全数字实时仿真平台SkyEye和同步数据
- 下一篇: 美国计算机科学联赛获奖,【竞赛获奖】西安