邹经理支付sdk
三个方法:
第一个发起统一支付方法pay
第二个方法异步通知方法
第一步:填写公共配置信息$config
第二步:填写订单配置信息$options
第三步:实例化一个支付对象 $pay = new \Pay\Pay($config);
第四步:写一个用户掉起支付记录表(id,userid,username,out_trade_no,body,amount,status,type,createtime)
第四步:返回结果 $result = $pay->driver('wechat')->gateway('wap')->apply($options, $redirect_url);
第五步:跳转微信支付页面echo "<script language=\"JavaScript\">window.location.href='".$result."';</script>";
异步通知方法逻辑:
第一步:用文件流的方式接收结果
$param=file_get_contents("php://input");
得到如下的微信返回结果:
'<xml><appid><![CDATA[wx0a94f196881dd3b5]]></appid>
<attach><![CDATA[1029]]></attach>
<bank_type><![CDATA[LQT]]></bank_type>
<cash_fee><![CDATA[1]]></cash_fee>
<fee_type><![CDATA[CNY]]></fee_type>
<is_subscribe><![CDATA[N]]></is_subscribe>
<mch_id><![CDATA[1512058291]]></mch_id>
<nonce_str><![CDATA[KzDn07uV1WtbR4OJ]]></nonce_str>
<openid><![CDATA[ob1L21VD_EzFJiEHmksGXIm53QTU]]></openid>
<out_trade_no><![CDATA[2019051784438]]></out_trade_no>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[A1F63A6DCF2BFC9B1500BC309EA0AC0F]]></sign>
<time_end><![CDATA[20190517100939]]></time_end>
<total_fee>1</total_fee>
<trade_type><![CDATA[MWEB]]></trade_type>
<transaction_id><![CDATA[4200000330201905179042674912]]></transaction_id>
</xml>'
https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_7&index=8
第二步:转换 xml 成数组
libxml_disable_entity_loader(true);
$res_data = json_decode(json_encode(simplexml_load_string($param, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
第三步:判断返回结果中的状态码
$res_data['result_code']=='SUCCESS' || $res_data['return_code']=='SUCCESS'
第五步:给用户添加余额
第六部:写资金流水表(id,userid,flowinfo,money,remaining,flowtype,createtime)