WeChat Pay Development Statement

高洛峰
Release: 2017-02-28 10:05:22
Original
2226 people have browsed it

This article introduces the development and implementation process of statements under WeChat payment.

Note

WeChat Pay is now divided into v2 and v3 versions. Those who applied before September 10, 2014 will be in v2 version, and those who applied after that will be in v3 version. The V3 version of WeChat Pay does not have the paySignKey parameter. For related introduction to v2, please refer to other articles of Fangbei Studio. This article introduces WeChat Pay v3.

1. Statement data interface

WeChat payment v3 provides a statement data interface, and the interface used is

https:// api.mch.weixin.qq.com/pay/downloadbill

The requested parameters are as follows

##1900000109Merchant number assigned by WeChat paymentDevice numberdevice_infoNoString(32)013467007045764The terminal device number assigned by WeChat Pay. Fill in this field and only download the statement for this device numberRandom stringnonce_str is String(32)5K8264ILTKCH16CQ2502SI8ZNMTM67VSRandom string, no longer than 32 bits. Recommended random number generation algorithmsignaturesignYes String(32)C380BEC2BFD727A4B6845133519F3AD6Signature, see Signature Generation Algorithm## for details #Statement dateBill typeDemo The implementation code is as follows
include_once("../WxPayPubHelper/WxPayPubHelper.php");

    //对账单日期
    if (!isset($_POST["bill_date"])){
        $bill_date = "20150401";
    }
    else{
        $bill_date = $_POST["bill_date"];
        
        //使用对账单接口
        $downloadBill = new DownloadBill_pub();
        //设置对账单接口参数
        //设置必填参数
        //appid已填,商户无需重复填写
        //mch_id已填,商户无需重复填写
        //noncestr已填,商户无需重复填写
        //sign已填,商户无需重复填写
        $downloadBill->setParameter("bill_date","$bill_date");//对账单日期 
        $downloadBill->setParameter("bill_type","ALL");//账单类型 
        //非必填参数,商户可根据实际情况选填
        //$downloadBill->setParameter("device_info","XXXX");//设备号  
        //$downloadBill->setParameter("device_info","方倍工作室1");//设备号 
        //对账单接口结果
        $downloadBillResult = $downloadBill->getResult();
        echo $downloadBillResult['return_code'];
        
        if ($downloadBillResult['return_code'] == "FAIL") {
            echo "通信出错:".$downloadBillResult['return_msg'];
        }else{
             print_r(&#39;<pre class="brush:php;toolbar:false">&#39;);
             echo "【对账单详情】"."</br>";
             print_r($downloadBill->response);
             print_r(&#39;
Copy after login
'); } }

##Field name

Variable name

Required

Type

Example value

Description

Public account ID

appid

is

String(32)

wx8888888888888888

Public account ID assigned by WeChat

Merchant ID

mch_id

is

String (32)

bill_date

is

String(8)

20140603

The date to download the statement, format: 20140603

bill_type

No

String(8)

ALL

ALL, returns all order information on the day, default value is
SUCCESS, Returns orders successfully paid on the day

REFUND, returns orders refunded on the day

REVOKED, orders canceled

The above statement can only query one day's data at a time.

The bill result returned is as follows

交易时间,公众账号ID,商户号,子商户号,设备号,微信订单号,商户订单号,用户标识,交易类型,交易状态,付款银行,货币种类,总金额,企业红包金额,微信退款单号,商户退款单号,退款金额,企业红包退款金额,退款类型,退款状态,商品名称,商户数据包,手续费,费率 `2015-04-12 20:27:22,`wx554f0b3e56067c9d,`10024142,`0,`WJ4,`1000690206201504120059461630,`wx554f0b3e56067c9d1428841627,`oMfX0jgJjSPVvYOz3p_BP8LclWO0,`NATIVE,`SUCCESS,`CMB_CREDIT,`CNY,`71.00,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.42600,`0.60% `2015-04-12 18:08:38,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1001370206201504120059259734,`wx554f0b3e56067c9d1428833308,`oMfX0jhbQ1xd0B6Vm-kuizH9e9rs,`NATIVE,`SUCCESS,`COMM_DEBIT,`CNY,`92.00,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.55200,`0.60% `2015-04-12 19:12:06,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1001520206201504120059346120,`wx554f0b3e56067c9d1428837103,`oMfX0jj6h2ls1TsZEORs8WXRtSrE,`NATIVE,`SUCCESS,`CEB_CREDIT,`CNY,`69.60,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.41760,`0.60% `2015-04-12 13:03:25,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1002120206201504120058869224,`wx554f0b3e56067c9d1428814993,`oMfX0jtHOXPrCCWebdJEYl1eIzVg,`NATIVE,`SUCCESS,`CFT,`CNY,`16.80,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.10080,`0.60% `2015-04-12 12:20:39,`wx554f0b3e56067c9d,`10024142,`0,`WJ2,`1002560206201504120058795541,`wx554f0b3e56067c9d1428812423,`oMfX0jhBckNfxRDHp2lUiFxXlCYE,`NATIVE,`SUCCESS,`CCB_DEBIT,`CNY,`126.60,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.75960,`0.60% `2015-04-12 09:35:03,`wx554f0b3e56067c9d,`10024142,`0,`WJ6,`1003310206201504120058568869,`wx554f0b3e56067c9d1428802486,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CMBC_DEBIT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 09:23:20,`wx554f0b3e56067c9d,`10024142,`0,`WJ6,`1003310206201504120058569203,`wx554f0b3e56067c9d1428801789,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CMBC_DEBIT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 10:15:27,`wx554f0b3e56067c9d,`10024142,`0,`WJ5,`1003310206201504120058606779,`wx554f0b3e56067c9d1428804915,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CFT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 10:10:09,`wx554f0b3e56067c9d,`10024142,`0,`WJ5,`1003310206201504120058610924,`wx554f0b3e56067c9d1428804597,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CFT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 10:06:19,`wx554f0b3e56067c9d,`10024142,`0,`WJ6,`1003310206201504120058617007,`wx554f0b3e56067c9d1428804368,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CFT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 11:07:04,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1003310206201504120058692567,`wx554f0b3e56067c9d1428808013,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CFT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 11:27:07,`wx554f0b3e56067c9d,`10024142,`0,`WJ6,`1003310206201504120058735881,`wx554f0b3e56067c9d1428809215,`oMfX0jmQtv9nBfol_-e83xYdXacM,`NATIVE,`SUCCESS,`CFT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% `2015-04-12 16:24:48,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1003310206201504120059131508,`wx554f0b3e56067c9d1428827074,`oMfX0jk-zqqeyv7yZYEc4W1lWPVg,`NATIVE,`SUCCESS,`CFT,`CNY,`15.80,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.09480,`0.60% `2015-04-12 14:56:41,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1005430206201504120058999894,`wx554f0b3e56067c9d1428821791,`oMfX0jnw_NpAlwgSuJsyR8ocGSjI,`NATIVE,`SUCCESS,`CCB_DEBIT,`CNY,`42.00,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.25200,`0.60% `2015-04-12 13:00:00,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1006120206201504120058836372,`wx554f0b3e56067c9d1428814787,`oMfX0jnVvUaoR84XV8cP4ugcd9dk,`NATIVE,`SUCCESS,`PAB_CREDIT,`CNY,`16.80,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.10080,`0.60% `2015-04-12 16:13:48,`wx554f0b3e56067c9d,`10024142,`0,`WJ4,`1007560206201504120059119673,`wx554f0b3e56067c9d1428826408,`oMfX0jlf4aVHBY1nel1XuNvb2m1A,`NATIVE,`SUCCESS,`ABC_DEBIT,`CNY,`120.00,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.72000,`0.60% `2015-04-12 09:49:04,`wx554f0b3e56067c9d,`10024142,`0,`WJ1,`1009550206201504120058567546,`wx554f0b3e56067c9d1428803335,`oMfX0juZ58OdofLgirvkqK0FPq-w,`NATIVE,`SUCCESS,`CFT,`CNY,`0.10,`0.00,`0,`0,`0,`0,`,`,`微信公众平台开发最佳实践,`,`0.00060,`0.60% 总交易单数,总交易额,总退款金额,总企业红包退款金额,手续费总金额 `17,`571.40,`0.00,`0.00,`3.42840
Copy after login

If there is no bill on the day, the XML returned is as follows

<xml>
    <return_code><![CDATA[FAIL]]></return_code>
    <return_msg><![CDATA[No Bill Exist]]></return_msg>
 </xml>
Copy after login



2. Bill storage

The above bill data is a string, and it is only one day's data, which is not conducive to statistics and query. It also needs to be downloaded to the database.

1. Create a table

The bill fields include these

交易时间,公众账号ID,商户号,子商户号,设备号,微信订单号,商户订单号,用户标识,交易类型,交易状态,付款银行,货币种类,总金额,代金券或立减优惠金额,微信退款单号,商户退款单号,退款金额, 代金券或立减优惠退款金额,退款类型,退款状态,商品名称,商户数据包,手续费,费率
Copy after login


According to the above fields, Create the table as follows

CREATE TABLE IF NOT EXISTS `wx_bill` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `tradetime` varchar(20) NOT NULL,
  `ghid` varchar(20) NOT NULL,
  `mchid` varchar(20) NOT NULL,
  `submch` varchar(10) NOT NULL,
  `deviceid` varchar(16) NOT NULL,
  `wxorder` varchar(30) NOT NULL,
  `bzorder` varchar(30) NOT NULL,
  `openid` varchar(30) NOT NULL,
  `tradetype` varchar(10) NOT NULL,
  `tradestatus` varchar(10) NOT NULL,
  `bank` varchar(16) NOT NULL,
  `currency` varchar(20) NOT NULL,
  `totalmoney` varchar(20) NOT NULL,
  `redpacketmoney` varchar(20) NOT NULL,
  `wxrefund` varchar(10) NOT NULL,
  `bzrefund` varchar(10) NOT NULL,
  `refundmoney` varchar(20) NOT NULL,
  `redpacketrefund` varchar(20) NOT NULL,
  `refundtype` varchar(10) NOT NULL,
  `refundstatus` varchar(10) NOT NULL,
  `productname` varchar(30) NOT NULL,
  `bzdatapacket` varchar(10) NOT NULL,
  `fee` varchar(10) NOT NULL,
  `rate` varchar(10) NOT NULL,  PRIMARY KEY (`id`),  UNIQUE KEY `wxorder` (`wxorder`),  UNIQUE KEY `bzorder` (`bzorder`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=272 ;
Copy after login


2. Insert the WeChat bill data into the database, as follows

INSERT INTO `wx_bill` (`id`, `tradetime`, `ghid`, `mchid`, `submch`, `deviceid`, `wxorder`, `bzorder`, `openid`, `tradetype`, `tradestatus`, `bank`, `currency`, `totalmoney`, `redpacketmoney`, `wxrefund`, `bzrefund`, `refundmoney`, `redpacketrefund`, `refundtype`, `refundstatus`, `productname`, `bzdatapacket`, `fee`, `rate`) VALUES(32, &#39;1428843600&#39;, &#39;wx554f0b3e56067c9d&#39;, &#39;10024142&#39;, &#39;0&#39;, &#39;WJ1&#39;, &#39;1006120206201504120058836372&#39;, &#39;wx554f0b3e56067c9d1428814787&#39;, &#39;oMfX0jnVvUaoR84XV8cP4ugcd9dk&#39;, &#39;NATIVE&#39;, &#39;SUCCESS&#39;, &#39;PAB_CREDIT&#39;, &#39;CNY&#39;, &#39;16.80&#39;, &#39;0.00&#39;, &#39;0&#39;, &#39;0&#39;, &#39;0&#39;, &#39;0&#39;, &#39;&#39;, &#39;&#39;, &#39;微信公众平台开发最佳实践&#39;, &#39;&#39;, &#39;0.10080&#39;, &#39;0.60%&#39;),
(31, &#39;1428850601&#39;, &#39;wx554f0b3e56067c9d&#39;, &#39;10024142&#39;, &#39;0&#39;, &#39;WJ1&#39;, &#39;1005430206201504120058999894&#39;, &#39;wx554f0b3e56067c9d1428821791&#39;, &#39;oMfX0jnw_NpAlwgSuJsyR8ocGSjI&#39;, &#39;NATIVE&#39;, &#39;SUCCESS&#39;, &#39;CCB_DEBIT&#39;, &#39;CNY&#39;, &#39;42.00&#39;, &#39;0.00&#39;, &#39;0&#39;, &#39;0&#39;, &#39;0&#39;, &#39;0&#39;, &#39;&#39;, &#39;&#39;, &#39;微信公众平台开发最佳实践&#39;, &#39;&#39;, &#39;0.25200&#39;, &#39;0.60%&#39;),
(30, &#39;1428855888&#39;, &#39;wx554f0b3e56067c9d&#39;, &#39;10024142&#39;, &#39;0&#39;, &#39;WJ1&#39;, &#39;1003310206201504120059131508&#39;, &#39;wx554f0b3e56067c9d1428827074&#39;, &#39;oMfX0jk-zqqeyv7yZYEc4W1lWPVg&#39;, &#39;NATIVE&#39;, &#39;SUCCESS&#39;, &#39;CFT&#39;, &#39;CNY&#39;, &#39;15.80&#39;, &#39;0.00&#39;, &#39;0&#39;, &#39;0&#39;, &#39;0&#39;, &#39;0&#39;, &#39;&#39;, &#39;&#39;, &#39;微信公众平台开发最佳实践&#39;, &#39;&#39;, &#39;0.09480&#39;, &#39;0.60%&#39;);
Copy after login


2. Statistical analysis

With local data, you can carry out various kind of statistical analysis.

1. Condition combination

The following is an interface implementation for combined query billing. You need to query the device used, the payment type used, and the specified time range.

The query results are as follows

WeChat Pay Development Statement

For more articles related to WeChat payment development statements, please pay attention to PHP Chinese net!

WeChat Pay Development Statement

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template