ipaynow

来自于:开发者立即使用

-

generatePresignMessage doSignature pay

概述

ipaynow(现在支付)封装了支付宝、微信、银联、点卡充值卡、百度支付等多个渠道的支付接口。使用此模块可轻松实现各个渠道的支付功能。

使用之前需要先到ipaynow注册,并根据技术文档部署 Server SDK。 需要参考聚合支付SDK中后台接口文档,开发后台接口使用聚合支付秘钥对交易数据进行签名。

不能同时添加的模块:aliPay, pingpp, wx, weiXin, wxPay

使用此模块之前需先配置config文件的Feature,方法如下

  1. 名称:ipaynow
  2. 参数:urlScheme
  3. 描述:配置微信专用的URL Scheme,使得本应用可以启动微信客户端,并与之交换数据,同时可以从支付宝客户端(微信暂时不能自动返回)返回到本应用。

配置示例:

  1. <feature name="ipaynow">
  2. <param name="urlScheme" value="wxd0d84bbf23b4a0e4"/>
  3. </feature>

字段描述:

  1. 1.param-urlScheme:声明此字段为URL Scheme类型

generatePresignMessage

获取待签名字符串

generatePresignMessage({params}, callback(ret, err))

params

appId:

  • 类型:字符串
  • 默认值:无
  • 描述:商家从ipaynow申请的商户应用唯一标识,不能为空

mhtCharset:

  • 类型:字符串
  • 默认值:无
  • 描述:商户字符编码,定值UTF-8,不能为空

mhtCurrencyType:

  • 类型:字符串
  • 默认值:无
  • 描述:商户订单币种类型,156为人民币,不能为空

mhtOrderAmt:

  • 类型:字符串
  • 默认值:无
  • 描述:商户订单交易金额,单位为分,不能为空

mhtOrderDetail:

  • 类型:字符串
  • 默认值:无
  • 描述:商户订单详情,不能为空

mhtOrderName:

  • 类型:字符串
  • 默认值:无
  • 描述:商户商品名称,不能为空

mhtOrderNo:

  • 类型:字符串
  • 默认值:无
  • 描述:商户订单号,不能为空

mhtorderStartTime:

  • 类型:字符串
  • 默认值:无
  • 描述:商户订单开始时间,yyyyMMddHHmmss,不能为空

mhtOrderType:

  • 类型:字符串
  • 默认值:无
  • 描述:商户交易类型,01为普通消费,不能为空

notifyUrl:

  • 类型:字符串
  • 默认值:无
  • 描述:商户后台通知URL,不能为空

consumerId:

  • 类型:字符串
  • 默认值:无
  • 描述:客户ID,可以为空

consumerName:

  • 类型:字符串
  • 默认值:无
  • 描述:客户名称,可以为空

mhtOrderTimeOut:

  • 类型:字符串
  • 默认值:无
  • 描述:商户订单超时时间60~3600(秒),默认3600,可以为空

mhtReserved:

  • 类型:字符串
  • 默认值:无
  • 描述:商户保留域 ,不能为空

payChannelType:

  • 类型:字符串
  • 默认值:无
  • 描述:渠道类型,下列中的一个值,银联支付:11,支付宝支付:12,微信支付:13,点卡支付:16,充值卡支付:19,百度支付:50,为空时是聚合支付

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

  1. {
  2. result: // success或fail
  3. preSignStr: //待签名字符串(url编码)
  4. msg: //当result为fail时出现该字段,说明错误原因
  5. }

err:

  • 类型:JSON 对象

内部字段:

  1. {
  2. msg:”” //错误描述
  3. }

示例代码

  1. var da = (new Date()).format("yyyyMMddHHmmss");
  2. var demo = api.require("ipaynow");
  3. var param = {
  4. appId: "1408709961320306",
  5. mhtCharset: "UTF-8",
  6. mhtCurrencyType: "156",
  7. mhtOrderAmt: "10",
  8. mhtOrderDetail: "关于订单验证接口的测试",
  9. mhtOrderName: "iOS插件测试用例",
  10. mhtOrderNo: da,
  11. mhtorderStartTime: da,
  12. mhtOrderType: "01",
  13. notifyUrl: "http://localhost:10802/"
  14. };
  15. demo.generatePresignMessage(param, function(ret, err) {
  16. alert(ret.originStr);
  17. });

补充说明

方法输出样例:

  1. {"result":"success","preSignStr":"appId%3D1408709961320306%26mhtCharset%3DUTF-8%26mhtCurrencyType%3D156%26mhtOrderAmt%3D10%26mhtOrderDetail%3D%E5%85%B3%E4%BA%8E%E8%AE%A2%E5%8D%95%E9%AA%8C%E8%AF%81%E6%8E%A5%E5%8F%A3%E7%9A%84%E6%B5%8B%E8%AF%95%26mhtOrderName%3DIOS%E6%8F%92%E4%BB%B6%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%26mhtOrderNo%3D20150304114640%26mhtOrderStartTime%3D20150304114640%26mhtOrderType%3D01%26notifyUrl%3Dhttp%3A%2F%2Flocalhost%3A10802%2F"}

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

doSignature

对订单信息进行签名,商户也可选择自行处理签名不调用此方法,只须pay方法中的data参数满足条件即可。 该方法需要与商户后台签名接口配合使用,商户服务器应获取paydata字段中的内容,对内容做url解码,并对解码后的内容进行签名处理。 签名公式为MD5(服务器接收的解码内容+MD5(聚合支付平台发放的APP秘钥));

doSignature({params}, callback(ret, err))

params

preSignStr:

  • 类型:字符串
  • 默认值:无
  • 描述:待签名字符串,不能为空

post_content:

  • 类型:字符串
  • 默认值:无
  • 描述:后台签名请求报文,不能为空

post_url:

  • 类型:字符串
  • 默认值:无
  • 描述:后台签名url,不能为空

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

  1. {
  2. result //签名结果状态,值为success或fail
  3. preSignStr: //待签名字符串
  4. resultStr: //后台签名结果字符串
  5. msg: //当为fail时出现该字段,说明错误原因
  6. }

err:

  • 类型:JSON 对象

内部字段:

  1. {
  2. msg: "" //错误描述
  3. }

示例代码

  1. var originStr = ret.originStr; //ret为上一步执行结果
  2. var url = "http://yuyangnews.ipaynow.cn/ZyPluginPaymentTest_PAY/api/pay2.php";
  3. var demo = api.require('ipaynow');
  4. var param = {
  5. originStr: originStr,
  6. presignStr: "paydata=" + originStr,
  7. url: url
  8. };
  9. demo.doSignature(param, function(ret, err) {
  10. alert(ret.resultStr);
  11. });

补充说明

方法输出样例:

  1. {"result":"success","resultStr":"mhtSignature=9e5ca89f18b872278fd18e9838d91da2&mhtSignType=MD5","preSignStr":"appId%3D1408709961320306%26mhtCharset%3DUTF-8%26mhtCurrencyType%3D156%26mhtOrderAmt%3D10%26mhtOrderDetail%3D%E5%85%B3%E4%BA%8E%E8%AE%A2%E5%8D%95%E9%AA%8C%E8%AF%81%E6%8E%A5%E5%8F%A3%E7%9A%84%E6%B5%8B%E8%AF%95%26mhtOrderName%3DIOS%E6%8F%92%E4%BB%B6%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%26mhtOrderNo%3D20150304114640%26mhtOrderStartTime%3D20150304114640%26mhtOrderType%3D01%26notifyUrl%3Dhttp%3A%2F%2Flocalhost%3A10802%2F"}

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

pay

支付订单

pay({params}, callback(ret, err))

params

data:

  • 类型:字符串
  • 默认值:无
  • 描述:商户的订单信息,key=“value”形式,以&连接,(待签名串&mhtSignType=MD5&mhtSignature=签名串),不能为空

urlSchema:

  • 类型:字符串
  • 默认值:无
  • 描述:商户app的urlSchema,和config文件中的urlScheme相同,不能为空

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

  1. {
  2. result: //返回的支付结果, [success]支付成功、[fail]支付失败、[cancel]支付取消;
  3. }

err:

  • 类型:JSON 对象

内部字段:

  1. {
  2. msg:"" //错误描述
  3. }

示例代码

  1. var paydata = ret.originStr + "&" + ret.resultStr; //ret为上一步执行结果
  2. var demo = api.require('ipaynow');
  3. var param = {
  4. data: paydata,
  5. urlSchema: "UZApp"
  6. };
  7. demo.pay(param, function(ret, err) {
  8. alert(ret.result);
  9. });

补充说明

方法输出样例:

  1. {"result":"[success]支付成功"}

可用性

iOS系统,Android系统 可提供的1.0.0及更高版本