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

1. 支付流程概览 1

2. 设置支付起始目录   host/app/paydir/ 1

3. 设置oauth验证域名 1

4. 测试目录 可以使用ip,但必须80端口好像。 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/

要有一个通过备案的域名+80端口,不能使用ip形式,也不能其他端口号(好像域名+端口号可以)

如果测试,可以使用测试目录

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

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

3. 设置oauth验证域名

实际上可以设置ip+端口

4. 测试目录 可以使用ip,但必须80端口好像。

要手动添加测试白名单。。然后就可以测试了。。

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. 可用性设计:手动支付,再次支付按钮要有

10.5. 测试方面的支持

Debug模式,可以使用在调用开头的时候儿...

Stopstep:: 可以指定stopstep

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

转载于:https://www.cnblogs.com/attilax/p/5963668.html

atitit.微信支付的教程文档 attilax总结相关推荐

  1. 微信支付平台技术文档的一个小坑

    一.注意服务器的时间与微信接口是否相同,如时间不同接口也不通即使是0.1秒 二.调用支付相关接口需要加载私钥,和证书两个认证文件,官网文档给了java和php两个demo,逻辑应该是一样的,但实际却走 ...

  2. android微信支付插件,AppCan文档中心-Android微信插件接入指引

    开发者在使用APPCAN平台提供的微信插件时,需要配置相关的包名,AppID和签名.具体步骤如下(以大众版打包为例): 1. 获取apk相关的包名和签名 1.1包名 自定义包名(推荐使用) APPCA ...

  3. python使用微信设置-微信 python 接口 -- itchat 文档

    itchat 一. 安装 $ pip install itchat 特殊的字典使用方式 通过打印 itchat 的用户以及注册消息的参数, 可以发现这些值都是字典. 但实际上 itchat 精心构造了 ...

  4. 手机微信如何打印word文档,微信中接收文件怎么打印

    作为一个文艺青年,特别喜欢在手机上写一些辞藻华丽的语言,有些语言可以代表自己当心的心境,有些语言则纯属个人鉴赏.平常我总要打开手机上的记事软件,输入一段话保存一下,有时候还会在空闲之余,在电脑的文档上 ...

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

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

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

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

  7. 【转】(五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components

    原创至上,移步请戳:(五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components 4.Interaction Components 本节涵盖了处 ...

  8. MAC微信接收到的文档打开都变成(只读)解决办法

    在使用mac电办公的时候,经常会需要处理office文档,但经常就是打开别人发来的office文档,我们习惯的就是先点击, 然后在点击上方的使用xxx打开.结果点击打开后,标题上就是显示只读. 解决办 ...

  9. Atitit db analysis statistics tonjyi fsy数据库统计分析目录1. Atitit 数据库表与注释文档与统计(表,说明) 11.1. 获取表列表 数据库包含哪些

    Atitit db analysis statistics tonjyi fsy数据库统计分析 目录 1. Atitit 数据库表与注释文档与统计(表,说明)    1 1.1. 获取表列表 数据库包 ...

最新文章

  1. Fedora下配置网卡
  2. 2020年SAP项目艰辛曲折的开工历程 II
  3. 通用数据库管理工具DBeaver
  4. Windows 7/8.1 仍可免费升级至 Windows 10
  5. 网页变灰配合全国哀悼日的css代码
  6. 全面解析java注解
  7. 数据结构----数组与广义表专题
  8. 自定义异常时exception is never thrown in the corresponding try block和unhandled exception
  9. java如何返回之前代码_java – 如何在每次返回之前向消息添加代码?
  10. Codeforces Round #715 (Div. 1) C. Complete the MST 补图 + 思维 + 最小生成树
  11. javafx阴影_JavaFX技巧23:节省内存! 属性的阴影场
  12. [TED] Kinect控制的四翼直升机
  13. python 找质数的个数_用Python打造一款文件搜索工具,所有功能自己定义!
  14. 文思创新面试总结(1)
  15. [CH5E02] A Little Shop of Flowers
  16. 我最喜欢的ORM工具—Simple Data(转)
  17. ubuntu14.04-安装flash
  18. 前端技术—CSS常用代码大全
  19. sqlalchemy 8 会话 与 异常
  20. 免费福利 Unity3D 项目资源分享链接(消消乐、斗地主、AR等)

热门文章

  1. Linux 挂在命令mount
  2. depcomp: line 571: exec: g++: not found
  3. 【转】ofbiz数据库表结构设计
  4. Android开发技巧——大图裁剪
  5. 通向架构师的道路(第十七天)IBM Websphere集群探秘-WASND
  6. 【ASP.NET】服务器控件大演练与实例分析
  7. 探讨“临时对象”(temporary object)
  8. 我的20天项目经历--至今令我难忘的技术难题
  9. MONGODB 数据库文件读取的优化
  10. Could not find *.apk!解决办法