android 微信支付获取sign的注意事项
2016-02-02 19:54
597 查看
微信支付虽然有官方文档说明,也有demo,但开发时总觉得不会一次就编译通过的,总是会遇到这样或那样的小的细节问题。以下是我在开发中曾经踩过的坑。
否则会出现小的问题,尽量和官方文档保持一致。
代码解释:
第一 参数名必须按 ASCII码从小到大排序,必须是 appid,noncestr,package,partnerid,prepayid,timestamp这样的顺序,如果按 appid,package,noncestr。。。。这样的顺序肯定会出现问题的。记住啦,参数名一定要按ASCII码顺序也就是按abcdefg….顺序
第二 在stringA后面拼接key时,key不是应用的appKey,记住啦,去微信商户平台—>账户设置—–>API安全—->密钥设置除去找key.
第三,用微信demo里面自带的MD5加密算法,将刚才获取到的字符串拼接进行加密。ok,到此sign的获取结束。
最后,还要在AndroidManifest文件里面写上下面这个
记住上面说的这些,微信支付就可以几分钟搞定了吧。。。。
填写资料信息获取appid 注意事项
在微信支付开放平台上填写应用信息,获取appid时,注意获取到应用签名时,签名尽量要小写,并且不要加:,如图否则会出现小的问题,尽量和官方文档保持一致。
调起支付注意事项
[code]PayReq request = new PayReq(); request.appId = Constants.WEIXIN_AppId;//应用的appid request.partnerId = String.valueOf(map.get("mch_id"));//微信支付分配的商户号 request.prepayId = String.valueOf(map.get("prepay_id"));//微信返回的支付交易会话ID request.packageValue = "Sign=WXPay";//暂填写固定值Sign=WXPay request.nonceStr = String.valueOf(map.get("nonce_str"));//随机字符串 long timeMills = System.currentTimeMillis() / 1000; request.timeStamp = String.valueOf(timeMills);//时间戳 以秒为单位,十位
sign的获取 注意事项
[code]获取 request.sign 时注意事项较多,android必须通过签名算法去生成这个sign
[code] private String signNum(String partnerId,String prepayId,String packageValue,String nonceStr,String timeStamp,String key){ String stringA= "appid="+Constants.WEIXIN_AppId +"&noncestr="+nonceStr +"&package="+packageValue +"&partnerid="+partnerId +"&prepayid="+prepayId +"×tamp="+timeStamp; String stringSignTemp = stringA+"&key="+key; String sign = MD5.getMessageDigest(stringSignTemp.getBytes()).toUpperCase(); return sign; }
代码解释:
第一 参数名必须按 ASCII码从小到大排序,必须是 appid,noncestr,package,partnerid,prepayid,timestamp这样的顺序,如果按 appid,package,noncestr。。。。这样的顺序肯定会出现问题的。记住啦,参数名一定要按ASCII码顺序也就是按abcdefg….顺序
第二 在stringA后面拼接key时,key不是应用的appKey,记住啦,去微信商户平台—>账户设置—–>API安全—->密钥设置除去找key.
第三,用微信demo里面自带的MD5加密算法,将刚才获取到的字符串拼接进行加密。ok,到此sign的获取结束。
支付回调注意事项
要把微信demo里面的WXPayEntryActivity copy到自己的项目中,并且包名一定要带wxapi[code]package com.axaj.axaj_android.wxapi; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import com.axaj.axaj_android.R; import com.axaj.axaj_android.constants.Constants; import com.axaj.axaj_android.utils.TipUtils; import com.axaj.axaj_android.utils.lg.LgUtil; import com.tencent.mm.sdk.constants.ConstantsAPI; import com.tencent.mm.sdk.modelbase.BaseReq; import com.tencent.mm.sdk.modelbase.BaseResp; import com.tencent.mm.sdk.openapi.IWXAPI; import com.tencent.mm.sdk.openapi.IWXAPIEventHandler; import com.tencent.mm.sdk.openapi.WXAPIFactory; public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler { private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity"; private IWXAPI api; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pay_weixin_result); api = WXAPIFactory.createWXAPI(this, Constants.WEIXIN_AppId); api.handleIntent(getIntent(), this); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); api.handleIntent(intent, this); } @Override public void onReq(BaseReq req) { } @Override public void onResp(BaseResp resp) { LgUtil.e("onPayFinish, errCode = " + resp.errCode); if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) { TipUtils.showToast(this,getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode))); // AlertDialog.Builder builder = new AlertDialog.Builder(this); // builder.setTitle("提示"); // builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode))); // builder.show(); } }
最后,还要在AndroidManifest文件里面写上下面这个
[code] <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="wx7cf44403b56cc1a1" /> </intent-filter>
记住上面说的这些,微信支付就可以几分钟搞定了吧。。。。
相关文章推荐
- 微信支付错误两个问题的解决:curl出错,错误码:60
- 王学岗ViewPager——仿微信版(一)
- 微信企业号开发(四)-管理部门,增删改查
- audio 自动播放 iPhone微信客户端
- Android-黑科技-微信抢红包必备软件
- 微信公众号变现方式
- 微信生态圈的发展分析
- 微信开放平台全网发布61009错误处理
- 【Android实战】移动支付(微信、支付宝、银联)集成
- 从 0 到 1:微信后台系统的演进之路
- 微信开发中的cdta
- iOS 集成微信开放平台 sdk 编译不过
- perl 微信取自己的ID
- Android微信支付步骤简述
- 红包快手-秒抢微信红包
- ios开发_微信支付
- 微信公众号变现方式
- iOS 微信 音频 视频自动播放
- 微信好友检测
- Java抢红包小程序