android自动签约续费功能,微信代扣 Android 开发流程
最近几天采坑了微信代扣,开发流程很简单,但是官方文档实在缺少一个具体的指引,导致走了很多弯路,因此本文分享一下自己的经验。
微信代扣开发者文档: https://pay.weixin.qq.com/wiki/doc/api/pap.php?chapter=18_1
微信代付文档截图
上图是文档的网页截图,其中红框里的 SDK 需要配置一下,APP跳转签约页面方法指引 是外部唤起微信的方法,(话说这个入口我找了好久才发现,一把辛酸泪……)
文档很长,对于各个端做什么也没有明确描述,所以我站在 Android 端的角度,讲一下开发流程。总共分以下三步:
1、调用服务端接口进行签约
服务端接口的返回类型是自定义的 Contract 类,其中 contractId 和 contractUrl 是 Android 端能用到的。(接口格式以你们服务端给的为准,此处仅供参考)
//签约
@POST("/xxx/contracts")
Observable> getContract();
public class Contract {
@JsonProperty("contract_id")
public String contractId; // 微信给的签约合同号
@JsonProperty("contract_url")
public String contractUrl;// 可以调起微信的url
@JsonProperty("product_id")
public String productId; // IOS 会用到的 id,Android 端可以直接忽略
}
2、利用服务端返回的 contractUrl 调起微信签约付款页
private void toWeChatScan(String url) {
try {
WeChatPayUtil.pay(getActivity(), url);
} catch (Exception e) {
//若无法正常跳转,在此进行错误处理
Toast.makeText(getContext(), "跳转到微信失败",Toast.LENGTH_SHORT).show();
}
}
public class WeChatPayUtil {
private static IWXAPI sWXAPI;
/**
* 微信代扣
* @param pActivity
* @param url
* @return
* @throws Exception
*/
public static boolean pay(Activity pActivity, String url) throws Exception {
if (sWXAPI == null) {
sWXAPI = WXAPIFactory.createWXAPI(pActivity, WeChatHelper.WECHAT_APP_ID);
}
if (微信未安装) {
ToastUtils.showLongToast(pActivity, R.string.toast_text_weixin_not_installed);
return false;
}
toWechatContractPay(url);
return true;
}
private static void toWechatContractPay(String url) {
OpenWebview.Req req = new OpenWebview.Req();
req.url = url;
sWXAPI.sendReq(req);
}
}
3、调用服务端接口轮询检查支付状态
微信代付的话,在微信中支付完成后,并不会同步返回结果给我们的 app,只会把支付结果通知我们的服务器,所以需要在我们的 app 中对服务器进行轮询来检查支付结果。
检查也不需要很多次,我们项目里是轮询 5 次,1 秒一次,已经足够了。
(接口格式以你们服务端给的为准,此处仅供参考)
/**
* 查看自动续费签约状态
*
* @param packageId
* @param contractId
* @return
*/
@GET("/xxx/contracts/{contract_id}")
Observable> getOrderStatus(@Path("contract_id") String contractId);
其中的 contract_id 是在步骤1中返回的,这里需要用这个合同号来检查状态。
public class OrderStatus {
@JsonProperty("status")
public String status;//granted, ungranted, pending, unsubscribed
@JsonProperty("singed_at")
public long singedAt;//签约成功的时间(这个只有在 granted 状态时才有效)
@JsonProperty("contract_type")
public String contractType;//wechat, iap
@JsonProperty("withhold")
public OrderStatusWithhold withhold;
}
public class OrderStatusWithhold {
@JsonProperty("status")
public String status;//
@JsonProperty("error_message")
public String errorMessage;
}
需要注意上面两个 status 代表不同的意义, orderStatus.status 是签约状态,而orderStatusWithhold.status 是扣款状态,有可能签约成功,但是扣款时因为余额不足等原因而失败。
android自动签约续费功能,微信代扣 Android 开发流程相关推荐
- php实现自动续费功能,如何关闭wps自动续费
微信中,打开"支付管理"界面,点击"自动扣费":然后找到"wps自动续费"项,点击进入:最后点击"关闭服务"即可.支付宝 ...
- 苹果手机如何关闭自动续费_微信支付宝一键关闭自动续费
据中国消费者报报道,现在许多视频.音乐等App都有会员充值服务,其中不少是"自动续费",有时候时间长了就忘了,也有的"隐藏得太深"被动"就缴了费... ...
- WPS会员如何取消自动续费?微信/支付宝/WPS共3种方法
WPS 开启会员模式之后还是非常好用的,老古这些年就一直使用 WPS 会员来办公,不过有些用户不想花钱购买会员了就想取消 WPS 会员的自动续费功能,那么应该如何取消呢?今天老古就简单说一下微信. ...
- 腾讯视频关闭自动续费功能
腾讯视频更新版本之后,找个老半天才发现如何关闭自动续费.记录在这里备用. 1,打开手机腾讯视频APP. 2,点击右下角的个人中心. 3,点击左上角的"我的VIP会员". 4,拉到最 ...
- java对接PayPal支付-自动续费功能
一. java对接PayPal支付(v2). 讲了PayPal v2:checkout-sdk 的对接过程 二. java对接PayPal支付 (添加物流跟踪信息). 讲了PayPal添加物流信息 的 ...
- 【小程序】微信小程序开发流程
文章目录 一.概述 二.整体开发架构 三.注册账号和安装开发工具 1)注册账号 1.注册方法 2.选择注册的帐号类型 3.填写邮箱和密码 4.激活邮箱 5.填写主体信息 6.登录后台补充信息 2)安装 ...
- 微信小程序开发流程的两种方法科普
现在微信小程序早已渗透我们日常生活的方方面面,很多商家看到了小程序带来的巨大流量,也想开发一个自己的小程序.所以今天就跟大家科普下微信小程序开发流程,你会发现这个开发过程其实非常简单. 1. 在微信公 ...
- 小程序发布上线流程_微信小程序开发流程的两种方法科普
现在微信小程序早已渗透到我们日常生活的方方面面,很多商家看到了小程序带来的巨大流量,也想开发一个自己的小程序.所以今天就跟大家科普下微信小程序开发流程,你会发现这个开发过程其实非常简单. 1. 在微信 ...
- ui测试怎么做?依据文档有哪些_微信小程序开发流程有哪些?各个环节注意事项...
微信小程序开发流程有哪些?各个环节注意事项是什么?微信小程序开发有哪些注意事项,开发流程是怎样的?下面就一起来看看吧. 1.微信小程序开发之注册小程序 在开发小程序之前,首先就是要注册一个小程序.不过 ...
- 微信第三方平台开发流程和总结
微信第三方平台开发流程和总结 创建第三方平台 1).在微信开放平台-管理中心-第三方平台中创建第三方平台账号.创建第三方平台 2).选择"平台型服务商类型"创建第三方平台.填写第三 ...
最新文章
- 高效程序员的 7 个共同特征
- 硬盘分区表知识——详解硬盘MBR(转)
- 【系统平台】大四区部署
- 1.6 课程资源-深度学习-Stanford吴恩达教授
- 【DP】【高精】逆序对(jzoj 2014)
- 聚类分析(三)Mini Batch KMeans算法
- 深入浅出 eBPF: (Linux/Kernel/XDP/BCC/BPFTrace/Cillium)
- win32开发(消息机制)
- STL::算法::常见算法
- 攻防世界 mobile 安卓移动端简单题练习区 答题(1-12题解)
- Testng 的数据源 驱动測试 代码与配置
- python os模块
- 2022年最新的Detectron 2 (0.6) 安装流程(联想笔记本Y9000K+Anaconda+Win 11 +RTX3070)
- BFA“瑞云科技”大视频讲堂第五期“从好莱坞电影融资模式到中国电影的国际化”...
- java期末李鹤_Willike
- 新手学开车,起步,停车,倒库移库,练习图解,开车基本技巧
- 【原创】智能云计算机(云脑)软件开发招商
- vue中获取短信验证码IOS手机问题
- 关于scanf与scanf_s
- 使用计算机需要准备硬件和什么,当个人计算机需要使用ADSL访问Internet时,所需的基本硬件设施是什么?...