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. Interllij IDEA 使用Git工具

    1.git简介 git是目前流行的分布式版本管理系统.它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响.也因此其近乎所有的操作都是本地执行,所以在断网的情况下任然可 ...

  2. mangeto 清除分类 产品 客户

    分类: SET FOREIGN_KEY_CHECKS=0; TRUNCATE TABLE `catalog_category_entity`; TRUNCATE TABLE `catalog_cate ...

  3. 常用的phpstorm快捷键总结(带截屏版)

    常用的phpstorm快捷键总结(带截屏版) 目 录 PhpStorm的快捷键有10类 1.编辑相关 2.搜索/替换 3.被使用搜索 4.项目运行 5.debug相关 6.导航相关 7.重构相关 8. ...

  4. CodeForces 779B Weird Rounding

    简单题. 删去结尾的不是$0$的数字,保证结尾连续的$k$个都是$0$,如果不能做到,就保留一个$0$. #include<map> #include<set> #includ ...

  5. 洛谷P1196 [NOI2002] 银河英雄传说

    #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #includ ...

  6. JSP2 自定义标签

    实现步骤 实现自定义标签的处理类继承javax.servlet.jsp.tagext.SimpleTagSupport,并重写doTag方法 建立标签库配置文件 在jsp中使用自定义标签 一个简单的标 ...

  7. CSS排版常用值指南

    高对比度是确保网页阅读无障碍的关键,但也往往会被过分强调. 白底黑子会让打断文本显得过分密集,反而影响可读性. 文字颜色 3b4348 链接颜色 235ea7 衬线字体 font-family: &q ...

  8. 【BZOJ 1216】 1216: [HNOI2003]操作系统 (模拟+优先队列)

    1216: [HNOI2003]操作系统 Description 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自 ...

  9. BZOJ 1934 [Shoi2007]Vote 善意的投票(最小割)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1934 [题目大意] 每个人对于投票都有自己原来的观点:1或者0, 他可以违背自己原来的 ...

  10. rmq问题:ST表

    存板子.O(nlogn)预处理,O(1)查询.空间O(nlogn). int d[1000006][25]; int mn[1000006]; void rmq_init() { for(int i= ...