1. 首先使用官方demo跑通。

  2. 理解微信支付的流程:

    首先后台服务端,先预下单,从微信获取preOrder订单号。然后后台使用雨订单号等六个字段重新签名返回给app端

  3.app端所做的工作很少,只是获取服务端返回的参数即可。

 


 

现象:跳转支付页面只有一个确认的按钮

原因: 1. appid没有配置对。

    2. 后台的参数返回不正确。(注意后台返回的签名自的字段是有严格要求,特别是给app端使用的,不能多,不能少,字段必须排好序,最终生成的签名字符串必须是大写)

 


后台调试的时候,为了方便,使用了Golang的反射机制,遍历字段,但是需要区分传入的参数是指针还是stucture, 如果是指针的话,获取的key, value都是错的

 

当前面的CanSet是一个指针的时候(p)它是不可寻址的,但是当是p.Elem()(实际上就是*p),它就是可以寻址的

 

http://www.cnblogs.com/yjf512/archive/2012/06/10/2544391.html

 

 


 

ps : golang 的支付宝,微信支付都可以搜索得到,好无力啊。

http://blog.csdn.net/xyzhaopeng/article/details/50386349

 

http://blog.csdn.net/xyzhaopeng/article/details/50374191

 

支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。 对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。 (通知频率为15/15/30/180/1800/1800/1800/1800/3600,单位:秒) 注意:同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。 推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。 特别提醒:商户系统对于支付结果通知的内容一定要做签名验证,防止数据泄漏导致出现“假通知”,造成资金损失。

 


注意 一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。代码示例如下: