支付宝,微信支付方式集成
支付宝集成对于一些刚出来的同学来说确实很头疼,因为没有公司的pid,也没有办法测试,但其实只要接触你就
会发现,真的是很容易,有个朋友写了篇博客,我感觉是已经很详细了这里直接给出地址: 支付宝集成步骤
接下来介绍一下微信支付的集成:
如果你去看微信支付的官方文档的话,会发现,很多坑,很多东西不明白什么意思,我们一点一点来:
1.首先,你要去微信开放平台去注册应用,审核通过后会生成一个APPID,在【开放平台】中的栏目【管理中心 /
修改应用 / 修改开发信息】里面设置应用签名和应用包名,其中的应用签名需要我们去下载一个签名工具,在手
机或者模拟器上运行后在输入框输入包名,然后就可以生成相应的签名
2.下载jar包导入工程:下载地址如下: sdk下载地址
3.注册APPID
商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:
final IWXAPI api = WXAPIFactory.createWXAPI(context, null);
// 将该app注册到微信
api.registerApp(“这里填APPID”);
4.以下是吊起微信支付的关键代码:
PayReq request = new PayReq();
request.appId = "wxd930ea5d5a258f4f";
request.partnerId = "1900000109";
request.prepayId= "1101000000140415649af9fc314aa427",;
request.packageValue = "Sign=WXPay";
request.nonceStr= "1101000000140429eb40476f8896f4c9";
request.timeStamp= "1398746574";
request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";
api.sendReq(req);
可能许多人会迷惑数据都是啥意思,其实不用去管,这些几乎都是服务端直接返回的字段,但那个sign需要我们自己去做一下二次签名
private String signNum(String mchKey,String partnerId, String prepayId, String packageValue, String nonceStr, String timeStamp) {
String stringA =
"appid=" + Constants.APP_ID
+ "&noncestr=" + nonceStr
+ "&package=" + packageValue
+ "&partnerid=" + partnerId
+ "&prepayid=" + prepayId
+ "×tamp=" + timeStamp;
//微信key 格式这这样的 abcdl562asjlfd452dkadf1asdldfpd4
//微信key的路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->**设置
//这里key是后台给我们的,当然也可以写死
String stringSignTemp = stringA + "&key=" + mchKey;
return MD5.getMessageDigest(stringSignTemp.getBytes()).toUpperCase();
}
5.这可能是最难的一步,因为文档给的太不清晰了,其实意思就是支付结果的回调只能写到特定类
(WXPayEntryActivity)里,而这个类又只能写在特定包(wxapi)下,而这个包又必须在指定路径下(根路径,也就是
applicationId “com.boju.bobo.boboproject”中的com.boju.bobo.boboproject下,微信的分享和三方登录
的回调也是这么做的),这下都做好了,就只要在类里做操作就好了,例子如下:
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
private IWXAPI api;
private static final String APP_ID = "your app id";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pay_result);
api = WXAPIFactory.createWXAPI(this, APP_ID);
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) {
// 支付结果码
}
}
恩,目前就这么多吧,可能会有不对或者不足的地方,希望大家指出,我后期会做修改
上一篇: Go秒爬博客园100页新闻