支付,地图,分享iOS 开发每天分享优质文章搬砖

iOS支付宝和微信支付完成后返回结果的处理

2017-08-20  本文已影响693人  索努木

一、支付宝返回结果的处理:

  1. 支付宝支付成功后会返回一个字典,类似于下面的格式(对我们有用的是key值result对应的一串字符串,我们需要拿到里面的值做相应的操作):
{ 
memo = "";
result = "partner=\"2088101568358171\"&seller_id=\"xxx@alipay.com\"&out_trade_no=\"0819145412-6177\"&subject=\"测试\"&body=\"测试测试\"&total_fee=\"0.01\"&notify_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";
}
  1. 开始解析(转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类型,就可以随意使用了。

二、微信支付返回结果的处理:

  1. 微信支付的返回结果就跟支付宝不一样了,它是一种类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>
  1. 开始解析(转xml格式为NSDictionary类型)
NSString *orderString = [response objectForKey:@"orderinfo"];

接下来就是对于xml的解析,解析方法在这里---github地址,它是基于SAX模式的,对NSXMLParser的二次封装,可以参考学习下。

上一篇下一篇

猜你喜欢

热点阅读