关于微信支付、支付宝支付以及获取签名的正确方法
2018-03-07 11:00
453 查看
关于微信支付、支付宝支付以及获取签名的正确方法
填写资料信息获取appid 注意事项
在微信支付开放平台上填写应用信息,获取appid时,注意获取到应用签名时,签名尽量要小写,并且不要加:,如图否则会出现小的问题,尽量和官方文档保持一致。
调起支付注意事项
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);//时间戳 以秒为单位,十位1
2
3
4
5
6
7
8
9
9
sign的获取 注意事项
获取 request.sign 时注意事项较多,android必须通过签名算法去生成这个sign1
2
2
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; }1
2
3
4
5
6
7
8
9
10
11
12
13
14
14
代码解释:第一 参数名必须按 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到自己的项目中,并且包名一定要带wxapipackage 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(); } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
58
最后,还要在AndroidManifest文件里面写上下面这个
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="wx7cf44403b56cc1a1" /> </intent-filter>1
2
3
4
5
6
7
7
记住上面说的这些,微信支付就可以几分钟搞定了吧。。。。
相关文章推荐
- 关于微信支付以及获取签名的正确方法
- 关于android studio 下获取签名文件SHA1的方法
- iOS 支付宝支付以及各种错误解决方法!!!
- 关于微信支付,支付宝支付与银联支付的异步消息状态
- Android 支付宝支付、微信支付、银联支付 整合第三方支付接入方法
- 关于微信支付支付宝支付申请须知
- php做微信支付和支付宝支付的方法
- Android微信支付获取二次签名Sign的方法
- 微信公众平台支付 一直提示签名认证失败,签名对比正确,却提示签名不正确,关于prepay_id造成签名验证不正确的问题
- Android中关于微信支付和支付宝支付
- 关于通过请求获取的验证码不正确的解决的破解方法
- 关于Android studio打包发布,以及Android签名的获取
- 获取微信沙箱秘钥有效期,沙箱验证签名失败,请确认沙箱签名key是否正确,通过getsignkey调用生成——微信支付沙箱开发6
- 微信支付升级,获取沙箱密钥失败,确认交易密钥是否正确解决方法
- 关于Yii2中微信支付或支付宝支付异步通知无效
- 区别对待 【找到问题发生的原因】 以及 【关于这个问题的 「正确可行」 的解决方法】
- 关于android微信支付 和 支付宝支付的集成
- 关于struct2获取jsp表单里的数据,以及隐藏传递给action的变量的方法
- 关于微信支付 支付宝支付价格精度问题
- 关于微信公众号支付获取用户openId的方法