近一个月没有更新文章,一直在研究公司电商网站中的支付方式集成,包括各大银行,财付通,微信支付等等。。。
刚好今天把财付通和微信支付集成完毕,已经上线,我就来给大家介绍一下著名的腾讯(简称鹅厂)的两种支付方式的集成开发,一是财付通,二是微信。。。
好了,废话不多说,先来介绍一下财付通,财付通的话可以完全参考他的官方文档和官方demo,有问题也可以加QQ询问技术人员。。。我在开发的时候也遇到一些问题,后面会把我遇到的问题总结给大家,PS:大家需要官方文档,需要官方demo,需要官方客服都可以私聊找我要,我会发给大家,如果遇到问题,需要询问,也可以私聊我,很乐意为大家解决。
好像又说了一堆废话,财付通的支付流程如下:
1、客户选择了财付通的支付方式,点击立即支付(这一步当然是在各位的电商系统中)
2、商户后台系统生成支付请求,请求参数如下:
上述的这些参数是提交交易时候必须传给财通的
提交地址如下:
https://gw.tenpay.com/gateway/pay.htm这个是财付通接收支付参数的链接。
注意以下几点:
1、提交的时候需要写成URL?key1=value1&key2=value2的形式,之前我是以FORM方式提交,就是< input type= value= >这种形式,但是报错了。
2、参数的编码,注意,是GBK
现在介绍签名生成:
签名是需要验证的,也就是说,你的参数传递到财付通,他会把你的参数生成签名,然后和你传递的签名进行比对,如果一样,那就生成交易,如果不一致,页面上会显示【签名验证失败】,看到这几个字我就瞬间醉了。
String sb = ("bank_type=" + config.getBank_type() + "&body=" + config.getBody() + "&fee_type=" + config.getFee_type()
+ "&input_charset=GBK" + "¬ify_url=" + config.getNotify_url() + "&out_trade_no=" + config.getOut_trade_no()
+ "&partner=" + config.getPartner() + "&return_url=" + config.getReturn_url()
+ "&service_version=1.0&sign_key_index=1&sign_type=MD5" + "&spbill_create_ip=" + config.getSpbill_create_ip()
+ "&subject=" + config.getSubject() + "&total_fee=" + config.getTotal_fee() + "&trade_mode=1&trans_type=1"
+ "&transport_fee=0&key=" + config.getKey());
注意:
1、将所有参数按照字典序排序,也就是A-Z的顺序排列
2、参数为空的不能参与签名
3、签名编码依然为GBK
4、签名采用MD5方式加密
5、大家可以这个签名字符串COPY自己用,把参数改成自己的就OK
6、MD5的加密类,大家可以找我要,在官方demo中也有
这是支付请求的写法:
https://gw.tenpay.com/gateway/pay.htm?agent_type=&agentid=&attach=&bank_type=自己填&body=自己填
&buyer_id=&fee_type=自己填&goods_tag=&input_charset=GBK¬ify_url=自己填&out_trade_no=自己填
&partner=自己填&product_fee=&return_url=自己填&seller_id=&service_version=1.0&sign=自己填
&sign_key_index=1&sign_type=MD5&spbill_create_ip=自己填&subject=自己填
&time_expire=&total_fee=自己填&trade_mode=1&trans_type=1&transport_desc=&transport_fee=0
大家COPY过去就行,我写自己填的地方大家就改成自己的参数
然后说一下商户号和秘钥:
商户号和秘钥是一一对应的,在你发支付请求的时候财付通会验证,在开发的时候可以用测试商户号和测试密钥:
商户号:1900000113
商户名称:自助商户测试帐户
密钥:e82573dc7e6136ba414f2e2affbe39fa
注意:开发的时候不要支付大笔金额,这个是不能退款的,我开发的时候每次支付一分钱。。。
上线的时候把商户号和秘钥改成自己的,最常见的情况是秘钥丢失了,那么你就需要打客服电话,提供相应的证件号码才能取回,客服电话大家懒得找的话私聊我,我告诉大家,这里公布可能不太好,你需要转人工服务,提供以下信息:开户银行卡后5位,绑定邮箱,财付通开户证件后5位。。。核对后会把密钥发到绑定邮箱。。。
最后再说一下支付会遇到的问题:
1、不支持的编码格式,这个我遇到过,那么请检查你的支付页面编码和参数提交时候的编码,以及签名生成时候的编码是不是GBK
2、签名验证失败,这个是最常见的问题,可能原因如下:
(1)、商户密钥错误
(2)、支付参数格式错误
(3)、支付参数值错误
(4)、编码格式错误
好了,有问题可以私聊我,能帮忙解决的我尽力。。。大家也可以加我QQ:453037855
原文地址:http://blog.csdn.net/murcielagoan/article/details/45168475