iOS支付宝和微信支付完成后返回结果的处理
2017-08-20 本文已影响693人
索努木
一、支付宝返回结果的处理:
- 支付宝支付成功后会返回一个字典,类似于下面的格式(对我们有用的是key值result对应的一串字符串,我们需要拿到里面的值做相应的操作):
{
memo = "";
result = "partner=\"2088101568358171\"&seller_id=\"xxx@alipay.com\"&out_trade_no=\"0819145412-6177\"&subject=\"测试\"&body=\"测试测试\"&total_fee=\"0.01\"¬ify_url=\"[http://notify.msp.hk/notify.htm](http://notify.msp.hk/notify.htm)\"&service=\"mobile.securitypay.pay\"&payment_type=\"1\"&_input_charset=\"utf-8\"&it_b_pay=\"30m\"&success=\"true\"&sign_type=\"RSA\"&sign=\"hkFZr+zE9499nuqDNLZEF7W75RFFPsly876QuRSeN8WMaUgcdR00IKy5ZyBJ4eldhoJ/2zghqrD4E2G2mNjs3aE+HCLiBXrPDNdLKCZgSOIqmv46TfPTEqopYfhs+o5fZzXxt34fwdrzN4mX6S13cr3UwmEV4L3Ffir/02RBVtU=\"";
resultStatus ="9000";
}
- 开始解析(转NSString为NSDictionary类型)
NSDictionary *returnDic = [self stringToDictionaryWithString:resultDic[@"result"]];
- (NSDictionary *)stringToDictionaryWithString:(NSString *)string {
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dict = nil;
if (!data) return nil;
dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
if (![dict isKindOfClass:[NSDictionary class]]) return nil;
return dict;
}
成功转化为NSDictionary类型,就可以随意使用了。
二、微信支付返回结果的处理:
- 微信支付的返回结果就跟支付宝不一样了,它是一种类xml格式的,类似于下面:
<xml>
<appid><![CDATA[wx2421b1c4370ec43b]]></appid>
<attach><![CDATA[支付测试]]></attach>
<bank_type><![CDATA[CFT]]></bank_type>
<fee_type><![CDATA[CNY]]></fee_type>
<is_subscribe><![CDATA[Y]]></is_subscribe>
<mch_id><![CDATA[10000100]]></mch_id>
<nonce_str><![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]></nonce_str>
<openid><![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]></openid>
<out_trade_no><![CDATA[1409811653]]></out_trade_no>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[B552ED6B279343CB493C5DD0D78AB241]]></sign>
<sub_mch_id><![CDATA[10000100]]></sub_mch_id>
<time_end><![CDATA[20140903131540]]></time_end>
<total_fee>1</total_fee>
<trade_type><![CDATA[JSAPI]]></trade_type>
<transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id>
</xml>
- 开始解析(转xml格式为NSDictionary类型)
NSString *orderString = [response objectForKey:@"orderinfo"];
接下来就是对于xml的解析,解析方法在这里---github地址,它是基于SAX模式的,对NSXMLParser的二次封装,可以参考学习下。