由于周期扣款分为“先签约,后代扣”场景与“支付后签约”场景,因此无线端唤起周期扣款的签约页面方式有2种。 一、先签约,后代扣
文档详见【无线端唤起签约说明】 1、判断有无钱包
(1)先判断客户端是否安装有钱包,有则打开钱包,进入签约页面。方法如下:
android平台判断package name是否存在: com.eg.android.AlipayGphone。
iOS平台:判断scheme: alipays://是否能打开;
注意:iOS 9 以上版本需要将alipays配置在项目的 LSApplicationQueriesSchemes中,千万不要配置在 URL Schemes 中。
1.png
2、数据encode转义
签约接口(alipay.user.agreement.page.sign)的参数整体做一次encode(UTF-8来encode)。
以接口返回数据为例
(1)先生成支付宝个人协议页面签约接口(alipay.user.agreement.page.sign)的url,如果开发者使用开放平台官方 SDK则无需对参数进行 encode处理,否则需要对每个参数对应的 value 做一次encode(UTF-8);
周期扣款先签约后代扣场景,调用sdk生成请求参数链接,详见【pageExecute()方法如何get请求】。
(2)将 https://openapi.alipay.com/gateway.do? 后面的所有参数作为入参,做一次整体的 encode(UTF-8),如下段代码中所示:
alipay_sdk%3Dalipay-sdk-java-3.7.89.ALL%26app_id%3D2014**********22%26biz_content%3D%257B%2522personal_product_code%2522%253A%2522CYCLE_PAY_AUTH_P%2522%252C%2522access_params%2522%253A%257B%2522channel%2522%253A%2522ALIPAYAPP%2522%257D%252C%2522period_rule_params%2522%253A%257B%2522period_type%2522%253A%2522DAY%2522%252C%2522period%2522%253A7%252C%2522execute_time%2522%253A%25222020-01-01%2522%252C%2522single_amount%2522%253A10.99%257D%257D%26charset%3Dutf-8%26format%3Djson%26method%3Dalipay.user.agreement.page.sign%26notify_url%3Dhttp%253A%252F%252F114.55.81.185%252Fopendevtools%252Fnotify%252Fdo%252F4056414d-195d-4278-812c-45bd41eeed99%26return_url%3Dhttps%253A%252F%252Fwww.baidu.com%252F%26sign%3DiNJuXWlsCGkqukz9bxfAQqU3RF9gH%252BThHFHibFIcSDEEesqZq5hkDBq9vc3PORTUqhQ2WwZRhsI4nCV%252FYo6bLY%252Fw8RhckWrcpqHmO%252FZ3iT2z8CjWh2sQcTKPpROyb649NQ%252F8TqTgf5KQdFYGnpnwrzvsvIHu71YWhZBZV4RhLBajDS8Ez0qMxvDHrZIihhLn9trVbYr0cMFTMwm4mCD60jJv5Awo5l8LsALipQi744%252FhJ9sgESh0DrZ5It%252FECtHuhbSUYObPvrH%252Bl0rLoyeoDabkmcIjzXm5D%252Bx%252BtzGR2Q5x5izlG7rHEhrUt6coSEc7QFO9DkieYDlzWEapagzfuA%253D%253D%26sign_type%3DRSA2%26timestamp%3D2020-01-03%2B10%253A19%253A11%26version%3D1.0
3、拼接alipays短链接
步骤2的内容拼到链接(该链接里面的appid为固定值,不可修改):
alipays://platformapi/startapp?appId=60000157&appClearTop=false&startMultApp=YES&sign_params=之后。
拼接示例如下:
alipays://platformapi/startapp?appId=60000157&appClearTop=false&startMultApp=YES&sign_params=alipay_sdk%3Dalipay-sdk-java-3.7.89.ALL%26app_id%3D2014**********22%26biz_content%3D%257B%2522personal_product_code%2522%253A%2522CYCLE_PAY_AUTH_P%2522%252C%2522access_params%2522%253A%257B%2522channel%2522%253A%2522ALIPAYAPP%2522%257D%252C%2522period_rule_params%2522%253A%257B%2522period_type%2522%253A%2522DAY%2522%252C%2522period%2522%253A7%252C%2522execute_time%2522%253A%25222020-01-01%2522%252C%2522single_amount%2522%253A10.99%257D%257D%26charset%3Dutf-8%26format%3Djson%26method%3Dalipay.user.agreement.page.sign%26notify_url%3Dhttp%253A%252F%252F114.55.81.185%252Fopendevtools%252Fnotify%252Fdo%252F4056414d-195d-4278-812c-45bd41eeed99%26return_url%3Dhttps%253A%252F%252Fwww.baidu.com%252F%26sign%3DiNJuXWlsCGkqukz9bxfAQqU3RF9gH%252BThHFHibFIcSDEEesqZq5hkDBq9vc3PORTUqhQ2WwZRhsI4nCV%252FYo6bLY%252Fw8RhckWrcpqHmO%252FZ3iT2z8CjWh2sQcTKPpROyb649NQ%252F8TqTgf5KQdFYGnpnwrzvsvIHu71YWhZBZV4RhLBajDS8Ez0qMxvDHrZIihhLn9trVbYr0cMFTMwm4mCD60jJv5Awo5l8LsALipQi744%252FhJ9sgESh0DrZ5It%252FECtHuhbSUYObPvrH%252Bl0rLoyeoDabkmcIjzXm5D%252Bx%252BtzGR2Q5x5izlG7rHEhrUt6coSEc7QFO9DkieYDlzWEapagzfuA%253D%253D%26sign_type%3DRSA2%26timestamp%3D2020-01-03%2B10%253A19%253A11%26version%3D1.0
4、在商户app客户端打开链接。
步骤3返回示例就是最终链接,通过scheme唤起。
测试时,可将该链接放在浏览器测试,唤起支付宝钱包打开签约页面。
二、支付后签约
支付后签约使用sdkExecute方法,直接返回请求字符串。
在客户单唤起签约页面方式和app支付客户端代码一致,详见【app客户端demo】。
客户端代码说明详见【客户端 Android 集成流程】和【客户端 iOS 集成流程】。
注意事项
先签约后代扣在无线端唤起签约时报错,建议按照以下方式检查:
先检查接口返回的请求参数链接是否正常,是否可以唤起签约页面。
如果可以正常唤起签约页面,说明是转义过程中存在问题,仔细检查步骤流程。
如果不可以唤起签约页面,说明在接口生成请求参数时就已经设置失败,根据页面报错检查即可。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。