关于Ping++支付遇到一些问题

        最近做了一个关于网页支付的项目,用的ping++集成支付。主要用到了三种支付方式微信公众号支付、微信h5支付、支付宝网页支付。(微信外浏览器用微信h5支付,微信内浏览器用微信公众号支付)        接下来进入正题,ping++前端h5开发接入指南,前端童鞋可以先看一下这个文档,当然这个需要后端配合的,这里我们前端只需要下载好前端SDK就可以了,在接入时候只需要调用ping++的一个函数pingpp.createPayment()就可以调起支付,但是!!每次都觉得这次支付搞通了都会遇到新的坑!!必须要吐槽一下,大家在看文档的时候一定要仔细仔细再仔细,尤其是支付文档,我这边用的ping++集成支付,省去了看微信jssdk和支付宝支付文档,但是遇到的坑也是无数。下面我们开始踩坑。

        (在 Ping++ 对象 正确的前提下,调用 js 方法后会直接跳入第三方的支付界面,然后用户完成支付动作。用户支付成功后,会跳转到服务端创建 Ping++ 对象时定义的 result_url 或者 success_url。如果用户取消支付,则会跳转到 result_url 或者 cancel_url(具体情况根据渠道不同会有所变化))这段话是ping++文档上面的原话,当时看着很懵,后来搞明白原来是  支付对象调取成功之后,只有微信公众号才有回调函数,其他支付是没有回调函数的,也就是说其他支付支付完成,前端是不知道这个支付是成功了还是失败了的,但是每种支付方式有的有他的成功地址(success_url)和失败地址(cancel_url)还有返回地址(result_url)!!这里注意了,这个成功地址和失败地址我们知道,就是支付完成或者失败跳转的地址,但是有个坑就是“返回地址”,他的extra里面只有一个返回地址,这里ping++文档没有说的很清楚,“返回地址”是指,无论你成功支付还是失败支付,他都会跳转到这个地址!!!这个地址其实就是一个判断地址,我们需要在这个页面去请求我们服务器去让服务器返回这个支付结果。当时我做的的时候,微信h5(wx_wap)就是只有返回地址,而支付宝网页支付(alipay_wap)用的就是success_url和cancel_url。

        之后看完这个文档如果你第一次接触还要看一下Ping++的charge对象,这个对象就是你从后端你们自己的服务器上去获取到这个charge对象,然后去调用上面的那个Ping++函数,才会成功调起支付。上面所说的回调地址都会在charge对象里面的extra参数里面配置,每种支付方式对应的extra参数不一样,一定要认真看!

        然后我说一下我这边的支付的大致流程,我这通过用户点击支付类型,往后台请求charge对象,参数传的是price、title等等一些,这个你们需要和后台商量一下具体传什么,根据自身项目去定义,额外的微信公众号支付的话需要传open_id !!!!这里一定要注意,如果不传,微信内浏览器支付会掉不起来。具体稍后说。

        先说支付宝网页支付(alipay_wap)也是最简单的支付,当前端我们获取到charge对象的时候,又遇到一个坑,总是返回到 “fail”里面,当时觉得有点奇怪我也没有用到微信公众号支付,怎么会走回调函数,原来!!!ping++对象不正确也会返回fail

        后来我们这边查了一下,确实是charge对象不正确,但是后端返回的charge对象却没有报错,后来找到原因是后台传过来的是下划线的键值,因为我这前端项目做了配置,把键值改成了驼峰式的了,解决之后就能在测试环境成功调起支付了,这里不是在微信内浏览器支付,微信内浏览器自动屏蔽了支付宝支付,但还是有方法支付的,但是我们这也没有做在微信内浏览器用支付宝支付。在正式环境上跑了之后又出现了问题,后台显示该产品的ISV权限不足?这啥问题,一查原来产品那边对支付宝网页支付权限根本没开通!到这里支付宝算是搞完了。

        接下来说说微信h5支付,和支付宝支付(alipay_wap)差不多,基本上测试环境是没有问题,但是他的回调地址只有一个result_url,前边已经说了,我们需要在这个页面加个对用户的判断,询问用户是否支付成功,然后向后台请求支付结果,(这点支付宝支付不知道要好多少倍),如果用户支付成功才会跳转成功页面,做这个支付遇到了两个坑,一个是我在我手机上谷歌浏览器支付完怎么也不跳转到result_url就是不跳!!后来又问ping++客服,也是描述了一大堆去定位这个问题,结果其实是我手机的谷歌浏览器的自身原因, 我用了其他浏览器都可以正常跳转,唯独谷歌浏览器阻止了页面自动跳转。另一个坑就是,提示我该网络环境未能通过安全验证,官网说这个问题是IP获取的不对,后台问题,我们那后台给我看他的代码说我能获取到ip,我又帮他看说是不是可能做了代理,你获取到的不是真实的ip地址,他说也做了代理ip的处理,获取的就是我手机的ip。后来原因是后台只做了一级代理,我那手机做了二级代理。

        接下来说说微信内的微信公众号支付(wx_pub)

        首先公众号支付,你得需要去微信公众平台申请一个微信公众号,并且要开通支付权限,这个不用多说,我们产品经理申请完成公众号支付,没有在微信公众号内申请支付权限,直接通过微信开发平台的移动应用的支付权限,通过m-a授权给了该公众号,这里我提一下,微信公众平台、微信开放平台、微信商户平台、大家一定要搞明白!!!微信公众平台肯定要绑定微信公众号的这个都懂,微信开放平台里面是可以集成各种appID的,公司之前做的app内的微信支付就是在微信开放平台下有一个移动应用的appID,前端拿到appId才可以开发微信支付。但是公众号支付一定要是公众号,那个产品说这个AppID也有,类似一个公众号,可不可以不用重新申请,不可以!公众号支付必须用公众号,而且必须是一个服务号。我来支付微信开发平台有支付权限,他们就没把微信公众号的支付权限开通,直接授权给了微信公众平台。

        先说一下拿到微信公众号的AppID然后干什么吧,微信公众号支付需要授权才能支付,这里有两个链接,一定要看对了,这个是错的这个是对的

        首先用AppID获取code,看文档是通过访问微信的一个链接,然后微信在返回给你一个带code的链接,这里又有一个坑,你写的返回地址redirect_url必须是没有参数的,但是我的链接就是有参数,这个时候怎么办!!!微信里面有一个state参数,你把这个state参数带上去,微信会原样返回给你,但是这个state参数只能接受128个字节,我当时需要拼的参数挺多,刚好够128个字节,但是还是显示state参数过长。。。。后来用base64转码再转成json字符串大功告成!

        然后获取到code码,在用code获取openID,这个我这是直接把code传给后台,他给我返回的openID,openID是指每个微信号对应的该公众号的唯一识别,当你获取到openID后记得要保存到本地,就不需要再次登录获取了,这里还有一个access_token因为我这项目里面没有遇到,好像这里也有跟多的坑。当我拿到openID后传给后台获取charge对象,只有wx_pub支付才会用openid,其他两种支付都穿空字符串“”,调起支付的时候又双叒叕出现问题了,就提示该支付权限未开通,就是上面提到的,你需要把公众平台的支付权限开通之后再使用M-A授权!等产品配好之后,又又又又出现问题了,这个问题是url支付授权目录配置的有误,当时产品那边配置了,我看也是配置好了,但是就报这个错误,后来一查是这个原因:比如:你的域名是http://www.baidu.com/abc/index.html当时我们配置的是http://www.baidu.com/提示报错,你应该写http://www.baidu.com/abc/

        到此完成了ping++的集成支付,踩坑完毕。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,059评论 25 707
  • 微信支付逻辑? 1、顾客选择商品 2、顾客选到心怡的商品找店员结算 3、店员拿着顾客交给他的商品生成预付单(后台服...
    Carden阅读 577评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,651评论 18 139
  • 晚上8点半,她加完班,如常地走进公司附近的一家咖啡馆。 她不经意地环顾四周,不禁盯住了迎面而来的一个身影。修长的身...
    弗洛二德阅读 410评论 0 3
  • 不管是传统的工业社会还是当下这个万物互联的社会,无论中心化还是去中心化,我们难免需要别人帮忙,也会接收别人的请求。...
    南天北云阅读 306评论 3 2