iOS 微信支付

1.相關(guān)資料
支付SDK:https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=11_1
APP端開發(fā)步驟說明:https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_5
2.支付流程
步驟1:用戶在商戶APP中選擇商品,提交訂單,選擇微信支付。
步驟2:商戶后臺收到用戶支付單,調(diào)用微信支付統(tǒng)一下單接口。
步驟3:統(tǒng)一下單接口返回正常的prepay_id,再按簽名規(guī)范重新生成簽名后,將數(shù)據(jù)傳輸給APP。參與簽名的字段名為appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式為Sign=WXPay
步驟4:商戶APP調(diào)起微信支付。
步驟5:商戶后臺接收支付通知。
步驟6:商戶后臺查詢支付結(jié)果。
3.實際操作
(1)工程中拖入SDK,五個文件,其中read_me.text中是注意事項

784420-20160308201043022-1244809995.png

(2)導(dǎo)入框架,之前有l(wèi)ibc++.tbd沒導(dǎo)入,出現(xiàn)報錯,下文會提到

784420-20160308202413679-533818586.png

(3)添加白名單,直接把read.text中所添加的選項復(fù)制到info.plist文件中就行。其中info.plist以sourcecode的方式打開


C6581905-53F7-4234-9665-3C367F8233A0.png

(4)將AppId設(shè)置為URL Schemes.


7C749DAC-E024-4EDA-8228-5791FF50338C.png

配置完畢,就可以愉快地敲代碼了
(1)首先在Appdelegate中注冊AppId,導(dǎo)入#import "WXApiManager.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
//向微信注冊wxd930ea5d5a258f4f
 [WXApi registerApp:@"wxb4ba3c02aa476ea1" withDescription:@"demo 2.0"]; 
return YES;}
//9.0之前的方法,為了適配低版本 保留
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];}
//9.0后的方法
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{
    //這里判斷是否發(fā)起的請求為微信支付,如果是的話,用WXApi的方法調(diào)起微信客戶端的支付頁面(://pay 之前的那串字符串就是你的APPID,)
    return  [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}

(2)發(fā)起請求支付
在微信提供的demo中的WXApiRequestHandler.m文件中可以找到j(luò)umpToBizPay方法,核心內(nèi)容如下:

 //調(diào)起微信支付
                    PayReq* req             = [[[PayReq alloc] init]autorelease];
                    req.partnerId           = [dict objectForKey:@"partnerid"];
                    req.prepayId            = [dict objectForKey:@"prepayid"];
                    req.nonceStr            = [dict objectForKey:@"noncestr"];
                    req.timeStamp           = stamp.intValue;
                    req.package             = [dict objectForKey:@"package"];
                    req.sign                = [dict objectForKey:@"sign"];
                    [WXApi sendReq:req];

(3)支付結(jié)果返回到WXApiManager中的onResp方法下

switch (resp.errCode) { 
case WXSuccess: 
strMsg = @"支付結(jié)果:成功!"; 
NSLog(@"支付成功-PaySuccess,retcode = %d", resp.errCode); 
break; 
default: 
strMsg = [NSString stringWithFormat:@"支付結(jié)果:失敗!retcode = %d, retstr = %@", resp.errCode,resp.errStr]; NSLog(@"錯誤,retcode = %d, retstr = %@", resp.errCode,resp.errStr); 
break; 
}

以上為基本流程,一下是個人所出現(xiàn)的問題

4.支付問題
(1)未添加的frame

Undefined symbols for architecture x86_64:
  "operator delete[](void*)", referenced from:
      +[WeChatApiUtil EncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
      +[WeChatApiUtil NsDataEncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
      +[WeChatApiUtil DecodeWithBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
      +[WeChatApiUtil DecodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
  "operator new[](unsigned long)", referenced from:
      +[WeChatApiUtil EncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
      +[WeChatApiUtil NsDataEncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
      +[WeChatApiUtil DecodeWithBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
      +[WeChatApiUtil DecodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

解決方案:Build Phase ->link Binary with libraries 中 添加 libc++.tbd

(2)未修改bitcode


屏幕快照 2016-07-25 上午9.22.27.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容