程序员iOS 开发

微信支付问题

2015-11-10  本文已影响999人  仲子

1、设置URL Schemes

2、在AppDelegate里注册微信支付[WXApi registerApp:@"appid"];

3、调起微信支付

PayReq *request = [[[PayReq alloc] init] autorelease];

request.partnerId = @"10000100";

request.prepayId= @"1101000000140415649af9fc314aa427";

request.package = @"Sign=WXPay";

request.nonceStr= @"a462b76e7436e98e0ed6e13c64b4fd1c";

request.timeStamp= @"1397527777";

request.sign= @"582282D72DD2B03AD892830965F428CB16E7A256";

[WXApi sendReq:request];

在调起微信支付之前需要向服务器获取微信支付的相关参数,这些参数是服务器调用微信的统一下单API所得,问题出在服务器生成的签名错误,根据微信官方给出的iOS demo,整理下流程,供服务器校对:

1、预付单参数设置

Printing description of packageParams:

{

appid = wxbfe7bd3faa6e56d6;

body = "V3\U652f\U4ed8\U6d4b\U8bd5";

"device_info" = "APP-001";

"mch_id" = 1245634502;

"nonce_str" = 1024782077;

"notify_url" = "http://wxpay.weixin.qq.com/pub_v2/pay/notify.v2.php";

"out_trade_no" = 1436870256;

"spbill_create_ip" = "192.168.1.127";

"total_fee" = 1;

"trade_type" = APP;

}

2、生成prePayid

(1)获取package带参数的签名包

a、生成签名

参数

Printing description of dict:

{

appid = appid;

body = "V3\U652f\U4ed8\U6d4b\U8bd5";

"device_info" = "APP-001";

"mch_id" = 1245634502;

"nonce_str" = 1024782077;

"notify_url" = "http://wxpay.weixin.qq.com/pub_v2/pay/notify.v2.php";

"out_trade_no" = 1436870256;

"spbill_create_ip" = "192.168.1.127";

"total_fee" = 1;

"trade_type" = APP;

}

b、生成xml的package

结果

< xml>

< mch_id>1245634502

< out_trade_no>1436870256

< device_info>APP-001

< nonce_str>1024782077

< total_fee>1

< notify_url>http://wxpay.weixin.qq.com/pub_v2/pay/notify.v2.php

< spbill_create_ip>192.168.1.127

< body>V3支付测试

< appid>appid

< trade_type>APP

< sign>B220AF98FC3638EC1A5AD5C3808BB0F8

< /xml>

c、post向微信发起请求,参数为上边的xml

返回值:

< xml>

上一篇下一篇

猜你喜欢

热点阅读