【支付宝支付接口】关于手机网页调用支付宝接口的问题。求助

Fire 射手 2015-09-02 10:02:43
我是只手机网页进行支付宝支付,
正常的电脑端网页流程是:点击支付,跳到支付宝页面,完成之后,然后会自动返回到我设置的回调页面,我根据返回的数据,来判断是否支付成功,然后我再处理我自己的订单。
而手机支付时,我遇到了一个问题,
正常手机流程:支付 - 支付成功 - 返回到浏览器网页 - 浏览器返回成功标识
目前的情况是,点击之后后,会调用出手机支付宝app,进行支付,一切正常,
但是此时,操作将会停留在支付宝APP上,
如果这时,用户不再回到手机浏览器网页了,浏览器将不会自动跳转到回跳页面,我也就没法取到成功标识。
请问,这样的情况,有没有什么变通的方式?
...全文
14009 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yabin0603 2017-11-10
  • 打赏
  • 举报
回复
异步解决不了啊,有没有别的方法?
qweqw0828 2017-08-07
  • 打赏
  • 举报
回复
public function notify_url(){
    	//支付宝异步通知返回数据演示
        $alipay_config = $this->alipay_config;

        if ($_POST) {
            $out_trade_no   = $_POST['out_trade_no'];      //商户订单号
            $trade_no       = $_POST['trade_no'];          //支付宝交易号
            $trade_status   = $_POST['trade_status'];      //交易状态
            $buyer_email    = $_POST['buyer_email'];       //买家支付宝帐号

            $parameter = array(
                "out_trade_no"  => $out_trade_no, //商户订单编号;
                "trade_no"      => $trade_no,     //支付宝交易号;
                "trade_status"  => $trade_status, //交易状态
                "buyer_email"   => $buyer_email,  //买家支付宝帐号;
            );

            if ($trade_status == 'TRADE_FINISHED' || $trade_status == 'TRADE_SUCCESS') {
                //业务逻辑代码

                echo "success";
            }
		}
			echo "fail";//验证失败

    }
最近我也碰过到不返回return_url的问题, 可以使用异步返回通知来解决这个问题
qq_36423445 2016-12-19
  • 打赏
  • 举报
回复
大佬,解决了吗?求教,我也是写到这里,停在app上面了,要切换后台才能在浏览器上面显示返回地址,求大佬告知
musicwind 2016-01-07
  • 打赏
  • 举报
回复
此前刚刚与支付宝接口完成了整合,有些经验可以分享一下: 1. 支付宝的接口里,包含有网页回调接口,以及 WEB 服务端通知接口。网页回调接口允许设置任意网址,比如 localhost等,均可以回调,但由于客户端的用户行为不可预知以及网络不一定通,所以最终充值业务不能依赖于这种方式。它只能作为UI回显的一种便利的通知机制。WEB服务端通知接口是我们应当真正依赖的。支付宝会按照设定的网址来触发服务端url,并且当服务端不可用时,会做一定策略的尝试。 2. 我目前的实现是,两个接口都予以支持并实现,通过订单状态来判断,如果订单是等待支付,则无论从哪里来回调,我均予以处理,若已经支付完成,则忽略之。这样的机制使得业务本身具有较好的容错性,同时又能确保用户体验。 仅供参考。
浪子回头8 2015-12-29
  • 打赏
  • 举报
回复
return_url页面里定义一个绝对路径页面,应该就可以返回到你的网页了!
小母牛坐火炕 2015-12-25
  • 打赏
  • 举报
回复
麻烦啊 最近也在写手机web支付调用支付宝app 是怎么玩的啊 qq:469964564
wu201041301213 2015-11-13
  • 打赏
  • 举报
回复
你的APP 有没有后台服务器啊?我刚做完支付宝支付的,判断是否支付成功用服务器后台的异步通知来判断,这样到账信息可能会有点延迟,但是不会出现你那样无法判断的!!!
pingy01 2015-11-12
  • 打赏
  • 举报
回复
解决没有? 我也碰到类似问题, 分享一下经验吧
trade_create_by_buyer-CSHARP-UTF-8 │ ├app_code ┈┈┈┈┈┈┈┈┈┈类文件夹 │ │ │ ├AlipayConfig.cs┈┈┈┈┈基础配置类文件 │ │ │ ├AlipayCore.cs┈┈┈┈┈┈支付宝接口公用函数类文件 │ │ │ ├AlipayNotify.cs┈┈┈┈┈支付宝通知处理类文件 │ │ │ ├AlipaySubmit.cs┈┈┈┈┈支付宝接口请求提交类文件 │ │ │ └MD5.cs ┈┈┈┈┈┈┈┈┈MD5类库 │ ├log┈┈┈┈┈┈┈┈┈┈┈┈┈日志文件夹 │ ├default.aspx ┈┈┈┈┈┈┈┈支付宝接口入口文件 ├default.aspx.cs┈┈┈┈┈┈┈支付宝接口入口文件 │ ├notify_url.aspx┈┈┈┈┈┈┈服务器异步通知页面文件 ├notify_url.aspx.cs ┈┈┈┈┈服务器异步通知页面文件 │ ├return_url.aspx┈┈┈┈┈┈┈页面跳转同步通知文件 ├return_url.aspx.cs ┈┈┈┈┈页面跳转同步通知文件 │ ├Web.Config ┈┈┈┈┈┈┈┈┈配置文件(集成时删除) │ └readme.txt ┈┈┈┈┈┈┈┈┈使用说明文本 ※注意※ 需要配置的文件是: alipay_config.cs default.aspx default.aspx.csreturn_url.aspx return_url.aspx.cs notify_url.aspx notify_url.aspx.cs统一命名空间为:namespace Com.Alipiay ───────── 类文件函数结构 ───────── AlipayCore.cs public static Dictionary ParaFilter(SortedDictionary dicArrayPre) 功能:除去数组中的空值和签名参数并以字母a到z的顺序排序 输入:SortedDictionary dicArrayPre 过滤前的参数组 输出:Dictionary 去掉空值与签名参数后的新签名参数组 public static string CreateLinkString(Dictionary dicArray) 功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 输入:Dictionary dicArray 需要拼接的数组 输出:string 拼接完成以后的字符串 public static string CreateLinkStringUrlencode(Dictionary dicArray, Encoding code) 功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对参数值做urlencode 输入:Dictionary dicArray 需要拼接的数组 Encoding code 字符编码 输出:string 拼接完成以后的字符串 public static void log_result(string sPath, string sWord) 功能:写日志,方便测试(看网站需求,也可以改成存入数据库) 输入:string sPath 日志的本地绝对路径 string sWord 要写入日志里的文本内容 public static string GetAbstractToMD5(Stream sFile) 功能:获取文件的md5摘要 输入:Stream sFile 文件流 输出:string MD5摘要结果 public static string GetAbstractToMD5(byte[] dataFile) 功能:获取文件的md5摘要 输入:byte[] dataFile 文件流 输出:string MD5摘要结果 ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉ MD5.cs public static string Sign(string prestr, string key, string _input_charset) 功能:签名字符串 输入:string prestr 需要签名的字符串 string key 密钥 string _input_charset 编码格式 输出:string 签名结果 public static bool Verify(string prestr, string sign, string key, string _input_charset) 功能:验证签名 输入:string prestr 需要签名的字符串 string sign 签名结果 string key 密钥 string _input_charset 编码格式 输出:string 验证结果 ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉ AlipayNotify.cs public Notify() 功能:构造函数 从配置文件中初始化变量 public bool Verify(SortedDictionary inputPara, string notify_id, string sign) 功能:验证消息是否是支付宝发出的合法消息 输入:SortedDictionary inputPara 通知返回参数数组 string notify_id 通知验证ID string sign 支付宝生成的签名结果 输出:bool 验证结果 private string GetPreSignStr(SortedDictionary inputPara) 功能:获取待签名字符串(调试用) 输入:SortedDictionary inputPara 通知返回参数数组 输出:string 待签名字符串 private bool GetSignVeryfy(SortedDictionary inputPara, string sign) 功能:获取返回回来的待签名数组签名后结果 输入:SortedDictionary inputPara 通知返回参数数组 string sign 支付宝生成的签名结果 输出:bool 签名验证结果 private string GetResponseTxt(string notify_id) 功能:获取是否是支付宝服务器发来的请求的验证结果 输入:string notify_id 通知验证ID 输出:string 验证结果 private string Get_Http(string strUrl, int timeout) 功能:获取远程服务器ATN结果 输入:string strUrl 指定URL路径地址 int timeout 超时时间设置 输出:string 服务器ATN结果字符串 ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉ AlipaySubmit.cs private static string BuildRequestMysign(Dictionary sPara) 功能:生成签名结果 输入:Dictionary sPara 要签名的数组 输出:string 签名结果字符串 private static Dictionary BuildRequestPara(SortedDictionary sParaTemp) 功能:生成要请求给支付宝的参数数组 输入:SortedDictionary sParaTemp 请求前的参数数组 输出:Dictionary 要请求的参数数组 private static string BuildRequestParaToString(SortedDictionary sParaTemp, Encoding code) 功能:生成要请求给支付宝的参数数组 输入:SortedDictionary sParaTemp 请求前的参数数组 Encoding code 字符编码 输出:string 要请求的参数数组字符串 public static string BuildRequest(SortedDictionary sParaTemp, string strMethod, string strButtonValue) 功能:建立请求,以表单HTML形式构造(默认) 输入:SortedDictionary sParaTemp 请求参数数组 string strMethod 提交方式。两个值可选:post、get string strButtonValue 确认按钮显示文字 输出:string 提交表单HTML文本 public static string BuildRequest(SortedDictionary sParaTemp) 功能:建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果 输入:SortedDictionary sParaTemp 请求参数数组 输出:string 支付宝处理结果 public static string BuildRequest(SortedDictionary sParaTemp, string strMethod, string fileName, byte[] data, string contentType, int lengthFile) 功能:建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果 输入:SortedDictionary sParaTemp 请求参数数组 string strMethod 提交方式。两个值可选:post、get string fileName 文件绝对路径 byte[] data 文件数据 string contentType 文件内容类型 int lengthFile 文件长度 输出:string 支付宝处理结果 public static string Query_timestamp() 功能:用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数 输出:string 时间戳字符串 ────────── 出现问题求助方法 ────────── 如果在集成支付宝接口时,有疑问或出现问题,可使用下面的链接,提交申请。 https://b.alipay.com/support/helperApply.htm?action=supportHome 我们会有专门的技术支持人员为您处理

790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧