1.第一次使用支付寶連sdk和文檔都找不到,可憐如我.
先放文檔地址:https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.9UY7yk&treeId=59&articleId=103675&docType=1
再放SDK和demo下載地址:https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1
2.有了上面兩個鏈接,支付寶支付基本就沒有什么問題了.下面說下我在集成工程中遇到的坑以及注意的問題.
從集成順序開始說起:
第一步:先簽約這個看文檔,準備資料,一般都能通過.https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.kRnLNb&treeId=58&articleId=103542&docType=1
第二步:上傳公鑰,https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.T86ZOt&treeId=115&articleId=103242&docType=1 這里有生成公鑰說明
這里有個坑,我之前上傳過一次,要修改公鑰.有兩個地址,這里就不說了,在2016年以后那個地址就有問題了,這里上傳新的地址:
https://openhome.alipay.com/platform/keyManage.htm
點擊修改RSA就可以了.
生成的私鑰就是在app內部使用的private key.這個一般要放在服務器端.
3.我開始的時候都不知道上傳的參數有什么意思,要上傳什么,這是要傳遞的參數說明:
https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.oAcwCa&treeId=59&articleId=103663&docType=1
4.還有如何判斷是否交易成功?這里是客戶端返回碼說明
https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.v32duH&treeId=59&articleId=103671&docType=1
5.客戶端要通知服務器,設置這個notify_url 參數的url值就好了,交易成功后,支付寶會發送post請求到你設置的url.
6.app端要解析支付寶返回的數據.會有一個result 字符串,
里面有很多信息,但并不是由json組成.這里有個方法能幫忙獲得返回的字符串中的每個字段的信息
result = "partner="2088911889384278"&seller_id="whydjnsj@sina.com"&out_trade_no="4KZCJFIL54V8R8J"&subject="ceshi"&body="ha"&total_fee="0.01"¬ify_url="http://www.xxx.com"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&show_url="m.alipay.com"&success="true"&sign_type="RSA"&sign="NSJwi804vI7wz8fcCBslckCqV/Aw1cjKbl4pJ94b7SF1myBWMmJIX5OJQe5e3s3SBBAu+3HwGrJ+7DTHuaItv35fpWX4xdq+zD4WVBRlziRz1ic2HgiihVllgQIWQkQBk0Gt2sKXI9MVs32eZd0IbeZhB+k/lojEKHvyQ6iHdu0="";
NSString *str = resultDic[@"result"];
NSArray *arrar = [str componentsSeparatedByString:@"&"];
for (NSString *str in arrar) {
// NSLog(@"%@",str);
NSString *newstr = [str stringByReplacingOccurrencesOfString:@"\"" withString:@""];
NSArray *newArray = [newstr componentsSeparatedByString:@"="];
for (int i = 0;i<newArray.count;i++) {
NSString *one_str = newArray[i];
if ([one_str isEqualToString:@"success"]) {
success = [newArray[i+1] boolValue];
}
if ([one_str isEqualToString:@"out_trade_no"]) {
out_trade_no = newArray[i+1];
}
}
}