微信支付

来源:互联网 发布:黑马程序员课程表 编辑:程序博客网 时间:2024/06/05 11:51
一、微信的支付种类
1.app支付
2.公众号支付
3.扫码支付
4.刷卡支付
二、native模式业务流程
1.二维码的生成
调用统一下单API接口
需要的参数
公众账号ID appid
商户号            mch_id
密钥                  key(交易过程生成签名)
商品描述 body
商品详情 detail
商户订单号 out_trade_no
标价金额 total_fee
交易类型 trade_type
通知地址 notify_url
商品ID            product_id
返回的结果
交易结果 return_code
业务结果 result_code
交易类型 trade_type
预支付交易会话标识 prepay_id
二维码链接 code_url


2.商户与微信之间的通讯
回调URL
3.商户与客户端之间的通讯
商户与微信的通讯
订单查询API接口
需要的参数
     公众账号ID    appid
     商户号     mch_id
     密钥              key(交易过程生成签名)
     商户订单号    out_trade_no
返回的结果
     交易结果 return_code
     业务结果 result_code
     交易状态 trade_state
     商户订单号 out_trade_no
SUCCESS—支付成功       REFUND—转入退款
NOTPAY—未支付            CLOSED—已关闭
REVOKED—已撤销  USERPAYING--用户支付中PAYERROR--支付失败(其他原因,如银行返回失败)
三、微信native支付的demo目录结构
index.php 入口
lib API接口封装代码[类库]
    WxPay.Api.php 包括所有微信支付API接口的封装
    WxPay.Config.php 商户配置
    WxPay.Data.php 输入参数封装 [签名的生成 验证信息]
    WxPay.Exception.php 异常类
    WxPay.Notify.php 回调通知基类
unit 工具类
   WxPay.JsApiPay.php
   WxPay.MicroPay.php
   WxPay.NativePay.php 生成扫描支付URL
   phpqrcode 开源二维码php代码
native.php 扫码支付
notify.php 回调处理页面
orderquery.php 订单查询页面
qrcode.php 二维码生成
1.curl模块出错
WxPay.Api.php 537行
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//严格校验
2.二维码的生成
1.输入参数给微信
$input = new WxPayUnifiedOrder();//输入参数封装类 WxPay.Data.php 
2.获取微信返回的结果
$result = $notify->GetPayUrl($input);
$result = WxPayApi::unifiedOrder($input);//验证微信返回的结果
3.获取二维码链接
$url2 = $result["code_url"];
4.生成二维码
<img alt="模式二扫码支付" src="./qrcode.php?data=<?php echo urlencode($url2);?>" />
3.商户与微信通讯(回调URL)
$input->SetNotify_url("http://域名/example/notify.php");
4.商户与页面之间的通讯
商户与微信进行一个通讯,获取到订单的状态,讲订单状态反馈给页面或者是对数据库进行操作
订单查询接口API
1)输入参数
$input = new WxPayOrderQuery();
$input->SetOut_trade_no($out_trade_no); //通知微信我要查询这个订单
2)获取结果
WxPayApi::orderQuery($input);
四、原生态PHP实现微信native支付
1.修改路径
2.统一下单API输入参数的配置
$input = new WxPayUnifiedOrder();
$input->SetBody("云知梦");
$input->SetAttach("这是一个商品");
$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
$input->SetTotal_fee("1");
$input->SetNotify_url("http://139.224.62.156/myshop15/home/person/notify.php");
$input->SetTrade_type("NATIVE");
$input->SetProduct_id("123456789");
3.微信支付配置文件
const APPID = 'wx426b3015555a46be';
const MCHID = '1900009851';
const KEY = '8934e7d15453e97507ef794cf7b0519d';
4.订单号重复问题
判断二维码链接 二维码链接已经生成直接使用 如果没有则去请求微信
5.处理订单查询
ajax无刷新
二维码页面->out_trade_no(订单号)->orderquery.php->将订单号发送给微信->将订单的支付结果反馈给orderquery.php

修改页面状态
code='<?php echo $code; ?>';
my=setInterval(function(){
load();
},1000);

function load(){
$.post('orderquery.php',{'out_trade_no':code},function(data){
if(data=='SUCCESS'){
$('#div').html('支付成功');
clearInterval(my);
setTimeout("location.href='./orderlist.php'",3000);
}else if(data=='NOTPAY'){
$('#div').html('请支付');
}
})
}
修改数据库状态
$sql="update indent set b_statu=1 where code='{$out_trade_no}'";
mysql_query($sql);


五、在ThinkPHP中实现native支付功能
1.二维码的生成

2.商户与微信之间的通讯
3.商户与客户端之间的通讯








原创粉丝点击