财付通支付方式集成

来源:互联网 发布:阿里云备案要买服务器 编辑:程序博客网 时间:2024/05/03 00:52

近一个月没有更新文章,一直在研究公司电商网站中的支付方式集成,包括各大银行,财付通,微信支付等等。。。
刚好今天把财付通和微信支付集成完毕,已经上线,我就来给大家介绍一下著名的腾讯(简称鹅厂)的两种支付方式的集成开发,一是财付通,二是微信。。。


好了,废话不多说,先来介绍一下财付通,财付通的话可以完全参考他的官方文档和官方demo,有问题也可以加QQ询问技术人员。。。我在开发的时候也遇到一些问题,后面会把我遇到的问题总结给大家,PS:大家需要官方文档,需要官方demo,需要官方客服都可以私聊找我要,我会发给大家,如果遇到问题,需要询问,也可以私聊我,很乐意为大家解决。


好像又说了一堆废话,财付通的支付流程如下:
1、客户选择了财付通的支付方式,点击立即支付(这一步当然是在各位的电商系统中)
2、商户后台系统生成支付请求,请求参数如下:

  • partner 商户号 大家的公司或者个人在财付通注册的商户号码
  • total_fee 订单价格 注意,这是以人民币的分为单位
  • out_trade_no 订单号 大家的电商系统的订单号,支付成功后根据这个号码去修改订单状态
  • key 商户支付密钥 财付通发给你的一个密码,和商户号一一对应,后面在具体说明
  • return_url 同步回调URL 支付后接受财付通及时发回的交易成功与否信息
  • notify_url 异步回调URL 接收异步发回的交易成功与否信息
  • body 商品名称 用户到了支付页面出现的需要支付的商品名称或者信息
  • bank_type 银行类型 写DEFAULT就行
  • spbill_create_ip 订单创建机子的IP 创建该订单的电脑IP,我一般就写127.0.0.1
  • fee_type 币种 我用的是1,表示人民币
  • subject 商品描述 可以随意写
  • sign 签名 下面介绍签名生成算法
    -

上述的这些参数是提交交易时候必须传给财通的
提交地址如下:
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" + "&notify_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&notify_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

0 0
原创粉丝点击