微信支付
来源:互联网 发布:黑马程序员课程表 编辑:程序博客网 时间: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.商户与客户端之间的通讯
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.商户与客户端之间的通讯
阅读全文
0 0
- 微信、支付宝支付
- 支付宝,微信支付
- 微信支付【支付模式】
- 微信支付Jsapi支付
- 微信支付-刷卡支付
- 微信支付JSAPI支付
- 微信支付 h5 支付
- 支付--微信APP支付
- 微信支付:手机支付
- 支付宝 微信支付
- 支付宝-微信支付
- 微信支付与支付宝支付
- 支付宝支付与微信支付
- 微信支付和支付宝支付
- 微信支付与支付宝支付
- 支付宝支付和微信支付
- 微信支付和支付宝支付
- 支付宝支付接入+微信支付
- 初入新环境所要了解的知识
- 盘龙数组
- SQL常见面试题
- SDL2.0放入线程进行播放遇到的问题
- linux文件与目录的操作处理
- 微信支付
- Web 前端如何播放 HLS(.m3u8) 视频
- 多线程中两个必要的开销:线程的创建、上下文切换 上下文切换
- MNIST-NameError: name ‘input_data’ is not defined解决办法
- 安卓开发框架(MVP+主流框架+基类+工具类)--- MVP模式
- python网络编程学习笔记(1)--网络编程背景
- 连接MySQL数据库时出现1045和1130错误
- kd树的实现(python)
- 关联表