微信支付的一点操作经验

微信支付前期准备:
大约提前一个月申请为好,现在取消2万元保证金, 暂不接受个人申请微信支付功能。需要申请的key值包括:appid, appSecret, paySignKey, partnerId, partnerKey
 
项目经验:一。为了安全起见,demo里很多取值的方法由后台直接提供
(官方的代码里面 是建议genPackage 这个方法在服务端生成。这里只是一个签名在服务端生成。 那么依据之前做 支付宝的逻辑,签名和一堆body什么字段都在服务端生成吧!所以我跟做 服务器的说,这个方法genProductArgs()。也在服务端生成吧。这样我什么都不管。
PS: genProductArgs的时候,发现很多key,id都返回回来了仔细想想发现微信在保护的不过是PARTNER_KEY。)

那客户端做的是:1.把订单信息上传给后台,后台生成预付订单,判断成功返回所有的key值。
2. 注册APPID,调起支付sendPayReq方法。

3.在WXPayEntryActivity类中实现onResp函数,得到值errCode判断支付状态(开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准

 

 

二。微信支付常见错误

1.errCoder微信支付结果为-1,解决方案a.由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。

b.很多key值是否正确

 

2.WXPayEntryActivity类无法回调  解决方案a.微信开放平台有个 不成文的规定(文档里没有说明),就是回调的Activity必须是:你的包名(微信demo里是:net.sourceforge.simcpux)+.wxapi.WXPayEntryActivity.java

b.根据上面这个帖子我发现还是不能成功,添加如下代码到Mainfast里面就行了。       

<activity                android:name=".wxapi.WXPayEntryActivity" 

 

 

 

三.微信支付的步骤:查看微信支付官方文档

1. 后台设置:

商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。


2.注册APPID:

商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:

API调用前,需要先向微信注册您的APP,代码如下:

final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);

// 将该app注册到微信

msgApi.registerApp("wxd930ea5d5a258f4f");


3.调起支付

商户服务器生成支付订单,先调用统一下单API(详见第7节)生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付。


4.支付结果回调

参照微信SDK Sample,在net.sourceforge.simcpux.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),在WXPayEntryActivity类中实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准


回调中errCode值列表:

errCode=0 成功 
errCode=-1 错误
errCode=-2 取消

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值