webview 唤起支付宝宝支付返回的参数获取uerid是哪个

18160人阅读
android(22)
支付宝开发流程:
1、在支付宝申请一个账号并开通开发者功能和移动支付的功能。
支付宝地址:/login/index.htm?goto=https%3A%2F%%2Fdeveloper%2FisvApply.htm%3Fflag%3Daop
支付宝移动支付地址:/order/productDetail.htm?productId=1993
2、上面步骤完成后下载支付宝集成文档和SDK。
RSA密钥生成命令
生成RSA私钥
openssl&genrsa -out rsa_private_key.pem 1024
生成RSA公钥
openssl&rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
将RSA私钥转换成PKCS8格式
openssl&pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
打开openssl按照上面的命令生成个密钥rsa_private_key.pem 和 rsa_public_key.pem。
根据rsa_private_key.pem 和 rsa_public_key.pem生成pkcs8密钥。
4、然后把rsa_public_key.pem里的内容组装成一个字符串(去掉空格、换行、-----BEGIN PUBLIC KEY-----、-----END PUBLIC KEY-----),复制到支付宝网站上生成支付宝公钥。
5、在工程里的androidManifest.xml里添加申明
& &activity
& & & & & & android:name=&com.alipay.sdk.app.H5PayActivity&
& & & & & & android:configChanges=&orientation|keyboardHidden|navigation&
& & & & & & android:exported=&false&
& & & & & & android:screenOrientation=&behind&
& & & & & & android:windowSoftInputMode=&adjustResize|stateHidden& &
& & & & &/activity&
&&activity
& & & & & & android:name=&com.alipay.sdk.pay.demo.PayDemoActivity&
& & & & & & android:icon=&@drawable/msp_icon&
& & & & & & android:label=&@string/app_name&&
& & & & & & &intent-filter&
& & & & & & & & &action android:name=&android.intent.action.MAIN& /&
& & & & & & & & &category android:name=&android.intent.category.LAUNCHER& /&
& & & & & & &/intent-filter&
& & & & &/activity& &
6、把alipaySDK-.jar拷贝到lib下,把alipay下的Base64.java和PayResult.java SignUtils,java拷贝到工程项目里。
7、首先获得订单信息getOrderInfo(),然后对订单用pkcs8密钥做RSA签名sign(getOrderInfo()),
生成订单数据String payInfo = getOrderInfo() + &&sign=\&& + sign(getOrderInfo()) + &\&&&
+ getSignType(); //getSignType为获取订单的签名方式,默认为&sign_type=\&RSA\&&。
public String getOrderInfo(String subject, String body, String price) {
// 签约合作者身份ID
String orderInfo = &partner=& + &\&& + PARTNER + &\&&;
// 签约卖家支付宝账号
orderInfo += &&seller_id=& + &\&& + SELLER + &\&&;
// 商户网站唯一订单号
orderInfo += &&out_trade_no=& + &\&& + getOutTradeNo() + &\&&;
// 商品名称
orderInfo += &&subject=& + &\&& + subject + &\&&;
// 商品详情
orderInfo += &&body=& + &\&& + body + &\&&;
// 商品金额
orderInfo += &&total_fee=& + &\&& + price + &\&&;
// 服务器异步通知页面路径
orderInfo += &&notify_url=& + &\&& + &http://notify.msp.hk/notify.htm&
+ &\&&;
// 服务接口名称, 固定值
orderInfo += &&service=\&mobile.securitypay.pay\&&;
// 支付类型, 固定值
orderInfo += &&payment_type=\&1\&&;
// 参数编码, 固定值
orderInfo += &&_input_charset=\&utf-8\&&;
// 设置未付款交易的超时时间
// 默认30分钟,一旦超时,该笔交易就会自动被关闭。
// 取值范围:1m~15d。
// m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。
// 该参数数值不接受小数点,如1.5h,可转换为90m。
orderInfo += &&it_b_pay=\&30m\&&;
// extern_token为经过快登授权获取到的alipay_open_id,带上此参数用户将使用授权的账户进行支付
// orderInfo += &&extern_token=& + &\&& + extern_token + &\&&;
// 支付宝处理完请求后,当前页面跳转到商户指定页面的路径,可空
orderInfo += &&return_url=\&\&&;
// 调用银行卡支付,需配置此参数,参与签名, 固定值 (需要签约《无线银行卡快捷支付》才能使用)
// orderInfo += &&paymethod=\&expressGateway\&&;
return orderI
//对订单进行签名
public String sign(String content) {
return SignUtils.sign(content, RSA_PRIVATE);
8、在新线程中调用支付接口
Runnable payRunnable = new Runnable() {
public void run() {
// 构造PayTask 对象
PayTask alipay = new PayTask(this);
// 调用支付接口,获取支付结果
String result = alipay.pay(payInfo);
Message msg = new Message();
msg.what = SDK_PAY_FLAG;
mHandler.sendMessage(msg);
// 必须异步调用
Thread payThread = new Thread(payRunnable);
payThread.start();
&private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case SDK_PAY_FLAG: {
PayResult payResult = new PayResult((String) msg.obj);
// 支付宝返回此次支付结果及加签,建议对支付宝签名信息拿签约时支付宝提供的公钥做验签
String resultInfo = payResult.getResult();
String resultStatus = payResult.getResultStatus();
// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档
if (TextUtils.equals(resultStatus, &9000&)) {
Toast.makeText(this, &支付成功&,
Toast.LENGTH_SHORT).show();
// 判断resultStatus 为非“9000”则代表可能支付失败
// “8000”代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
if (TextUtils.equals(resultStatus, &8000&)) {
Toast.makeText(this, &支付结果确认中&,
Toast.LENGTH_SHORT).show();
// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误
Toast.makeText(this, &支付失败&,
Toast.LENGTH_SHORT).show();
case SDK_CHECK_FLAG: {
Toast.makeText(this, &检查结果为:& + msg.obj,
Toast.LENGTH_SHORT).show();
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:87179次
积分:1074
积分:1074
排名:千里之外
原创:30篇
评论:20条
微信公众号: qq交流群:
(1)(1)(1)(2)(1)(1)(1)(2)(3)(2)(3)(2)(1)(4)(6)(6)微信支付通知返回参数
你好,想跟你请教个问题:&
您好,不好意思得麻烦您一下,回调通知api需要返回一个xml的SUCCESS才会停止调用回调接口。我是这么做的
&resXml&=&"&xml&"&+&"&return_code&&![CDATA[SUCCESS]]&&/return_code&"&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&+&"&return_msg&&![CDATA[OK]]&&/return_msg&"&+&"&/xml&&";&&
&&response.getWriter().write(resXml);
结果还是一直在调用通知接口。
有段时间没搞这个了。现在是手机,不方便看文档,但是我猜这里边至少缺个参数啊,应该还有个id码的吧,告知具体是哪个success了。建议还是打开文档相信看看
支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。 文档里确实没有提到需要返回id码
微信点餐系统v3.0+支付宝手机网站支付视频教程
课程观看地址:
课程出自学途无忧网:
课程目录:
课时1:1.1开篇&
课时2:1.2微信门店
课时3:1.3微信链接WIFI文档解读
课时4:1.4微信连WIFI
课时5:2.1建项目
课时6:2.2数据结构&
课时7:2.3菜单
课时8:2.4请求点餐单
课时9:2.5实现点餐功能按钮
课时10:2.6集成点餐单&
课时11:3.1产品介绍&
课时12:3.2沙箱环境
课时13:3.3秘钥
课时14:3.4支付宝订单&
课时15:3.5支付结果异步通知&
课时16:3.6查询订单
课时17:3.7项目总结iOS&支付宝&SDK&支付完毕后返回APP的方法
刚刚把支付宝的SDK集成到我的APP中,支付正常,但是到最后无法返回APP。停留在下图的界面。
原来这里返回APP的方法是使用APP的url scheme.
NSString *appScheme = @"YourAppProductName";
&[AlixLibService payOrder:orderString AndScheme:appScheme seletor:_result target:self];
我把这里写成自己项目的名称,再次运行,发现支付后还是无法返回。原来是需要在info.plist文件中添加一个键值,如下图:
添加完上述键值后,再次运行,支付完毕后成功返回APP。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。1115人阅读
一、return_url
1、同步返回接口,作为参数传递给支付宝
2、用户付款成功后,从支付宝跳转到这个页面
3、在这个页面中加入相关业务处理,比如更新记录,标记付款成功信息。
4、需要对支付宝传递过来的签名进行认证。
5、用来展现成功付款信息给前台付款用户。
6、支付宝那边只返回一次。
7、由于用户在付款完成后,直接关闭付款页面,不跳转到return_url的页面,会导致return_url的相关业务处理不了。
二、notify_url
<span style="color:#、异步通知接口,作为参数传递给支付宝。
2、如果不传递,则不通知。
3、相关业务逻辑应该和return_url中相同。
4、返回字符串&success&或者&fail&,不能带有任何HTML信息。
5、付款成功后就通知一次,如果不成功,1分钟、3分钟、10分钟、半个小时。。。后再通知,直到返回success。
6、过期时间是48小时,如果48小时内都通知不成功,那么就不再通知。
三、notify_url 与 return_url使用说明
1、当从支付宝返回success时,在两者的业务逻辑的判断中,都需要判断是否已经处理,避免重复处理
2、如果不传递notify_url,支付宝付款成功,但是没有收到成功的返回信息率在20-30%,notify_url可以保证99.99%的通知成功率。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:13301次
排名:千里之外
原创:49篇
转载:10篇
(1)(5)(2)(8)(2)(24)(17)(1)2020人阅读
ecshop开发
支付宝接口的返回处理往往是很多人不理解和不易调试通的,现,介绍一下支付宝的返回处理机制:
1、支付宝的返回有两种:return 的客户端返回,notify的服务器通知返回。
支付完成后立刻返回到外部网站的客户端上,是可见的,返回机制:以GET的方式返回
返回信息包括提交给支付宝的订单信息,可根据这个返回信息做相应的操作显示给客户看。
notify_url:服务器的返回
服务器的通知返回是由支付宝的服务器发起,以POST的方式返回到合作伙伴的网站上。返回信息包括提交给支付宝的订单信息,在返回的文件中,需要输出success做为支付宝通知返回信息成功,若没有这个success的输出,那么支付宝的服务器会24小时内返回同样的返回消息,返回的时间频率会逐渐减弱,(1分钟、3分钟、5分钟、10分钟、15。。。。。。。。。。)
notify_url 页面中只能做对数据库的业务操作
建议:return_url和notify_url 可以都设置,前者做数据显示,后者做更新数据库
2、 注意的地方,每种返回都是有一个sign和mysign的验证,作用,验证参数是否有效和是否是支付宝发出的消息。还有一个交易状态的判断:trade_status 是判断交易状态是否成功,例如:
返回状态:
trade_status = &WAIT_BUYER_PAY&&&&&& 等待买家付款
trade_status = &WAIT_SELLER_SEND_GOODS&&&&&&& 买家付款,等待买家发货
trade_status = &WAIT_BUYER_CONFIRM_GOODS&&&&& 卖家付款,等待买家确认
rade_status = &TRADE_FINISHED& 交易完成
基本上会有以上几种重要的交易状体需要判断,还有一些详细:请以支付宝接口文档为主,当然不是每种接口都有这些交易状态,虚拟的即时到帐接口是不存在买卖双方确认的环节的。
service&&&&& =&& &create_direct_pay_by_user& 即时到帐接口的服务名称
service&&&&& =&& &trade_create_by_buyer&&&标准实务双接口服务名称
HAS_NO_PRIVILEGE 出现这个样的错误,请注意您说开通的接口权限是否是以上两种,或者在您集成的接口中是否有用您与支付宝签约后的ID和key
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:42395次
排名:千里之外
原创:34篇
(2)(4)(1)(4)(3)(1)(1)(6)(2)(1)(5)(8)(1)(3)

我要回帖

更多关于 webview 唤起支付宝 的文章

 

随机推荐