atitit.微信支付的教程文档 attilax总结

1. 支付流程概览 1

2. 设置支付起始文件夹   host/app/paydir/ 1

3. 设置oauth验证域名 1

4. 測试文件夹 能够使用ip,但必须80port好像。

1

5. 发起測试支付,菜单  host/fromother.jsp 2

6. Start.jsp 2

7. 获取openid的page接口,并制定回调接口 2

8. 開始支付页面 3

9. 生成js调用支付接口 4

10. 注意事项 5

10.1. 预支付的签名and提示mch不存在 5

1. 支付流程概览

首先,生成一个prepayID

在,拿这个prepayid  使用js 调用支付的js fun...

2. 设置支付起始文件夹   host/app/paydir/

要有一个通过备案的域名+80port,不能使用ip形式,也不能其它port号(好像域名+port号能够)

假设測试。能够使用測试文件夹

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

3. 设置oauth验证域名

实际上能够设置ip+port

4. 測试文件夹 能够使用ip,但必须80port好像。

要手动加入測试白名单。。然后就能够測试了。。

5. 发起測试支付。菜单  host/fromother.jsp

6. Start.jsp

String call="http://www.baidu.com/xx.htm";

String return_url="http://www.baidu.com/orderProcess?orderno=12346¶2=val2";

String url="http://host:port/wechat/pay.jsp?orderno="+filex.getUUidName()+"&fee=1&callback_url="+URLEncoder.encode(call, "utf-8")+"&name="+URLEncoder.encode("測试商品", "utf-8")+"&return_url="+URLEncoder.encode(return_url, "utf-8");

%> <meta http-equiv="refresh" content="0;URL=<%=url%>" />

<%=url%>

7. 获取openid的page接口。并制定回调接口

<%

session.setAttribute("queryStr",request.getQueryString());

String url="http://host+port/wechat/getopenid.jsp?callbackurl=pay_stp2.jsp" ;//URLEncoder.encode(s, enc);

session.setAttribute("orderno",request.getParameter("orderno"));

session.setAttribute("fee",request.getParameter("fee"));

session.setAttribute("name",request.getParameter("name"));

session.setAttribute("callback_url",request.getParameter("callback_url"));

String url2= URLEncoder.encode(url, "utf-8");

%>

pay:

<meta http-equiv="refresh" content="0;URL=https://open.weixin.qq.com/connect/oauth2/authorize?

appid=wx947702f1812d3249&redirect_uri=<%=url2%>&response_type=code&scope=snsapi_base&state=1#wechat_redirect" />

<%=url%>

注意,这个url的host+port必须在othau验证配置那里设置到。

8. 開始支付页面

<%@page import="com.attilax.net.urlUtil"%>

<%

WechatX wechatC= IocX.getBean(WechatX.class);

String openid =request.getParameter("openid");

//urlUtil.urlEncode

String url="http://domain/wechat/pay_stp3.jsp?

openid="+openid+"&"+(session.getAttribute("queryStr").toString());

//String payurl= URLEncoder.encode(url, "utf-8") ;

%>

p2:

<meta http-equiv="refresh" content="0;URL=<%=url%>" />

<label for="textarea"></label>

<textarea name="textarea" id="textarea" cols="45" rows="5"><%=url%><aa></textarea>

注意这个支付的发起文件夹必须在正式域名下配置的那个文件夹才可

9. 生成js调用支付接口

<%

WechatX4Pay px = IocX.getBean(WechatX4Pay.class);

try{

px.orderno=request.getParameter("orderno").toString();

px.openid=request.getParameter("openid");

px.fee=request.getParameter("fee").toString();

px.title=request.getParameter("name").toString();

px.notify_url=request.getParameter("callback_url").toString();

px.Pay_geneJsapiParam(request);

}catch(Exception e)

{

out.write(com.attilax.html.HtmlX.Htmlencode ( com.attilax.util.god.getTrace(e)));

return;

}

%>

<script>

var title=<%=px.title%>

</script>

<script>

function onBridgeReady(){

WeixinJSBridge.invoke(

'getBrandWCPayRequest', {

"appId" : "<%=px.appId%>",     //公众号名称,由商户传入

"timeStamp":"<%=px.timeStamp%>",         //时间戳,自1970年以来的秒数

"nonceStr" : "<%=px.nonceStr%>", //随机串

"package" : "<%=px.packageStr%>",

"signType" : "MD5",         //微信签名方式:

"paySign" : "<%=px.paySign%>" //微信签名

},

function(res){

if(res.err_msg == "get_brand_wcpay_request:ok" ) {

var ret="<%= request.getParameter("return_url")%>";

if(ret!="null")

window.location=ret;

else

alert("支付成功");

}     // 使用以上方式推断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回    ok,但并不保证它绝对可靠。

}

);

//invoke end

}

// obr end

//alert( typeof WeixinJSBridge );

if (typeof WeixinJSBridge == "undefined"){

if( document.addEventListener ){

document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);

}else if (document.attachEvent){

document.attachEvent('WeixinJSBridgeReady', onBridgeReady);

document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);

}

}else{

onBridgeReady();

}

</script>

10. 注意事项

10.1. 预支付的签名and提示mch不存在

提示mch不存在,可能sign有误,不个sign袖管改给挂,要是还是中个,走十sign err

Mch id 或许不是wechat admin console支持的内个...或许别的的...

要有个mch id 跟个pay key...这个paykey 要到个mch console 设置...登录mch console要证书and手机验证码,麻烦的..

这个pay key不是app d pwdkey..还有一个的...

10.2. 'getBrandWCPayRequest'的签名,

要包含     "signType" : "MD5",   这个參数

Return_url ::::

if(res.err_msg == "get_brand_wcpay_request:ok" ) {

var ret="<%= request.getParameter("return_url")%>";

if(ret!="null")

window.location=ret;

10.3. 用户取消的处理::

返回站点主页面

返回挑选服务框(like  cart),冉设置服务的数量等..

返回内个服务页面

专门的一个cancel页面( 不好使用)

10.4. 可用性设计:手动支付,再次支付button要有

10.5. 測试方面的支持

Debug模式,能够使用在调用开头的时候儿...

Stopstep:: 能够指定stopstep

Show html code的支持...特别是支付林吧的时候儿.

atitit.微信支付的教程文档 attilax总结的更多相关文章

  1. Atitit 基于图片图像 与文档混合文件夹的分类

    Atitit 基于图片图像 与文档混合文件夹的分类 太小的文档(txt doc csv exl ppt pptx)单独分类 Mov10KminiDoc 但是可能会有一些书法图片迁移,因为他们很微小,需 ...

  2. Atitit 微信支付 支付结果通用通知

    Atitit 微信支付 支付结果通用通知 Wechat hto sh ma  返回页面return_url - 熊佳佳的博客 d ,only notyfi url-... 接口链接 该链接是通过[统一 ...

  3. ABP 教程文档 1-1 手把手引进门之 AngularJs, ASP.NET MVC, Web API 和 EntityFramework(官方教程翻译版 版本3.2.5)含学习资料

    本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 转载请注明出处:http://www.cnblogs.com/yabu007/  谢谢 官方文档分四部分 一. 教程文档 二.ABP 框架 三. ...

  4. jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档。

    jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档. jquery.cookie中的操作: jquery.cookie.js是一个基于jquer ...

  5. dot.js教程文档api

    dot.js是一个短小精悍的js模板引擎,压缩版仅有4K大小,最近使用dot的时候整理出这个dot.js教程文档,其实称不上什么教程,只是对dot.js的介绍和实例,希望能帮助到一部分需要的人. 使用 ...

  6. ABP 教程文档 1-1 手把手引进门之 ASP.NET Core & Entity Framework Core(官方教程翻译版 版本3.2.5)

    本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 官方文档分四部分 一. 教程文档 二.ABP 框架 三.zero 模块 四.其他(中文翻译资源) 本篇是第一部分的第一篇. 第一部分分三篇 1- ...

  7. 【转】(八)unity4.6Ugui中文教程文档-------概要-UGUI Rich Text

    原创至上,移步请戳:(八)unity4.6Ugui中文教程文档-------概要-UGUI Rich Text 7.Rich Text UI元素和文本网格的文本可以合并多个字体样式和大小.对 UI系统 ...

  8. 【转】(七)unity4.6Ugui中文教程文档-------概要-UGUI Auto Layout

    原创至上,移步请戳:(七)unity4.6Ugui中文教程文档-------概要-UGUI Auto Layout 6. Auto Layout Rect Transform布局系统是足够灵活,可以处 ...

  9. 【转】(六)unity4.6Ugui中文教程文档-------概要-UGUI Animation Integration

    原创至上,移步请戳:(六)unity4.6Ugui中文教程文档-------概要-UGUI Animation Integration 5.Animation Integration(动画集成) 动画 ...

随机推荐

  1. ASP.NET MVC4+EF5(Lambda/Linq)读取数据

    希望大家记住,这里讲的所有的知识点,不仅仅是了解了就可以了,还要会灵活用,一定要多思考,撑握其中的编程思想. 本文讲的是委托和事件,这两个词可能你早就耳熟能详,但你是否真正撑握了呢? 本系列讲的C#高 ...

  2. css文本、字母、数字过长 自动换行处理

    ---恢复内容开始--- white-space: normal|pre|nowrap|pre-wrap|pre-line|inherit;white-space 属性设置如何处理元素内的空白norm ...

  3. python的vim的环境配置(后续慢慢补充进来)

    #vim ~/.vimrc set smartindent set smarttab set expandtab set tabstop= set softtabshtop= set shiftwid ...

  4. Spiral Matrix(LintCode)

    Spiral Matrix Given a matrix of m x n elements (m rows, n columns), return all elements of the matri ...

  5. 第八届山东省ACM大学生程序设计竞赛个人总结

    因为省赛,从开学紧张到5月7号.心思也几乎全放在ACM的训练上.因为我还是校台球协会的会长,所以台协还有一些事情需要忙,但是我都给延迟了.老会长一直在催我办校赛,但我一直说 等等吧,因为校赛只能在周六 ...

  6. hdu 1011(Starship Troopers,树形dp)

    Starship Troopers Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...

  7. 【BZOJ 1053】 1053: [HAOI2007]反素数ant (反素数)

    1053: [HAOI2007]反素数ant Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0&l ...

  8. rxjava 视频

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha Rxjava-基础篇视频教程-Rxjava框架的使用-麦子学院 它的自我介绍,我们可以理 ...

  9. 【BZOJ 3924】【ZJOI 2015】幻想乡战略游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=3924 gty的测试题,不会动态点分治而且看不出来链剖做法而且暴力打残所以这道题喜闻乐见的爆零了qwq ...

  10. JDBC 编程初步

    JDBC 概述 什么是JDBC 是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成,JDBC提供了一种操作数据的标准,JDBC的目标是使Java程序员使用JDBC可以 ...