财付通接口文档及代码

合集下载

财付通商户管理系统手册

财付通商户管理系统手册

财付通商户管理系统帮助手册Version 1.02008年8月深圳市财付通科技有限公司目录1 新手上路 (4)➢什么是财付通商户管理系统? (4)➢如何申请商户号? (4)➢什么是证书用户和非证书用户? (4)➢什么是客户端证书,如何申请? (5)➢如何登录财付通商户管理系统? (5)2 常见问题 (7)➢商户管理系统的密码是什么? (7)➢忘记登录密码怎么办? (7)➢什么是客户端证书? (7)➢什么是证书用户和非证书用户 (7)➢申请证书的条件及流程? (7)➢什么是密钥和初始密钥? (7)➢我忘了密钥怎么办? (7)➢申请商户号以后多久能获得反馈? (8)➢想更换结算的银行账户该怎么办? (8)➢没有收到财付通发来的通知邮件怎么办? (8)➢什么是自助商户服务协议?什么是正式协议? (8)➢我申请商户号时填写的信息有误怎么办? (8)➢证书到期了怎么办? (8)➢有技术问题或疑问,如何寻求协助解决? (8)➢集成开发包、说明文档下载链接 (8)➢在哪里可以确认掉单情况? (8)➢商户管理系统的结算规则 (9)3 用户帮助 (10)3.1 申请与登录 (10)3.1.1申请商户号 (10)3.1.2数字证书 (12)3.1.3用户登录 (15)3.2 交易订单管理 (16)3.2.1基本信息 (16)3.2.2订单统计 (16)3.2.3订单查询 (17)3.2.4退款查询 (19)3.2.5申请退款 (21)3.3 交易账户管理 (26)3.3.1交易账户流水查询 (26)3.3.2交易账户流水下载 (27)3.4 现金账户管理 (28)3.4.1现金账户流水 (28)3.4.2现金账户充值 (29)3.4.3银行代付 (29)3.4.4财付通转账 (33)3.5 结算管理 (36)3.5.1结算查询 (36)3.5.2结算设置 (37)3.5.3下载对账单 (37)3.6 客户信息管理 (38)3.6.1基本信息管理 (38)3.6.2协议签署流程 (39)3.6.3协议申请表 (40)3.6.4功能申请 (41)3.6.5客户端证书申请 (41)3.6.6修改密钥 (41)3.6.7修改登录密码 (42)3.6.8操作员设置 (43)3.7 其他下载 (44)3.7.1开发包下载 (44)3.8 营销工具 (45)3.8.1广告平台 (45)3.9 客户服务 (45)3.10 平台方管理 (45)3.10.1订单统计 (45)3.10.2结算查询 (46)3.10.3下属商户 (47)4 名词解释 (48)4.1 交易账户 (48)4.2 现金账户 (49)4.3 订单查询 (49)4.4 订单统计 (50)4.5 结算查询 (50)4.6 操作员设置 (50)1 新手上路➢什么是财付通商户管理系统?商户管理系统是腾讯财付通为签约商户提供的在线综合账务管理平台。

财付通银行普通限额及编码(字母分表)

财付通银行普通限额及编码(字母分表)

3
农业银行
ABC
借记卡 准贷记卡
卡种
专业版 ( 签约客户 )
4
招商银行
CMB
借记卡 客户自行设定客户自行设定 599.99 客户自行设定 信用卡
卡种 数字证书版 ( 签约客户 ) 单笔限额 每日限额
5
上海浦发 银行
SPDB
活期一本 通 借记卡 准贷记卡 信用卡
卡种
5000 5000 5000 客户类型 深圳发展卡 用户(使用 卡号,卡静 密码)
备注
已开通手机短信认证的电子 银行口令卡客户 每日限额 5000 5000
账号支付
单笔限额
1000 1000
每日限额
1000
单笔限额
不支持
每日限额
1000
电子支付卡用户 单笔限额 每日限额
不支持 不支持
简化版 ( 非签约客户 ) 单笔限额 暂不支持 每日限额 暂不支持 暂不支持 暂不支持
暂不支持 暂不支持 额500元,每日限额1000元 日支付限额
卡种 普通用户
单笔2000,每日限额5000元,月累计限额10000 动态密码用户
签约
8
北京银行
BOB
卡种
8
北京银行
BOB 借记卡
卡种
阳光借记 卡、活期 一本通 9 光大银行 CEB 借记卡
单笔限额 总限额 日限额 300, (总累计300 元后不能再 300 3000-5000 做网上支付, 100万 必需到柜台 开通才可以 继续使用此 网银安全验 单笔支付限额 当日累计支付 支付方式 证方式 (元) 限额(元) 阳光网盾 500,000.00 500,000.00 网银专业版 动态密码 5,000.00 5,000.00 支付 令牌动态密 500,000.00 500,000.00 码 5,000.00 5,000.00 银行卡直接 手机动态密 码 支付 令牌动态密 500,000.00 500,000.00 码 单笔限额 银行卡直接 支付 -300.00 贵宾版 每日限额 5,000.00 贵宾版 300.00

第三方支付列举

第三方支付列举

http://www.javae‎y /第三方支付‎接口,银行接口(附下载),third‎party‎bank inter‎f aceEngli‎s h Frien‎d See This Infor‎m atio‎n:/Optio‎n s/inter‎f ace_‎w ith_‎3rd_p‎a rty_‎c redi‎t_or_‎b ank_‎c ard_‎p roce‎s sing‎_soft‎w ar e_‎s uch_‎a s_ic‎v erif‎y.htm第三方支付‎接口1. 快钱支付2. 支付宝3. YeePa‎y易宝4. 邮局支付(网汇通)5. 安付通6. 网银(china‎b ank)7. PayPa‎l贝宝8. ips环迅‎支付9. 腾讯财付通‎10. NPS网上‎支付系统你要使用第‎三方网上支‎付网关。

例如:北京的网银‎在线、首信支付、上海的快钱‎、支付宝等都‎是可以的。

手续费一把‎是交易额的‎0.5%-2%都有,1%的比较多些‎。

你要去这些‎支付平台网‎站上注册账‎号,在线提交一‎些证明,个人的比较‎方便快捷,公司用户还‎要传真一些‎资料:例如:工商执照复‎印件等。

要签合同的‎。

你需要一个‎银行账号和‎这个注册用‎户绑定。

个人可以用‎任何银行卡‎,公司用户只‎能用公司的‎开户行账号‎。

然后你可以‎登陆支付平‎台的个人中‎心,下载开发接‎口。

写程序在你‎的网站中实‎现它们规定‎的接口就可‎以了。

顾客购买商‎品后付款到‎你的网银帐‎户,支付平台定‎期结算(每周定期结‎算或者最低‎限额结算),扣除1%手续费后转‎账到你的绑‎定的银行卡‎里面。

1.快钱支付(银行/邮政汇) (https‎://www.99bil‎/websi‎t e/)联系方式: http://www.99bil‎/seash‎e ll/html/corp/conta‎c tus.html网关地址: https‎://www.99bil‎/webap‎p/recei‎v eMer‎c hant‎I nfoA‎c tion‎.do/程序参考文‎档: 见附件快钱‎接口.rar特点:1.支持19种‎国内银行在‎线支付,2.支持2种线‎下支付方式‎:(在线生交易‎号码,客户至银行‎柜台或者邮‎局依此号码‎汇款,参考下图)a.通过邮局汇‎款b.通过银行柜‎台汇款提供邮件号‎码或者手机‎号码后会将‎信息发至相‎应联系工具‎中银行前台结‎算方式图2.支付宝支付‎(https‎://www.alipa‎/)联系方式: https‎://www.alipa‎/stati‎c/about‎a lipa‎y/conta‎c t.htm网关地址: https‎://www.alipa‎/coope‎r ate/gatew‎a y.do签约入口: https‎://www.alipa‎/coope‎r ate/btool‎s_sho‎p.htm程序参考文‎档: 见附件支付‎宝.rar特点:1.支持国内1‎4种银行在‎线支付2.支持支付宝‎帐户余额直‎接付款3.支持"支付宝卡通‎"付款(映射至用户‎银行卡)4.支持邮政"网汇e"5.支付宝在国‎内拥有很大‎数量的用户‎,为"淘宝网"的支付工具‎;6.提供" 合并支付"功能,即" 是在对交易‎进行付款的‎时候,可以选择"等待买家付‎款"类型的交易‎,只用一次支‎付过程就实‎现了多笔交‎易的支付,提高了支付‎操作的效率‎和易用性。

口袋支付API接口文档

口袋支付API接口文档

口袋支付平台商户支付功能接口规范版本号修订日期2.0 2013年4月17日3.0 2015年6月15日3.2 2015年10月27日功能说明:本接口主要目的是为了让商户自有系统自由接入口袋支付平台,完成网站支付接入,用户支付后,平台会即时返回结果给商户。

接口商户是根据口袋支付提供的接口文档传递相关的请求参数到平台里,口袋支付平台验证参数后,会引导用户到相应的页面进行支付操作,用户成功填入支付信息后,口袋支付平台将用户的支付成功与失败状态通知商户。

接口商户可以在自己的页面带入一些附加信息,口袋支付平台在回调时将该信息原样返回。

本接口支持那些语言?本平台接口支持大部分web语言,比如ASP,PHP,ASPX,JSP。

接口支持的协议方式?本平台使用http+GET/POST方式,如需https协议,请与平台客服联系。

- 1 –口袋支付接口应用类型?接口是面向所有需要支付购买的行业,软件、商城、游戏等均可以进行集成接入。

接口提交编码?口袋支付接口统一编码为:GB2312,编码错误可能导致乱码订单错误或者不能正确返回结果。

支付流程图- 2 –口袋支付网关接口规范(1)网关接口提交参数:商户向平台网关提交的参数卡类网关地址:/pay/Card.aspx网银网关地址:/pay/Bank.aspx兼容易宝卡类网关地址:/gateway/yeepay/Card.aspx兼容易宝网银网关地址:/gateway/yeepay/Bank.aspx网银网关包括支付宝、微信、财付通等非卡类支付方式具体通道编码详见具体参数详见附录参数参数说明参与签名类型备注P_UserId商户ID 是整型数字必须(商户管理中心查看)P_OrderId 商户订单号是字符串,最长32位必须,在商户系统中保持唯一P_CardId 卡类交易时的卡号是字符串,最长20位卡类交易时必须,网银支付为空P_CardPass 卡类交易时的卡密是字符串,最长20位卡类交易时必须,否则可为空P_FaceValue 面值是float,保留2位小数必须P_ChannelId 充值类型是整型数字必须(具体参数详见附录)P_Subject 产品名称否字符串,最长20位可为空P_Price 产品价格否float,保留2位小数必须,可传0- 3 –口袋支付P_Quantity 产品数量否整型数字必须P_Description 银行ID 否字符串,最长20位充值类型为在线银行时必填P_Notic 用户附加信息否字符串,最长50位可为空P_Result_URL 充值状态通知地址否字符串,最长100位必须P_Notify_URL 充值后网页跳转地址否字符串,最长100位可为空P_PostKey 签名认证串-字符串必须说明:1.签名认证P_PostKey的生成:必须按照“参与签名”状态为“是”的参数按其顺序用“|”组合,最后加上用户密钥,然后进行32位的md5编码,比如:P_PostKey=md5_32(P_UserId| P_OrderId| P_CardId| P_CardPass |P_FaceValue| P_ChannelId|SalfStr),SalfStr是您的安全码,如安全码被泄漏可通过平台重置。

【微信支付】公众号支付接口文档V2.7

【微信支付】公众号支付接口文档V2.7

公众号支付接口文档V2.7版本说明版本更改说明更新时间V2.6更新实例代码成实际可运行2014-04-29 V2.7更新订单号重复说明2014-06-181.1功能简介 (4)1.2支付账户 (4)1.3支付方式 (5)1.3.1网页内支付场景---JS API(网页内)支付接口 (5)1.3.2线下扫码购买场景---Native(原生)支付接口 (7)2.JS API(网页内)支付接口 (8)2.1支付场景 (8)2.2功能交互 (9)2.3获取当前微信版本号 (10)2.4显示微信安全支付标题 (10)2.5JS API支付接口(getBrandWCPayRequest)定义 (10)2.6订单详情(package)扩展字符串定义 (11)2.7支付签名(paySign)生成方法 (14)2.8接口使用示例 (16)3.Native(原生)支付接口 (17)3.1支付场景 (17)3.2基本交互 (18)3.3Native(原生)支付接口描述 (19)3.4Native(原生)支付URL定义 (19)3.5Native(原生)支付URL签名方式 (20)3.6Native(原生)支付回调商户后台获取package (21)4.1通知接口简介 (22)4.2补单机制 (23)4.3通知接口参数 (23)4.4后台通知结果返回 (25)5.API接口说明 (26)5.1API接口简介 (26)5.2API使用方式 (26)5.3API列表 (26)5.3.1获取access_token (26)5.3.2发货通知delivernotify (27)5.3.3订单查询orderquery (29)5.3.3告警通知 (32)6.常见问题和注意事项 (33)6.1帮助SDK (33)6.2常见基本概念疑惑 (33)6.3常见错误现象及解决方法 (34)6.4常见注意事项 (35)6.5最新接口文档下载 (36)6.6联系我们 (36)1.微信支付简介1.1功能简介微信支付,是基于微信客户端提供的支付服务功能。

企业付款API接口说明文档_V2 (1)(1)

企业付款API接口说明文档_V2 (1)(1)

书密码默认为您的商户
用来标识和界定您
ID(如:10010000)
的身份
证书 pem 格式

PHP 等不能直 您也可以使用 openssl
(apiclient_cert.pem) apiclient_cert.p12 接使用 p12 文 命令来自己导出:
中导出证书部分的 件,而需要使用 openssl pkcs12
业务结果 result_code 是
String( SUCCESS/FAIL
16)
错误代码 err_code

String( 错误码信息
32)
错误代码 err_code_de 否
String( 结果信息描述
描述
s
128)
以下字段在 return_code 和 result_code 都为 SUCCESS 的时候有返回
内部文档,请勿外传
内部文档,请勿外传
用户微信 weinxin_id 可


校验用户 check_name 是
姓名选项
收款用户 re_user_na 可
姓名
me

金额
amount

企业付款 desc

描述信息
Ip 地址 spbill_creat 是
e_ip
weiweiVIP OPTION_CHE CK
马总
10099 理赔 192.168.0.1
1.2 接口介绍
业务流程 付款
接口 企业付款
简介 用于企业向微信用户个人付款 目前支持向指定微信用户的 openid 或微信号付 款。(获取 openid 参见微信公众平台开发者文 档: 网页授权获取用户基本信息,微信号需用户 主动告知)

python财务常用代码 -回复

python财务常用代码 -回复

python财务常用代码-回复Python财务常用代码Python是一种通用的编程语言,它也被广泛应用于财务分析和建模。

在金融业务中,Python可以用于数据分析、模型开发、风险管理等方面。

本文将介绍一些Python财务常用代码,包括数据获取、数据处理、数据分析和可视化等方面的实用代码。

第一部分:数据获取在财务领域,数据获取是非常重要的一环。

可以使用Python的各种数据获取库来方便地从互联网上获取金融数据。

1.1 使用pandas_datareader获取股票数据pandas_datareader是一个用于获取金融数据的Python库。

它可以通过简单的代码从Yahoo Finance、Google Finance等源获取股票数据。

pythonimport pandas as pdimport pandas_datareader as pdrstock_data = pdr.get_data_yahoo('^GSPC', start='2020-01-01', end='2021-12-31')print(stock_data.head())上述代码使用pandas_datareader库从Yahoo Finance获取了标普500指数(^GSPC)的股票数据,并打印出了前几行。

1.2 使用tushare获取金融数据tushare是一个免费的、开源的金融数据接口包。

它提供了丰富的金融数据,包括股票、基金、期货、指数等。

pythonimport tushare as tsts.set_token('your_token')pro = ts.pro_api()data = pro.daily(ts_code='000001.SZ', start_date='20200101', end_date='20211231')print(data.head())上述代码使用tushare库获取了中国平安股票(000001.SZ)的每日交易数据,并打印出了前几行。

腾讯财付通接口的开发

腾讯财付通接口的开发

财付通支付网关商户开发指南目录1引言 (4)1.1文档概述 (4)1.2阅读对象 (4)1.3业务术语 (4)2方案概述 (4)2.1行业背景 (4)2.2接口介绍 (5)2.3业务实现流程 (6)3交互模式 (6)3.1页面跳转交互模式 (6)3.2后台系统调用交互模式 (7)3.3后台通知交互模式 (8)4数据格式 (8)4.1GET或POST (8)4.2XML数据格式 (9)4.3字符串格式 (9)5数字签名 (9)5.1签名原始串 (10)5.2签名算法 (10)5.2.1MD5签名 (10)6补单机制 (10)7接口 (11)7.1支付接口 (11)7.1.1业务功能 (11)7.1.2交互模式 (11)7.1.3请求参数列表 (11)7.1.4返回结果和通知参数列表 (13)7.1.5后台通知结果反馈 (15)7.2通知查询接口 (15)7.2.1业务功能 (15)7.2.2交互模式 (15)7.2.3请求参数列表 (15)7.2.4应答参数列表 (16)7.3订单查询接口 (17)7.3.1业务功能 (17)7.3.2交互模式 (17)7.3.3请求参数列表 (17)7.3.4应答参数列表 (18)7.4退款接口 (20)7.4.1业务功能 (20)7.4.2交互模式 (20)7.4.3请求参数列表 (21)7.4.4应答参数列表 (22)7.5退款明细查询接口 (23)7.5.1业务功能 (23)7.5.2交互模式 (23)7.5.3请求参数列表 (23)7.5.4应答参数列表 (25)8实例 (26)9注意事项 (28)1引言1.1 文档概述本文描述了财付通针对合作商户提供的支付解决方案,帮助商户轻松实现在线收款的功能。

文档分别从交互模式、签名、接口、注意事项等方面详细介绍了财付通的工作方式和开发过程,可以帮助开发人员快速入门并掌握开发技能,同时也可以作为日后接口参数以及参数类型的速查手册。

汇财支付api支付程序接口开发文档-v2.0

汇财支付api支付程序接口开发文档-v2.0

汇财支付Api支付网关技术接口规范一、引言 (1)1.目的 (1)2.范围 (1)二、基本流程 (1)三.接口描述 (2)1.概述 (2)2.订单支付请求 (2)3.订单支付结果通知 (5)4.商户页面/服务器底层接受支付通知 (5)附录一:支付渠道代码表............................................................................. 错误!未定义书签。

一、引言中国目前电子商务发展日趋成熟,电子商务网站越来越多,但是统一的支付平台还不是很成熟,基于这种环境,有必要建立一套完整的支付体系。

本支付系统集成各个大银行的支持,提供给商家一个统一的平台,方便商户使用,能够及时的反应支付结果信息。

遵循“专业、安全、高效、便捷”式的设计原则,汇财支付网系统为开展电子商务的商户提供了统一的网上交易支付平台。

该网系统定义了一个和商户系统的开放接口,商户系统通过这一接口就可以使用众多现有流行的银行支付系统完成网上交易,而不必针对每家银行的支付系统进行设计。

同时系统还提供了完善的商家后台管理功能。

1.目的本手册的主要目的是帮助汇财支付商户熟练掌握支付网的交易流程、网关技术接口。

2.范围本文档适用于商户了解开发接口和接口流程二、基本流程汇财支付接口使用HTTP POST方式连接并发送信息,信息放在HTTP的消息体中。

每个HTTP POST请求发送后,接收端在接收并处理请求时提取商户提供的订单信息,订单信息经过MD5加密,然后再进行提交。

之后经过后台处理,汇财支付网关获取结果参数进行MD5加密并与系统Md5签名字段进行比较,如果校验一致,则把订单结果信息通知给商户或用户。

当发送端接收到确认信息后,进行支付结果逻辑处理。

在某些要求务必送达的请求中,上述通知-确认流程必须由接收端确保,如果发送端不能成功请求地址的,将进行重复几次通知。

目前的协议中,订单支付结果通知是必须送达商户的信息。

财汇系统SSO接口文档

财汇系统SSO接口文档

财汇系统SSO接口文档以B1为例接口模式:采用HTTP的POST方式传输方式。

注:为了保证接收方接收数据正确,传递的参数如果存在特殊字符(如&、=等)需要进行URL Encode。

加密方式:以DES-数据加密算法作为签名算法,所有的参数仅对value进行加密处理。

举例:调用某个接口,接口有如下字段:UserId ;Ip;Status;Style实际调用接口时,各字段的值:UserId=加密后的值、Ip=加密后的值……注意:加密时将字符串转化成字节流时指定的字符集input_charset 一致。

加密/解密参考示例:加密:private final byte[] DESkey ="GTI20141".getBytes("UTF-8");// 设置密钥private Key key = null;public CryptoUtil() throws Exception {DESKeySpec keySpec = new DESKeySpec(DESkey);// 设置密钥参数SecretKeyFactory keyFactory =SecretKeyFactory.getInstance("DES");// 获得密钥工厂key= keyFactory.generateSecret(keySpec);// 得到密钥对象}public String encode(String data) throws Exception { Cipher enCipher =Cipher.getInstance("DES/ECB/PKCS5Padding");// 得到加密对象CipherenCipher.init(Cipher.ENCRYPT_MODE, key);byte[] pasByte =enCipher.d oFinal(data.getB ytes("utf-8"));BASE64Encoder base64Encoder = new BASE64Encoder();return base64Encoder.encode(pasByte);}解密:public String decode(String data) throws Exception { Cipher deCipher =Cipher.getInstance("DES/ECB/PKCS5Padding");deCipher.init(Cipher.ENCRYPT_MODE, key);BASE64Decoder base64Decoder = new BASE64Decoder();byte[] pasByte =deCipher.doFinal(base64Decoder.decodeBuffer(data));return new String(pasByte, "UTF-8");}。

【微信APP支付】接口文档V1.2_For_IOS

【微信APP支付】接口文档V1.2_For_IOS

3
[package appendString:"&"]; } [package appendString:"key="]; [package appendString:PARTNERKEY]; // 注意:不能hardcode在客户端,建议genPackage这 个过程都由服务器端完成 // 进行md5摘要前,params内容为原始内容,未经过url encode处理 String packageSign = package.md5.uppercaseString; return [NSString stringWithFormat:@"%@&sign=%@",paragramString,packageSigSMutableString *signText = [NSMutableString string]; for (NSString *key in [params allKeys]) { [signText appendString:key]; [signText appendString:@"="]; [signText appendString:[params objectForKey:key]]; [signText appendString:"&"]; } NSString *signResult = signText.sha1; // 注意:不能hardcode在客户端,这个过程都由服务器端完 成
参数 appid
traceid noncestr package timestamp app_signature
是否必须 是 否 是 是 是 是
说明 应用唯一标识,在微信开放平台提交应用审核通 过后获得

微信API接口大全

微信API接口大全

微信API接⼝⼤全微信⼊⼝绑定,微信事件处理,微信API全部操作包含在这些⽂件中。

微信⽀付、微信红包、微信卡券、微信⼩店。

1. [代码]index.php<?phpinclude_once 'lib.inc.php';$wcObj = new WeChat("YOUKUIYUAN");$wcObj->wcValid();2. [代码]微信⼊⼝类<?php/*** Description of wechat** @author Administrator*/class WeChat extends WxApi{public $token = "";//put your code herepublic function __construct($token = "") {parent::__construct();$this->token = $token;}public function wcCheckSignature(){try{if (empty($this->token)) {throw new Exception('TOKEN is not defined!');}$signature = $_GET["signature"];$timestamp = $_GET["timestamp"];$nonce = $_GET["nonce"];$token = $this->token;$tmpArr = array($token, $timestamp, $nonce);// use SORT_STRING rulesort($tmpArr, SORT_STRING);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr == $signature ){return true;}else{return false;}}catch (Exception $e) {echo 'Message: ' .$e->getMessage();}}public function wcValid(){$echoStr = isset($_GET["echostr"]) && !empty($_GET["echostr"]) ? addslashes($_GET["echostr"]) : NULL;if(is_null($echoStr)){$this->wcMsg();}else{//valid signature , optionif($this->wcCheckSignature()){echo $echoStr;exit;}else{exit();}}}public function wcMsg(){//get post data, May be due to the different environments$postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) && !empty($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; if(!empty($postStr)){libxml_disable_entity_loader(true);$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$this->zcLog(TRUE,$postObj);$fromUsername = $postObj->FromUserName;$toUsername = $postObj->ToUserName;$MsgType = $postObj->MsgType;if($MsgType == 'event'){//执⾏事件相应$Event = $postObj->Event;switch ($Event) {case 'subscribe'://关注break;case 'unsubscribe'://取消关注break;case 'SCAN'://扫描break;case 'LOCATION'://地址break;case 'CLICK'://点击时间break;case 'VIEW'://跳转break;case 'card_pass_check'://卡券审核通过break;case 'card_not_pass_check'://卡券审核失败break;case 'user_get_card'://⽤户领取卡券break;case 'user_del_card'://⽤户删除卡券break;case 'user_view_card'://⽤户浏览会员卡break;case 'user_consume_card'://⽤户核销卡券break;case 'merchant_order'://微⼩店⽤户下单付款break;default:break;}}else{switch ($MsgType) {case 'text'://⽂本格式break;case 'image'://图⽚格式break;case 'voice'://声⾳break;case 'video'://视频break;case 'shortvideo'://⼩视频break;case 'location'://上传地理位置break;case 'link'://链接相应break;default:break;}}////////////////////////////////////////////////////////////////////$keyword = trim($postObj->Content);$time = time();$textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>";if(!empty( $keyword )){$msgType = "text";$contentStr = "Welcome to wechat world!";$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr;}else{echo "Input something...";}////////////////////////////////////////////////////////////////////}else{echo "暂时没有任何信息!";exit;}}//⽇志LOGpublic function zcLog($errcode , $errmsg){$this->returnAy = array();$this->returnAy['errcode'] = $errcode;$this->returnAy['errmsg'] = $errmsg;$this->returnAy['errtime'] = date("Y-m-d H:i:s",time());$logfile = fopen("logfile_".date("Ymd",time()).".txt", "a+");$txt = json_encode($this->returnAy)."\n";fwrite($logfile, $txt);fclose($logfile);//return $this->returnAy;}}3. [代码]微信操作类 - 更新了⾃定义菜单部分<?php/********************************************************* @author Kyler You <QQ:2444756311>* @link /wiki/home/index.html* @version 2.0.1* @uses $wxApi = new WxApi();* @package 微信API接⼝陆续会继续进⾏更新********************************************************/class WxApi {//const appId = "";//const appSecret = "";const appId = "";const appSecret = "";//const mchid = ""; //商户号//const privatekey = ""; //私钥public $parameters = array();public function __construct(){}/***************************************************** 微信提交API⽅法,返回微信指定JSON****************************************************/public function wxHttpsRequest($url,$data = null){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);if (!empty($data)){curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);}curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($curl);curl_close($curl);return $output;}/***************************************************** 微信带证书提交数据 - 微信红包使⽤****************************************************/public function wxHttpsRequestPem($url, $vars, $second=30,$aHeader=array()){$ch = curl_init();//超时时间curl_setopt($ch,CURLOPT_TIMEOUT,$second);curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);//这⾥设置代理,如果有的话//curl_setopt($ch,CURLOPT_PROXY, '10.206.30.98');//curl_setopt($ch,CURLOPT_PROXYPORT, 8080);curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);//以下两种⽅式需选择⼀种//第⼀种⽅法,cert 与 key 分别属于两个.pem⽂件//默认格式为PEM,可以注释curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/apiclient_cert.pem');//默认格式为PEM,可以注释curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'/apiclient_key.pem');curl_setopt($ch,CURLOPT_CAINFO,'PEM');curl_setopt($ch,CURLOPT_CAINFO,getcwd().'/rootca.pem');//第⼆种⽅式,两个⽂件合成⼀个.pem⽂件//curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/all.pem');if( count($aHeader) >= 1 ){curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);}curl_setopt($ch,CURLOPT_POST, 1);curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);$data = curl_exec($ch);if($data){curl_close($ch);return $data;}else {$error = curl_errno($ch);echo "call faild, errorCode:$error\n";curl_close($ch);return false;}}/***************************************************** 微信获取AccessToken 返回指定微信公众号的at信息****************************************************/public function wxAccessToken($appId = NULL , $appSecret = NULL){$appId = is_null($appId) ? self::appId : $appId;$appSecret = is_null($appSecret) ? self::appSecret : $appSecret;$data = json_decode(file_get_contents("access_token.json"));if ($data->expire_time < time()) {//echo $appId,$appSecret;$url = "https:///cgi-bin/token?grant_type=client_credential&appid=".$appId."&secret=".$appSecret;$result = $this->wxHttpsRequest($url);//print_r($result);$jsoninfo = json_decode($result, true);$access_token = $jsoninfo["access_token"];if ($access_token) {$data->expire_time = time() + 7000;$data->access_token = $access_token;$fp = fopen("access_token.json", "w");fwrite($fp, json_encode($data));fclose($fp);}}else {$access_token = $data->access_token;}return $access_token;}/***************************************************** 微信获取AccessToken 返回指定微信公众号的at信息****************************************************/public function wxJsApiTicket($appId = NULL , $appSecret = NULL){$appId = is_null($appId) ? self::appId : $appId;$appSecret = is_null($appSecret) ? self::appSecret : $appSecret;$data = json_decode(file_get_contents("jsapi_ticket.json"));if ($data->expire_time < time()) {$url = "https:///cgi-bin/ticket/getticket?type=jsapi&access_token=".$this->wxAccessToken();$result = $this->wxHttpsRequest($url);$jsoninfo = json_decode($result, true);$ticket = $jsoninfo['ticket'];if ($ticket) {$data->expire_time = time() + 7000;$data->jsapi_ticket = $ticket;$fp = fopen("jsapi_ticket.json", "w");fwrite($fp, json_encode($data));fclose($fp);}}else {$ticket = $data->jsapi_ticket;}return $ticket;}/***************************************************** 微信通过OPENID获取⽤户信息,返回数组****************************************************/public function wxGetUser($openId){$wxAccessToken = $this->wxAccessToken();$url = "https:///cgi-bin/user/info?access_token=".$wxAccessToken."&openid=".$openId."&lang=zh_CN"; $result = $this->wxHttpsRequest($url);$jsoninfo = json_decode($result, true);return $jsoninfo;}/***************************************************** 微信⽣成⼆维码ticket****************************************************/public function wxQrCodeTicket($jsonData){$wxAccessToken = $this->wxAccessToken();$url = "https:///cgi-bin/qrcode/create?access_token=".$wxAccessToken;$result = $this->wxHttpsRequest($url,$jsonData);return $result;}/***************************************************** 微信通过ticket⽣成⼆维码****************************************************/public function wxQrCode($ticket){$url = "https:///cgi-bin/showqrcode?ticket=" . urlencode($ticket);return $url;}/***************************************************** 发送⾃定义的模板消息****************************************************/public function wxSetSend($touser, $template_id, $url, $data, $topcolor = '#7B68EE'){$template = array('touser' => $touser,'template_id' => $template_id,'url' => $url,'topcolor' => $topcolor,'data' => $data);$jsonData = json_encode($template);$result = $this->wxSendTemplate($jsonData);return $result;}/***************************************************** 微信设置OAUTH跳转URL,返回字符串信息 - SCOPE = snsapi_base //验证时不返回确认页⾯,只能获取OPENID****************************************************/public function wxOauthBase($redirectUrl,$state = "",$appId = NULL){$appId = is_null($appId) ? self::appId : $appId;$url = "https:///connect/oauth2/authorize?appid=".$appId."&redirect_uri=".$redirectUrl."&response_type=code&scope=snsapi_base&state=".$state."#wechat_redirect"; return $url;}/***************************************************** 微信设置OAUTH跳转URL,返回字符串信息 - SCOPE = snsapi_userinfo //获取⽤户完整信息****************************************************/public function wxOauthUserinfo($redirectUrl,$state = "",$appId = NULL){$appId = is_null($appId) ? self::appId : $appId;$url = "https:///connect/oauth2/authorize?appid=".$appId."&redirect_uri=".$redirectUrl."&response_type=code&scope=snsapi_userinfo&state=".$state."#wechat_redirect"; return $url;}/***************************************************** 微信OAUTH跳转指定URL****************************************************/public function wxHeader($url){header("location:".$url);}/***************************************************** 微信通过OAUTH返回页⾯中获取AT信息****************************************************/public function wxOauthAccessToken($code,$appId = NULL , $appSecret = NULL){$appId = is_null($appId) ? self::appId : $appId;$appSecret = is_null($appSecret) ? self::appSecret : $appSecret;$url = "https:///sns/oauth2/access_token?appid=".$appId."&secret=".$appSecret."&code=".$code."&grant_type=authorization_code";$result = $this->wxHttpsRequest($url);//print_r($result);$jsoninfo = json_decode($result, true);//$access_token = $jsoninfo["access_token"];return $jsoninfo;}/***************************************************** 微信通过OAUTH的Access_Token的信息获取当前⽤户信息 // 只执⾏在snsapi_userinfo模式运⾏****************************************************/public function wxOauthUser($OauthAT,$openId){$url = "https:///sns/userinfo?access_token=".$OauthAT."&openid=".$openId."&lang=zh_CN";$result = $this->wxHttpsRequest($url);$jsoninfo = json_decode($result, true);return $jsoninfo;}/***************************************************** 创建⾃定义菜单****************************************************/public function wxMenuCreate($jsonData){$wxAccessToken = $this->wxAccessToken();$url = "https:///cgi-bin/menu/create?access_token=" . $wxAccessToken;$result = $this->wxHttpsRequest($url,$jsonData);$jsoninfo = json_decode($result, true);return $jsoninfo;}/***************************************************** 获取⾃定义菜单****************************************************/public function wxMenuGet(){$wxAccessToken = $this->wxAccessToken();$url = "https:///cgi-bin/menu/get?access_token=" . $wxAccessToken;$result = $this->wxHttpsRequest($url);$jsoninfo = json_decode($result, true);return $jsoninfo;}/***************************************************** 删除⾃定义菜单****************************************************/public function wxMenuDelete(){$wxAccessToken = $this->wxAccessToken();$url = "https:///cgi-bin/menu/delete?access_token=" . $wxAccessToken;$result = $this->wxHttpsRequest($url);$jsoninfo = json_decode($result, true);return $jsoninfo;}/***************************************************** 获取第三⽅⾃定义菜单****************************************************/public function wxMenuGetInfo(){$wxAccessToken = $this->wxAccessToken();$url = "https:///cgi-bin/get_current_selfmenu_info?access_token=" . $wxAccessToken;$result = $this->wxHttpsRequest($url);$jsoninfo = json_decode($result, true);return $jsoninfo;}/****************************************************** ⽣成随机字符串 - 最长为32位字符串*****************************************************/public function wxNonceStr($length = 16, $type = FALSE) {$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";$str = "";for ($i = 0; $i < $length; $i++) {$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);}if($type == TRUE){return strtoupper(md5(time() . $str));}else {return $str;}}/******************************************************** 微信商户订单号 - 最长28位字符串*******************************************************/public function wxMchBillno($mchid = NULL) {if(is_null($mchid)){if(self::mchid == "" || is_null(self::mchid)){$mchid = time();}else{$mchid = self::mchid;}}else{$mchid = substr(addslashes($mchid),0,10);}return date("Ymd",time()).time().$mchid;}/******************************************************** 微信格式化数组变成参数格式 - ⽀持url加密*******************************************************/public function wxSetParam($parameters){if(is_array($parameters) && !empty($parameters)){$this->parameters = $parameters;return $this->parameters;}else{return array();}}/******************************************************** 微信格式化数组变成参数格式 - ⽀持url加密*******************************************************/public function wxFormatArray($parameters = NULL, $urlencode = FALSE){if(is_null($parameters)){$parameters = $this->parameters;}$restr = "";//初始化空ksort($parameters);//排序参数foreach ($parameters as $k => $v){//循环定制参数if (null != $v && "null" != $v && "sign" != $k) {if($urlencode){//如果参数需要增加URL加密就增加,不需要则不需要$v = urlencode($v);}$restr .= $k . "=" . $v . "&";//返回完整字符串}}if (strlen($restr) > 0) {//如果存在数据则将最后“&”删除$restr = substr($restr, 0, strlen($restr)-1);}return $restr;//返回字符串}/******************************************************** 微信MD5签名⽣成器 - 需要将参数数组转化成为字符串[wxFormatArray⽅法]*******************************************************/public function wxMd5Sign($content, $privatekey){try {if (is_null($privatekey)) {throw new Exception("财付通签名key不能为空!");}if (is_null($content)) {throw new Exception("财付通签名内容不能为空");}$signStr = $content . "&key=" . $privatekey;return strtoupper(md5($signStr));}catch (Exception $e){die($e->getMessage());}}/******************************************************** 微信Sha1签名⽣成器 - 需要将参数数组转化成为字符串[wxFormatArray⽅法]*******************************************************/public function wxSha1Sign($content){try {if (is_null($content)) {throw new Exception("签名内容不能为空");}//$signStr = $content;return sha1($content);}catch (Exception $e){die($e->getMessage());}}/******************************************************** 微信jsApi整合⽅法 - 通过调⽤此⽅法获得jsapi数据*******************************************************/public function wxJsapiPackage(){$jsapi_ticket = $this->wxJsApiTicket();// 注意 URL ⼀定要动态获取,不能 hardcode.$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $url = $protocol.$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];$timestamp = time();$nonceStr = $this->wxNonceStr();$signPackage = array("jsapi_ticket" => $jsapi_ticket,"nonceStr" => $nonceStr,"timestamp" => $timestamp,"url" => $url);// 这⾥参数的顺序要按照 key 值 ASCII 码升序排序$rawString = "jsapi_ticket=$jsapi_ticket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";//$rawString = $this->wxFormatArray($signPackage);$signature = $this->wxSha1Sign($rawString);$signPackage['signature'] = $signature;$signPackage['rawString'] = $rawString;$signPackage['appId'] = self::appId;return $signPackage;}/******************************************************** 将数组解析XML - 微信红包接⼝*******************************************************/public function wxArrayToXml($parameters = NULL){if(is_null($parameters)){$parameters = $this->parameters;}if(!is_array($parameters) || empty($parameters)){die("参数不为数组⽆法解析");}$xml = "<xml>";foreach ($arr as $key=>$val){if (is_numeric($val)){$xml.="<".$key.">".$val."</".$key.">";}else$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";}$xml.="</xml>";return $xml;}/******************************************************** 微信卡券:上传LOGO - 需要改写动态功能*******************************************************/public function wxCardUpdateImg() {$wxAccessToken = $this->wxAccessToken();//$data['access_token'] = $wxAccessToken;$data['buffer'] = '@D:\\workspace\\htdocs\\yky_test\\logo.jpg';$url = "https:///cgi-bin/media/uploadimg?access_token=".$wxAccessToken;$result = $this->wxHttpsRequest($url,$data);$jsoninfo = json_decode($result, true);return $jsoninfo;//array(1) { ["url"]=> string(121) "/mmbiz/ibuYxPHqeXePNTW4ATKyias1Cf3zTKiars9PFPzF1k5icvXD7xW0kXUAxHDzkEPd9micCMCN0dcTJfW6Tnm93MiaAfRQ/0" }}/******************************************************** 微信卡券:获取颜⾊*******************************************************/public function wxCardColor(){$wxAccessToken = $this->wxAccessToken();$url = "https:///card/getcolors?access_token=".$wxAccessToken;$result = $this->wxHttpsRequest($url);$jsoninfo = json_decode($result, true);return $jsoninfo;}/******************************************************** 微信卡券:创建卡券*******************************************************/public function wxCardCreated($jsonData) {$wxAccessToken = $this->wxAccessToken();$url = "https:///card/create?access_token=" . $wxAccessToken;$result = $this->wxHttpsRequest($url,$jsonData);$jsoninfo = json_decode($result, true);return $jsoninfo;}/******************************************************** 微信卡券:JSAPI 卡券Package - 基础参数没有附带任何值 - 再⽣产环境中需要根据实际情况进⾏修改*******************************************************/public function wxCardPackage($cardId){$timestamp = time();$api_ticket = $this->wxJsApiTicket();$cardId = $cardId;$arrays = array($api_ticket,$timestamp,$cardId);sort($arrays);$string = sha1(implode("",$arrays));$resultArray['card_id'] = $cardId;$resultArray['card_ext'] = array();$resultArray['card_ext']['openid'] = 'oOmn4s9MiwqHSNNvPn0dBtU23toA';$resultArray['card_ext']['timestamp'] = $timestamp;$resultArray['card_ext']['signature'] = $string;return $resultArray;}}4. [代码]微信JSAPI<?phprequire_once 'lib.inc.php';$wx = new WxApi();//通过⽹页获取openid//if(!isset($_GET['code'])){// header("location:https:///connect/oauth2/authorize?appid=".WxApi::appId."&redirect_uri=http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."&response_type=code&scope=snsapi_base&state=1#wechat_redirect"); //}//else{// $CODE = $_GET['code'];// $Info = $wx->wxOauthAccessToken($CODE);//print_r($Info);// $openId = $Info['openid'];//}////////////////////////////////////////////$signPackage = $wx->wxJsapiPackage();//print_r($signPackage);$kqInfo = $wx->wxCardPackage("");$listInfo = $wx->wxCardListPackage();><html><head><title>JSAPI接⼝测试</title><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="/jquery-1.11.2.min.js"></script><script src="/open/js/jweixin-1.0.0.js"></script></head><body><div><input type="button" id="batchAddCard" name="batchAddCard" value="添加卡券" /><br /><input type="button" id="openCard" name="openCard" value="拉起卡券库" /><br /><input type="button" id="ShareTimeLine" name="ShareTimeLine" value="分享朋友圈" /><br /><div id="showInfo"></div></div><script>wx.config({debug: false,appId: '<?php echo $signPackage["appId"];?>',timestamp: <?php echo $signPackage["timestamp"];?>,nonceStr: '<?php echo $signPackage["nonceStr"];?>',signature: '<?php echo $signPackage["signature"];?>',jsApiList: [// 所有要调⽤的 API 都要加到这个列表中'onMenuShareTimeline','onMenuShareAppMessage','addCard','openCard']});wx.ready(function () {// 在这⾥调⽤ APIwx.onMenuShareAppMessage({title: '互联⽹之⼦',desc: '在长⼤的过程中,我才慢慢发现,我⾝边的所有事,别⼈跟我说的所有事,那些所谓本来如此,注定如此的事,它们其实没有⾮得如此,事情是可以改变的。

支付接口文档6.0-互联网支付pc端

支付接口文档6.0-互联网支付pc端

互联网支付PC端支付接口文档V6.0.4目录0.修改记录 (3)1.使用说明 (4)2.加密与安全策略 (4)3.资料信息 (4)4.互联网支付PC端支付接口规范 (4)4.1请求地址(POST提交) (4)4.2输入参数 (4)4.3参数节点说明 (5)4.4Sign计算方式(签名) (6)4.5返回规范 (6)4.6开发DEMO(java语言) (9)5.互联网支付PC端支付查询接口规范 (9)5.1请求地址(POST提交) (9)5.2输入参数 (9)5.3参数节点说明 (10)5.4Sign计算方式(签名) (10)5.5返回规范 (10)5.6开发DEMO(java语言) (11)0.修改记录1.使用说明支付请求采用HTTP/HTTPS协议,用户需以POST方式传输给支付中心系统(以下简称支付中心);支付中心使用的编码方式为:UTF-8;传输参数需以Web Form(表单)方式提交;请严格依照参数规范设置参数,切勿遗漏“必填”参数,注意大小写区分;建议商户保留以下信息:签名信息、传输参数。

2.安全策略商户发起交易需指定服务器IP,我方支付平台进行白名单安全组授权;交易进行MD5加密进行签名处理;交易报文已密文形式交互。

3.加解密策略加密过程:一、对原始报文字符串xml进行编码为UTF-8的Base64加密,得到UTF-8编码的字符串str1;二、对原始报文字符串xml进行编码为UTF-8的哈希SHA1算法加密,得到UTF-8编码的字符串str2;三、将步骤(二)得到的字符串str2和步骤(一)得到的字符串str1拼接(即str3 = str2+ str1,注意顺序),对拼接后的字符串str3再次进行编码为UTF-8的Base64加密,得到UTF-8编码的最终加密字符串值。

解密过程:一、对接收到的返回报文字符串returnXml先进行编码为UTF-8的Base64解密,得到字符串returnXml1。

财付通php接口

财付通php接口

/s/blog_5ff91fc50100dtim.ht ml 财付通是腾讯推出的一项类似支付宝的在线交易工具,分为两种:一种是财付通即时到帐交易,另外一种是财付通担保交易,即时到帐交易网上有很多接口,下面我谈谈财付通担保交易,基本程序如下图所示:1:tenpay_config.php 程序代码:<?//此文件为财付通支付配置文件//☆★☆★☆★☆★☆★☆★财付通测试开关0 关闭测试 1 开启测试☆★☆★☆★☆★☆★☆★$beta_switch ="0";//☆★☆★☆★☆★☆★☆★系统配置☆★☆★☆★☆★☆★☆★//以下每一项都必须要配置,并准确$version = "2";//版本号2$cmdno = "12";//任务代码,定值:12$encode_type = "1" ;//编码标准$chnid = "3692020";//平台提供者,***商的财付通账号$mch_type = "1";//交易类型:1、实物交易,2、虚拟交易。

//☆★☆★☆★☆★☆★☆★财付通支付配置项。

☆★☆★☆★☆★☆★☆★//以下每一项都必须要配置,并准确$seller ="573432430" ;//卖家帐号(我这里是乱配的,你需要填写正确的)$sp_key ="520530" ;//密钥(我这里是乱配的,你需要填写正确的)$domain ="" ;//商户网站域名$tenpay_dir ="/tenpay";//财付通安装目录$site_name ="顺心门业";//商户网站名称$attach ="tencent_magichu";//支付附加数据,非中文标准字符$imgtitle ="财付通支付";//图片说明$imgsrc =tenpay_dir&"/image/tenpay_buy.gif";//图片地址$pay_url ="https:///cgi-bin/med/show_opentrans. cgi"; //财付通支付网关地址$need_buyerinfo ="2";$mch_returl = ""; //通知URL$show_url = $domain . $tenpay_dir ."/tenpay_show.php"; //返回URL ?>2:md5_request.php 程序代码:<?php//include("tenpay_util.php");class tenpay_online_payment{//检查并组合支付参数串function AddParameter($buffer,$parameterName,$parameterValu e){if ($parameterValue=="")return $buffer;if (empty($buffer))$buffer = $parameterName . "=". $parameterValue;else$buffer = $buffer . "&" . $parameterName . "=" .$parameterValue;return $buffer;}//产生支付链接function tenpay_interface_pay ($mch_name,$mch_price,$transport_desc,$transport_f ee,$mch_desc,$mch_vno){include_once("tenpay_config.php");if (empty($mch_price)){$retcode = "09001";$retmsg = "缺少mch_price";}if ($transport_desc==""){$retcode = "06002";$retmsg = "缺少transport_desc,将被默认设置不需要物流***"; $transport_desc = "无物流***";}if ($transport_fee==""){if (retcode == "06002"){$transport_fee = "0";}else{$retcode = "09002";$retmsg = "缺少transport_fee,将被默认设置不需要物流***"; }}if (empty($mch_desc)){$retcode = "06003";$retmsg = "缺少交易描述***,将被默认设置为网站地址加交易购物"; $mch_desc = $domain . "交易购物";}if (empty($mch_vno)){$retcode = "09003";$retmsg = "缺少商家订单号";}if (empty($mch_name)){$retcode = "06005";$retmsg = "缺少商品名称,将被默认设置为网站地址加订单号"; $mch_name = $site_name."订单:" . $mch_vno;}if (empty($mch_returl)){$retcode = "06006";$retmsg = "缺少回调url,将被默认设置为/tenpay/notify_handler.php"; $mch_returl = $domain . $tenpay_dir ."/tenpay_notify.php";}if (empty($show_url)){$retcode = "06007";$retmsg = "缺少回显url,将被默认设置为/tenpay/tenpay_show.php"; $show_url = $domain . $tenpay_dir ."/tenpay_show.php";}//判断测试开关,如果开启测试,支付金额为1分if ($beta_switch == "1"){echo "enter beta_switch";$mch_price = "1";$transport_fee = "0";$buffer = $this->AddParameter($buffer, "attach", $attach);$buffer = $this->AddParameter($buffer, "chnid", $chnid);$buffer = $this->AddParameter($buffer, "cmdno", "12");$buffer = $this->AddParameter($buffer, "encode_type", $encode_type); $buffer = $this->AddParameter($buffer, "mch_desc", $mch_desc); $buffer = $this->AddParameter($buffer, "mch_name", $mch_name); $buffer = $this->AddParameter($buffer, "mch_price", $mch_price); $buffer = $this->AddParameter($buffer, "mch_returl", $mch_returl); $buffer = $this->AddParameter($buffer, "mch_type", $mch_type);$buffer = $this->AddParameter($buffer, "need_buyerinfo", $need_buyerinfo); $buffer = $this->AddParameter($buffer, "seller", $seller);$buffer = $this->AddParameter($buffer, "show_url", $how_url);$buffer = $this->AddParameter($buffer, "transport_desc", $transport_desc); $buffer = $this->AddParameter($buffer, "transport_fee", $transport_fee); $buffer = $this->AddParameter($buffer, "version", $version);$md5_sign =strtoupper(md5($buffer."&key=".$sp_key));$redurl = $pay_url . "?".$buffer . "&sign=" . $md5_sign;echo $retcode . "<br></br>".$retmsg."<br></br>";echo $redurl;return $redurl;}else{if ($retcode < "09000"){$buffer = $this->AddParameter($buffer, "attach", $attach);$buffer = $this->AddParameter($buffer, "chnid", $chnid);$buffer = $this->AddParameter($buffer, "cmdno", "12");$buffer = $this->AddParameter($buffer, "encode_type", $encode_type); $buffer = $this->AddParameter($buffer, "mch_desc", $mch_desc);$buffer = $this->AddParameter($buffer, "mch_price", $mch_price);$buffer = $this->AddParameter($buffer, "mch_returl", $mch_returl); $buffer = $this->AddParameter($buffer, "mch_type", $mch_type);$buffer = $this->AddParameter($buffer, "mch_vno", $mch_vno);$buffer = $this->AddParameter($buffer, "need_buyerinfo", $need_buyerinfo); $buffer = $this->AddParameter($buffer, "seller", $seller);$buffer = $this->AddParameter($buffer, "show_url", $show_url);$buffer = $this->AddParameter($buffer, "transport_desc", $transport_desc); $buffer = $this->AddParameter($buffer, "transport_fee", $transport_fee); $buffer = $this->AddParameter($buffer, "version", $version);$md5_sign = strtoupper(md5($buffer."&key=".$sp_key));$redurl = $pay_url . "?".$buffer . "&sign=" . $md5_sign;return $redurl;}}}}?>3:tenpay_show.php 程序代码:<?include_once("tenpay_config.php");require_once("md5_request.php"); $tenpay = new tenpay_online_payment; import_request_variables("gpc", "frm_"); $cmdno = $frm_cmdno;$version = $frm_version;$retcode = $frm_retcode;$status = $frm_status;$seller = $frm_seller;$total_fee = $frm_total_fee;$trade_price = $frm_trade_price; $transport_fee = $frm_transport_fee; $buyer_id = $frm_buyer_id;$chnid = $frm_chnid;$cft_tid = $frm_cft_tid;$smch_vno = $frm_mch_vno;$attach = $frm_attach;$version = $frm_version;$sign = $frm_sign;$iRetOK = 0; // 成功$iInvalidSpid = 1; // 商户号错误$iInvalidSign = 2; // 签名错误$iTenpayErr = 3; // 财付通返往返支付失败$buffer = $tenpay->AddParameter($buffer, "attach", $attach);$buffer = $tenpay->AddParameter($buffer, "buyer_id", $buyer_id);$buffer = $tenpay->AddParameter($buffer, "cft_tid", $cft_tid);$buffer = $tenpay->AddParameter($buffer, "chnid", $chnid);$buffer = $tenpay->AddParameter($buffer, "cmdno", $cmdno);$buffer = $tenpay->AddParameter($buffer, "mch_vno", $mch_vno);$buffer = $tenpay->AddParameter($buffer, "retcode", $retcode);$buffer = $tenpay->AddParameter($buffer, "seller", $seller);$buffer = $tenpay->AddParameter($buffer, "status", $status);$buffer = $tenpay->AddParameter($buffer, "total_fee", $total_fee);$buffer = $tenpay->AddParameter($buffer, "trade_price", $trade_price);$buffer = $tenpay->AddParameter($buffer, "transport_fee", $transport_fee);$buffer = $tenpay->AddParameter($buffer, "version", $version);$strLocalSign = strtoupper(md5($buffer."&key=".$sp_key));if ($strLocalSign == $sign ){//验证MD5签名成功if ($retcode == "0"){//支付成功,在这里处理业务逻辑注意判断订单是否重复的逻辑,注意订单金额为分//echo "<meta name=\"TENCENT_ONLINE_PAYMENT\" content=\"China TENCENT\">"; if($status=="3"){//支付成功,在这里处理业务逻辑注意判断订单是否重复的逻辑,注意订单金额为分echo "支付成功";}else{//支付失败,请根据retcode进行错误逻辑处理}}}else{//签名失败,请进行非法操作的逻辑处理}?>4:tenpay_notify.php 程序代码:<?include_once("tenpay_config.php");require_once("md5_request.php");$tenpay = new tenpay_online_payment;import_request_variables("gpc", "frm_");$cmdno = $frm_cmdno;$retcode = $frm_retcode;$status = $frm_status;$seller = $frm_seller;$total_fee = $frm_total_fee;$trade_price = $frm_trade_price;$transport_fee = $frm_transport_fee;$buyer_id = $frm_buyer_id;$chnid = $frm_chnid;$cft_tid = $frm_cft_tid;$mch_vno = $frm_mch_vno;$attach = $frm_attach;$version = $frm_version;$sign = $frm_sign; $iRetOK = 0; // 成功$iInvalidSpid = 1; // 商户号错误$iInvalidSign = 2; // 签名错误$iTenpayErr = 3; // 财付通返往返支付失败$buffer = $tenpay->AddParameter($buffer, "attach", $attach); $buffer = $tenpay->AddParameter($buffer, "buyer_id", $buyer_id); $buffer = $tenpay->AddParameter($buffer, "cft_tid", $cft_tid); $buffer = $tenpay->AddParameter($buffer, "chnid", $chnid); $buffer = $tenpay->AddParameter($buffer, "cmdno", $cmdno); $buffer = $tenpay->AddParameter($buffer, "mch_vno", $mch_vno);$buffer = $tenpay->AddParameter($buffer, "retcode", $retcode);$buffer = $tenpay->AddParameter($buffer, "seller", $seller);$buffer = $tenpay->AddParameter($buffer, "status", $status);$buffer = $tenpay->AddParameter($buffer, "total_fee", $total_fee);$buffer = $tenpay->AddParameter($buffer, "trade_price", $trade_price);$buffer = $tenpay->AddParameter($buffer, "transport_fee", $transport_fee);$buffer = $tenpay->AddParameter($buffer, "version", $version);$strLocalSign = strtoupper(md5($buffer."&key=".$sp_key));if ($strLocalSign == $sign ){//验证MD5签名成功if ($retcode == "0"){//支付成功,在这里处理业务逻辑注意判断订单是否重复的逻辑,注意订单金额为分echo "<meta name=\"TENCENT_ONLINE_PAYMENT\" content=\"China TENCENT\">"; echo $status;switch(($status)) {case 1://交易创建break;case 2://收获地址填写完毕case 3://买家付款成功,注意判断订单是否重复的逻辑echo "test pay success";break;case 4://卖家发货成功break;case 5://买家收货确认,交易成功break;case 6://交易关闭,未完成超时关闭break;case 7://修改交易***成功break;case 8://买家发起退款break;case 9://退款成功case 10://退款关闭break;default://error}}else{//支付失败,请根据retcode入行错误逻辑处理echo "retcode";}}else{echo "qianming";//签名失败,请进行非法操作的逻辑处理}?>5:index.php 程序代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitiona l.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title></head><?//require_once("md5_request.php");$tenpay = new tenpay_online_payment;$url = $tenpay->tenpay_interface_pay ("0023_09050711031337","1213","","","财付通中介保护交易","021453587");// 0023_09050711031337:是商品的订单号,也可以是名字,1213:是***(财付通***是乘以100计算,比如说你的***是120,那么连接的财付通这里的时候,你需要120*100才正确)print_r("<a href=\"".$url."\" target=\"_blank\"><img src=\"./images/blue_logo.jpg\" alt=\"用财付通支付\" border=\"0\"></a>");?><body></body></html>只要你的财付通账号和密码是正确的,那么上面的程序复制下来就可以直接用,还要注意财付通账号一定要是担保交易的账户,直接交易账户不是这个程序配置正确后点击担保交易跳到财付通页面(下图)。

财付通批量银行代付接口开发手册

财付通批量银行代付接口开发手册

财付通批量银行代付接口开发手册Version: 3.0Public date: 2011-5-22All copyright reserved by 目录第1章文档描述 (5)1.1文档说明 (5)1.2版本 (5)1.3预期读者和阅读建议 (5)第2章业务描述 (5)2.1接口作用 (5)2.2银行代付接口限制 (5)第3章前期准备 (6)3.1.1业务准备 (6)3.1.2技术准备 (6)第4章接口说明 (6)4.1结构说明 (6)4.1.1接入URL (6)4.1.2接口原理 (7)4.2批量银行代付接口 (7)4.2.1功能描述: (7)4.2.2需要开通功能: (7)4.2.3接入URL (7)4.2.4输入参数 (8)4.2.5返回参数 (9)4.2.6接口特别说明 (9)4.3批量银行代付查询接口 (10)4.3.1功能描述: (10)4.3.2需要开通功能: (10)4.3.3输入参数 (10)4.3.4返回参数 (10)4.3.5返回参数说明 (13)4.4退票查询接口 (14)4.4.2需要开通功能: (14)4.4.3请求参数 (14)4.4.4返回参数 (15)第5章附录和枚举 (17)5.1付款到账时间 (17)5.2银行编码 (17)5.3开户地区编码 (19)5.3.1北京 (19)5.3.2上海 (20)5.3.3天津 (20)5.3.4重庆 (20)5.3.5河北 (20)5.3.6山西 (21)5.3.7内蒙古 (21)5.3.8辽宁 (22)5.3.9吉林 (22)5.3.10黑龙江 (22)5.3.11江苏 (23)5.3.12浙江 (23)5.3.13安徽 (24)5.3.14福建 (24)5.3.15江西 (25)5.3.16山东 (25)5.3.17河南 (26)5.3.18湖北 (26)5.3.19湖南 (27)5.3.20广东 (27)5.3.21广西 (28)5.3.23四川 (29)5.3.24贵州 (30)5.3.25云南 (30)5.3.26西藏 (31)5.3.27陕西 (31)5.3.28甘肃 (32)5.3.29宁夏 (32)5.3.30青海 (32)5.3.31新疆 (33)5.4安全性说明 (33)5.5代付查询 (34)5.6代付明细查询 (35)5.7电子回单 (35)5.8对账单下载 (36)5.9财付通对应付款银行说明 (37)5.10财付通付款手机短信通知格式 (37)5.11错误码 (38)第1章文档描述1.1文档说明本操作手册用来指导财付通商户实现与财付通银行代付接口的顺利对接。

微信公众号支付接口文档(结算中心-受理机构)v0.0

微信公众号支付接口文档(结算中心-受理机构)v0.0

微信公众号支付接口文档(结算中心-受理机构)讨论目录修改日志 (4)1.微信支付简介 (5)1.1.功能简介 (5)1.2.支付账户 (5)1.3.支付方式 (6)2.支付场景介绍 (6)2.1.网页内支付场景---JS API(网页内)支付接口 (6)2.1.1.交互细节 (8)2.1.2.JSAPI 支付时序图 (9)2.1.4.显示微信安全支付标题 (9)2.2.线下扫码购买场景---Native(原生)支付接口 (10)2.2.1 使用场景 (10)2.2.2.Native(原生)支付URL 定义 (11)3.接口说明 (13)3.1.接口调用规则 (13)3.2.微信Sign 签名生成方法 (14)3.2.1 受理商签名Sign 生成方法 (14)3.3 结算中心签名生成方法 (15)3.4 调用流程 (16)4.API 说明 (17)4.1.统一支付接口 (17)4.2.通用通知接口 (20)4.3.订单查询接口 (22)4.7 关闭订单接口 (24)4.8.退款申请接口 (26)4.9.退款查询接口 (28)4.10.对账单接口 (30)4.12.接口调用上报接口 (30)5.企业红包使用说明 (32)5.1 创建批次企业红包 (32)5.2 提交支付使用企业红包 (32)5.3 查询使用企业红包金额 (33)5.4 企业红包对账单 (33)6. 返回状态码列表 (33)7.错误码列表 (33)8.常见问题和注意事项 (34)8.1.常见基本概念疑惑 (34)8.2.常见错误现象及解决方法 (34)8.3.常见注意事项 (36)修改日志1.微信支付简介1.1.功能简介微信支付,是基于微信客户端提供的支付服务功能。

同时向商户提供销售经营分析、账户和资金管理的功能支持。

用户通过扫描二维码、微信内打开商品页面购买等多种方式调起微信支付模块完成支付。

微信支持公众号内支付,即基于公众号向用户收款,公众号相当于收款的商户。

接口文档说明示例

接口文档说明示例

支付网关说明文档by:Q294500001目录##联盟支付网关说明文档........................................................................ 错误!未定义书签。

目录 .. (1)第一章文档描述.............................................................................................. 错误!未定义书签。

1、文档说明 (1)2、阅读对象 (1)第二章系统原理 (2)1、术语定义 (2)2、消费流程 (2)3、查询流程 (2)4、系统加密 (2)第三章网银接口定义 (3)1、同步过程接口定义(商户系统发起请求) (3)2、下行异步通知过程接口定义(##联盟接口发起请求) (5)3、下行同步通知过程接口定义(##联盟接口发起请求) (7)第四章查询流程接口定义 (8)第五章订单外部查询独立网址...................................................................... 错误!未定义书签。

附录1:##联盟支付网关银行类型说明. (9)第一章文档描述1、文档说明本说明文档用于指导##联盟商户实现与##联盟网银接口的顺利对接。

请相关技术人员详细阅读本文档。

2、阅读对象商户开发人员。

第二章系统原理1、术语定义商户:指已独立拥有在线销售系统,并成为##联盟网银接口系统会员,且已使用或者将使用##联盟网银接口实现收付费或其他相关功能需求的企业或者个人。

外部接入接口:指##联盟通过统一的方式接受外部请求的接口。

商户系统:指使用##联盟外部接入接口的计算机系统,一般指商户所拥有的在线销售系统。

用户:指在商户系统内进行消费的企业或者个人。

商户ID:指##联盟为使用外部接入接口的商户统一分配的唯一标识。

直通车2.0 接口协议

直通车2.0 接口协议

财付通直通车协议说明书深圳市腾讯计算机系统有限公司文档历史修订日期修订内容修订版本修订人2008-05-08 创建0.1 Tencent 2008-06-26 添加注意事项0.2 Tencent 2008-07-18 添加常见错误信息及相关错误码0.3 Tencent 2010-03-10 去掉已下线产品:交友、网盘0.4 Tencent目录1. 引言 (3)1.1.编写目的 (3)1.2.背景 (3)1.3.定义 (3)1.4.参考资料 (3)2. 协议概述 (4)2.1.协议列表 (4)2.2.协议的交互逻辑 (4)3. 销售协议 (4)3.1.协议说明 (4)3.2.调用说明 (4)3.3.返回结果说明 (6)4. 注意事项及限制 (6)5. 接入常见问题 (6)6. 常用的错误码 (6)1.引言1.1. 编写目的本文档说明了财付通直通车的接口协议等,供使用该接口的经销商和本项目的后续开发维护人员使用。

1.2. 背景由于目前一些合作网站在销售腾讯的会员,红钻,黄钻,Q币等产品,为了提高用户感和实时性,需要实现自动充值、开通服务等功能。

为了满足这些经销商的需求,同时保证交易的安全性,提出了财付通直通车的概念。

1.3. 定义财付通直通车:在财付通系统上扩展出来的,满足有自己销售平台,需要实时实现Q币充值、服务开通的要求的经销商的快速通道。

商业号:腾讯分配给经销商的帐号.1.4. 参考资料2.协议概述2.1. 协议列表协议名称说明销售协议销售Q币和开通服务的协议2.2. 协议的交互逻辑经销商TENCENT销售请求销售结果3.销售协议3.1. 协议说明协议采用HTTP协议,经销商将请求报文post到腾讯的财付通直通车站点的80端口: 80调用url为:/cgi-bin/pay/bank_ztc_entry.cgi?ServiceCode=***&QQuin=***&ZtcQQuin=*** &BuyCount=***&comm1=***&comm2=***&sign=***3.2. 调用说明参数说明:输入参数数据类型说明是否必填ServiceCode varchar(20) 产品类型,如Q币Y QQuin varchar(10) 用户帐号(用户QQ号) YZtcQQuin varchar(10) 财付通帐号YBuyCount Int 充值数量Ycomm1varchar(255) 暂时保留,缺省为1 Ncomm2varchar(255) 暂时保留,缺省为1 Nsign char (32) 数字签名,字母是小写Y调用说明:1.所有字段中不能包含“&”和“=”.2.ServiceCode:表示产品类型QQACCT_SAVE Q币-QQPOINT Q点--去掉LTMCLUB 会员XXJZGW 黄钻XXQGAME 蓝钻XXQQF 红钻PETVIP 粉钻XXQQT QQ堂紫钻XXZXYY 绿钻QQR2BY QQ音速DNFHZ 黑钻QQFCZZ QQ飞车紫钻-------------------------------------------------------------------上面数量1-24个月-XXYXLB QQ游戏欢乐大礼包------------- 1 - 24 个-DNFDQ DNF点券QQKDC QQ飞车点券(comm1表示玩家建立角色的大区,目前1为电信区,2为网通区,3为电信二区)------------------上面2个数量为100-10000个点券3.QQuin:用户帐号,及收货号码,目前都是表示QQ号码4.ZtcQQuin:财付通帐号,及支付号码,目前都是表示QQ号码5.BuyCount:充值数量,它的意义和取值范围与ServiceCode产品类型有关若产品=Q币,则BuyCount表示个数,取值范围[1, 1000]若产品=Q点,则BuyCount表示点数,必须是10的整数倍,取值范围是[10, 10000]若产品=包月服务,则BuyCount表示月数,取值范围[1, 24]6.sign为按顺序对交易信息的MD5加密签名的32位字符串:sign=md5(ServiceCode=***&QQuin=***&ZtcQQuin=***&BuyCount=***&comm1=***&comm2=***||enc _key) ,其中enc_key为注册财付通直通车时生成的key签名举例:20030325的一笔交易,99999需要给用户123456充值1Q币,需要从socket读取返回结果,双方约定key 为!@#$%^&123ABCfg,则签名算法为:sign = Md5(“ServiceCode=QQACCT_SAVE&QQuin=123456&ZtcQQuin=99999&BuyCount=1 &comm1=1&comm2=1||!@#$%^&123ABCfg” )最终的请求串为(假设最终的Md5加密结果是1e1cf8d9d57d48b96ad10bc2beead6ac)/cgi-bin/pay/bank_ztc_entry.cgi?ServiceCode=QQACCT_SAVE&QQuin=123456& ZtcQQuin=99999&BuyCount=1&comm1=1&comm2=1&sign=1e1cf8d9d57d48b96ad10bc2beead6ac3.3. 返回结果说明返回结果是xml字符串<?xml version="1.0" encoding="gb2312" ?><root><status>状态</status><msg>结果说明</msg><serialno>订单号</serialno></root>参数说明:1.status :=0,表示成功,=其它,表示失败2.msg :结果说明,可以查看成功消息或者失败提示3.serialno :订单号,是直通车产生的唯一序列号,可以根据此订单号到/ztcv2 查询4.注意事项及限制1.系统对同一IP的充值请求频次限制在20笔交易请求每20秒。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

财付通API接口文档样例代码
引言
文档概述
本文描述了财付通开放平台的JAVA SDK,帮助开发者轻松实现在线支付、收付款等功能。

文档详细介绍了财付通开放平台的工作方式和开发过程,可以帮助开发人员快速入门并掌握开发技能,同时也可以作为日后接口参数以及参数类型的速查手册。

阅读对象
具有WEB程序开发背景,了解JAVA语言。

业务术语
接口业务流程
支付流程
支付流程中,用户在财付通APP中购买业务,通过财付通支付平台进行支付。

典型业务流程如下:
买家在财付通APP上浏览下单购买一个商品,财付通APP会生成一个支付链接,此链接通过用户的浏览器跳转到财付通开放平台,财付通通过此链接获取支付请求的参数,引导用户完成支付过程。

用户在财付通完成支付后,财付通通过return_url将用户浏览重新定向到财付通APP,财付通APP 向用户提示订单状态和后续操作。

同时,财付通会通过后台回调财付通APP的notify_url,财付通APP在收到支付结果通知后可以根据通知ID查询通知内容,在确保支付成功后再进行业务逻辑处理(例如发货),这样可以进一步提高安全性,防止伪支付成功结果的诈骗。

通知查询/订单查询流程
通知查询/订单查询是指财付通APP向财付通系统发送查询请求,并同步等待财付通系统处理完毕后返回的响应数据。

数据交互是财付通APP与财付通服务器直接通信。

例如用户在财付通APP查询时,财付通APP要确认用户某个订单是否支付成功,可以向财付通发送一个查询请求,财付通收到请求后返回查询结果,财付通APP处理结果后再显示给用户。

后台通知流程
后台通知是指财付通系统主动向财付通APP发送通知数据,并同步等待财付通APP处理完毕后返回的响应数据。

数据交互是财付通服务器与财付通APP直接通信,一般请求采用http的get或post,应答用字符串格式。

用户在财付通支付成功后,财付通会在后台通过notify_url向财付通APP发起通知,财付通APP 处理后成功返回success,失败返回fail或其他字符。

补单机制
对后台通知流程,如果财付通收到财付通APP的应答不是success或由于网络异常超时,财付通认为通知失败,财付通会通过一定的策略(如1分钟、2分钟、4分钟、8分钟、16分钟、32分钟,共6次)定期重新发起通知,尽可能提高通知的成功率,但财付通不保证通知最终能成功。

由于上述原因,可能存在同样的通知多次发送给财付通APP的情况。

财付通APP必须能够正确处理,在收到重复的后台通知不重复引发业务流程(例如发货)。

财付通推荐的做法是,当收到财付通发送的通知消息时,需要检查本系统内订单的状态,判断该通知是否已经处理过。

为防止并发产生的问题,在对业务数据进行状态检查和处理之前,要求采用加锁判断进行并发控制。

功能划分
财付通APP负责与之业务相关的代码和页面。

财付通开放平台提供支付相关的业务功能和页面。

具体业务功能请参照后面章节SDK说明
支付页面如下:
在小钱包中:
在普通浏览器中:
SDK说明
概述
API说明
共享登录用户信息接口:
1用户跳转到应用时,初始化ShareLoginState对象,ShareLoginState.getUserId()即可获得当前用户的id
支付接口,常见开发步骤如下:
2初始化请求对象PayRequest
3设置请求系统级参数(应用ID等),例如PayRequest.setAppid(应用ID)
4设置请求业务级参数,例如PayRequest.setParameters(参数名称, 参数值)
5生成跳转URL,例如PayRequest.getURL()
6将用户重定向到跳转URL,例如Servlet/JSP中的重定向方法response.sendRedirect()或用Javascript进行页面跳转
通知查询或订单查询,常见开发步骤如下:
7初始化请求对象,例如NotifyQueryRequest或OrderQueryRequest
8设置请求系统级参数(应用ID等),例如NotifyQueryRequest.setAppid(应用ID)
9设置请求业务级参数,例如NotifyQueryRequest.setParameters(参数名称, 参数值)
10通过NotifyQueryRequest.send()方法将请求发送到接口并获得响应对象,例如NotifyQueryResponse response = NotifyQueryRequest.send()
11判断订单支付状态,例如NotifyQueryResponse.isPaySuccessful()
12从响应对象中获取参数值,进行相应处理,例如NotifyQueryResponse.getParameter(参数名) 后台通知交互模式,常见开发步骤如下:
13构造一个Servlet或JSP接收开放平台的回调
14初始化响应对象PayResponse
15判断订单支付状态,例如PayResponse.isPaySuccessful()
16从响应对象中获取参数值,进行相应处理,例如PayResponse.getParameter(参数名)
调用过程
支付类
支付跳转
·业务功能
买家在财付通APP中下订单后付款,财付通APP调用财付通开放平台支付接口生成支付URL,页面跳转到财付通支付中心或银行。

用户完成支付后,财付通把用户引导回财付通APP指定的页面(return_url),并通过回调支付请求中的notify_url反馈支付结果。

·接口调用方向
开发者开发应用调用财付通开放接口
·请求
参数名称详见下表
·返回结果
参数名称详见下表
·样例
订单查询
·业务功能
根据商户订单号或者财付通订单号查询财付通侧记录的具体订单信息。

·接口调用方向
开发者开发应用调用财付通开放接口。

·请求
参数名称详见下表
·返回结果
订单查询返回结果与通知查询返回结果相同,参见“通知验证返回结果”
·样例
其他类
共享登录
·业务功能
买家转到APP中时,系统将买家的ID传入APP,方便用户订单生成、用户状态更新等相关操作。

·交互模式
买家点击跳转到APP时,id等相关信息将签名后通过url一起发往APP。

·样例
银行编码。

相关文档
最新文档