微信支付jsapi demo有没有同步通知

微信JSAPI支付,弹出微信支付加载,不弹出支付窗口 - ThinkPHP框架
微信JSAPI支付,弹出微信支付加载,不弹出支付窗口,
积分:2013
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。2017年1月 总版技术专家分月排行榜第三
2017年2月 PHP大版内专家分月排行榜第一2017年1月 PHP大版内专家分月排行榜第一
2011年11月 PHP大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。微信公众号支付-JSAPI支付-统一下单 - 简书
微信公众号支付-JSAPI支付-统一下单
最近一直在整理微信公众号相关代码,官方提供的相关文档虽然有限,但这之前还是得仔细阅读一下各个文档,一些专有名词等就不在此文章中详细介绍了,该资料是自己在实际操作中总结的,技术不精,还请各位多多包涵。JSAPI支付流程详解:统一下单
A 场景参考:https://pay./wiki/doc/api/jsapi.php?chapter=7_1
B 开发前环境配置:1,登录微信公众号=》微信支付=》开发配置:把支付授权目录和测试授权支付目录补全(要求参考官方文档)
C 商户请求微信后台接口连接:URL地址:https://api.mch./pay/unifiedorder
D 请求必填参数:字段名---------变量名-------类型--------------示例值-----------------------------------描述公众账号ID ----appid--------String(32)--------wxd678efh567hg6787----------------------微信分配的公众账号ID(企业号corpid即为此appId)商户号---------mch_id------String(32)--------------------------------------微信支付分配的商户号随机字符串------nonce_str---String(32)--------5K8264ILTKCH16CQ2502SI8ZNMTM67VS------随机字符串,不长于32位。推荐签名-----------sign--------String(32)--------C380BEC2BFD727A4BF3AD6------签名,详见商品描述--------body------String(128)--------Ipad mini
---------------------------白色商品或支付单简要描述商户订单号------out_trade_no-String(32)--------46-------------------------商户系统内部的订单号,32个字符内、可包含字母, 其他说明见总金额----------total_fee----Int-------------888-------------------------------------订单总金额,单位为分,详见终端IP-------spbill_create_ip----String(16)----123.12.12.123-----------------------------APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。通知地址-------notify_url-------String(256)-----http://www./wxpay/pay.php-----接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。交易类型-------trade_type-------String(16)------JSAPI------------------------------------取值如下:JSAPI,NATIVE,APP,详细说明见用户标识-------openid----------String(128)------oUpF8uMuAJO_M2pxb1Q9zNjWeS6o----------trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识。openid如何获取,可参考【】。企业号请使用【】获取企业号内成员userid,再调用【】进行转换
E 商户业务逻辑:
1》根据官方文档进行微信网页授权说明进行授权操作,获得关键参数openid 。
http://mp./wiki/4/9ac2e7b1f1d22e9e2520.html
2》用户点击消息或扫二维码打开商户H5页面,前端带上商品参数请求商户后台
3》把订单信息和必填的商户参数信息封装成一个map对象,并对所有参数进行签名,(签名参照官网文档),把签名存入该map中,因为微信和商户是以XML形式交互的,把该map转换为xml,POST请求微信后台接口连接:URL地址
4》微信服务器以xml形式返回你请求下单的结果,以下字段在return_code为SUCCESS的时候返回数据,(为了安全型,所有从微信返回的信息,都重新签名验证一遍,判断是否来自正常微信的返回数据),获得正确预支付交易会话标识prepay_id标示预支付订单生成,如返回为FAIL,则上一歩中xml请求题有误或根据返回的消息错误码进行修改。
5》微信浏览器里面打开H5网页中执行JS调起支付。接口输入输出数据格式为JSON。在后台组合网页端参数,列表中参数名区分大小,大小写错误签名验证会失败。
注意:WeixinJSBridge内置对象在其他浏览器中无效。名称---------变量名-----------类型----------示例值-------------------描述公众号id------appId--------String(16)-------wx8888-----商户注册具有支付权限的公众号成功后即可获得时间戳--------timeStamp----String(32)---------------------当前的时间,其他详见随机字符串-----nonceStr-----String(32)-------5K8264ILTKCH16NM67VS----随机字符串,不长于32位。推荐订单详情扩展字符串-package---String(128)------prepay_id=------统一下单接口返回的prepay_id参数值,提交格式如:prepay_id=***签名方式-------signType-----String(32)--------MD5---------------------签名算法,暂支持MD5签名----------paySign--------String(64)------C384BF3AD6-----签名,详见前端调用示例:
网页内支付接口err_msg返回结果值说明返回值--------------------------------描述get_brand_wcpay_request:-------------ok支付成功get_brand_wcpay_request:-------------cancel支付过程中用户取消get_brand_wcpay_request:--------------fail支付失败注:JS API的返回结果get_brand_wcpay_request:ok仅在用户成功完成支付时返回。由于前端交互复杂,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以统一处理为用户遇到错误或者主动放弃,不必细化区分。
如人饮水,冷暖自知。JSAPI 支付前需要调用 登录授权接口获取到用户的 Openid 。所以需要做一次授权,这次授权是不弹出确认框的。其实质就是在用户访问:
//使用jsapi接口
$jsApi = new JsApi_pub();
//=========步骤1:网页授权获取用户openid============
//通过code获得openid
if (!isset($_GET['code']))
//触发微信返回code码
$url = $jsApi-&createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL);
Header("Location: $url");
//获取code码,以获取openid
$code = $_GET['code'];
$jsApi-&setCode($code);
$openid = $jsApi-&getOpenId();
这一步的最终结果就是获得了当前用户的openid
JS API支付
前面的准备工作做好了以后,JS API根据prepay_id生成jsapi支付参数生成代码如下:
//=========步骤3:使用jsapi调起支付============
$jsApi-&setPrepayId($prepay_id);
$jsApiParameters = $jsApi-&getParameters();
生成的json数据如下
"appId": "wx8888",
"timeStamp": "",
"nonceStr": "gbwr71b5no6q6ne18c8up1u7l7he2y75",
"package": "prepay_id=wx",
"signType": "MD5",
"paySign": "9CF851EBF6C7D"
在微信浏览器中调试起js接口,代码如下
&meta http-equiv="content-type" content="text/charset=utf-8"/&
&title&微信安全支付&/title&
&script type="text/javascript"&
//调用微信JS api 支付
function jsApiCall()
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
&?php echo $jsApiP ?&,
function(res){
WeixinJSBridge.log(res.err_msg);
//alert(res.err_code+res.err_desc+res.err_msg);
function callpay()
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', jsApiCall);
document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
jsApiCall();
&/br&&/br&&/br&&/br&
&div align="center"&
&button style="width:210 height:30 background-color:#FE6714; border:0px #FE6714 cursor:
font-size:16" type="button" onclick="callpay()" &贡献一下&/button&
当用户点击“贡献一下”按钮时,将弹出微信支付插件,用户可以开始支付。
支付通知支付成功后,通知接口中也将收到支付成功的xml通知 :
&appid&&![CDATA[wx8888]]&&/appid&
&bank_type&&![CDATA[CFT]]&&/bank_type&
&fee_type&&![CDATA[CNY]]&&/fee_type&
&is_subscribe&&![CDATA[Y]]&&/is_subscribe&
&mch_id&&![CDATA[]]&&/mch_id&
&nonce_str&&![CDATA[60uf9sh6nmppr9azveb2bn7arhy79izk]]&&/nonce_str&
&openid&&![CDATA[ou9dHt0L8qFLI1foP-kj5x1mDWsM]]&&/openid&
&out_trade_no&&![CDATA[wx79]]&&/out_trade_no&
&result_code&&![CDATA[SUCCESS]]&&/result_code&
&return_code&&![CDATA[SUCCESS]]&&/return_code&
&sign&&![CDATA[0C1D7F550A5A138F0CEB]]&&/sign&
&sub_mch_id&&![CDATA[]]&&/sub_mch_id&
&time_end&&![CDATA[58]]&&/time_end&
&total_fee&1&/total_fee&
&trade_type&&![CDATA[JSAPI]]&&/trade_type&
&transaction_id&&![CDATA[4026]]&&/transaction_id&
浏览: 4246 次
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 微信jsapi支付 空白页 的文章

 

随机推荐